1package web
2
3// Copyright (c) Microsoft and contributors.  All rights reserved.
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13//
14// See the License for the specific language governing permissions and
15// limitations under the License.
16//
17// Code generated by Microsoft (R) AutoRest Code Generator.
18// Changes may cause incorrect behavior and will be lost if the code is regenerated.
19
20import (
21	"context"
22	"encoding/json"
23	"github.com/Azure/go-autorest/autorest"
24	"github.com/Azure/go-autorest/autorest/azure"
25	"github.com/Azure/go-autorest/autorest/date"
26	"github.com/Azure/go-autorest/autorest/to"
27	"github.com/Azure/go-autorest/tracing"
28	"github.com/gofrs/uuid"
29	"io"
30	"net/http"
31)
32
33// The package's fully qualified name.
34const fqdn = "github.com/Azure/azure-sdk-for-go/services/web/mgmt/2020-06-01/web"
35
36// AbnormalTimePeriod class representing Abnormal Time Period identified in diagnosis
37type AbnormalTimePeriod struct {
38	// StartTime - Start time of the downtime
39	StartTime *date.Time `json:"startTime,omitempty"`
40	// EndTime - End time of the downtime
41	EndTime *date.Time `json:"endTime,omitempty"`
42	// Events - List of Possible Cause of downtime
43	Events *[]DetectorAbnormalTimePeriod `json:"events,omitempty"`
44	// Solutions - List of proposed solutions
45	Solutions *[]Solution `json:"solutions,omitempty"`
46}
47
48// Address address information for domain registration.
49type Address struct {
50	// Address1 - First line of an Address.
51	Address1 *string `json:"address1,omitempty"`
52	// Address2 - The second line of the Address. Optional.
53	Address2 *string `json:"address2,omitempty"`
54	// City - The city for the address.
55	City *string `json:"city,omitempty"`
56	// Country - The country for the address.
57	Country *string `json:"country,omitempty"`
58	// PostalCode - The postal code for the address.
59	PostalCode *string `json:"postalCode,omitempty"`
60	// State - The state or province for the address.
61	State *string `json:"state,omitempty"`
62}
63
64// AddressResponse describes main public IP address and any extra virtual IPs.
65type AddressResponse struct {
66	autorest.Response `json:"-"`
67	// AddressResponseProperties - AddressResponse resource specific properties
68	*AddressResponseProperties `json:"properties,omitempty"`
69	// ID - READ-ONLY; Resource Id.
70	ID *string `json:"id,omitempty"`
71	// Name - READ-ONLY; Resource Name.
72	Name *string `json:"name,omitempty"`
73	// Kind - Kind of resource.
74	Kind *string `json:"kind,omitempty"`
75	// Type - READ-ONLY; Resource type.
76	Type *string `json:"type,omitempty"`
77}
78
79// MarshalJSON is the custom marshaler for AddressResponse.
80func (ar AddressResponse) MarshalJSON() ([]byte, error) {
81	objectMap := make(map[string]interface{})
82	if ar.AddressResponseProperties != nil {
83		objectMap["properties"] = ar.AddressResponseProperties
84	}
85	if ar.Kind != nil {
86		objectMap["kind"] = ar.Kind
87	}
88	return json.Marshal(objectMap)
89}
90
91// UnmarshalJSON is the custom unmarshaler for AddressResponse struct.
92func (ar *AddressResponse) UnmarshalJSON(body []byte) error {
93	var m map[string]*json.RawMessage
94	err := json.Unmarshal(body, &m)
95	if err != nil {
96		return err
97	}
98	for k, v := range m {
99		switch k {
100		case "properties":
101			if v != nil {
102				var addressResponseProperties AddressResponseProperties
103				err = json.Unmarshal(*v, &addressResponseProperties)
104				if err != nil {
105					return err
106				}
107				ar.AddressResponseProperties = &addressResponseProperties
108			}
109		case "id":
110			if v != nil {
111				var ID string
112				err = json.Unmarshal(*v, &ID)
113				if err != nil {
114					return err
115				}
116				ar.ID = &ID
117			}
118		case "name":
119			if v != nil {
120				var name string
121				err = json.Unmarshal(*v, &name)
122				if err != nil {
123					return err
124				}
125				ar.Name = &name
126			}
127		case "kind":
128			if v != nil {
129				var kind string
130				err = json.Unmarshal(*v, &kind)
131				if err != nil {
132					return err
133				}
134				ar.Kind = &kind
135			}
136		case "type":
137			if v != nil {
138				var typeVar string
139				err = json.Unmarshal(*v, &typeVar)
140				if err != nil {
141					return err
142				}
143				ar.Type = &typeVar
144			}
145		}
146	}
147
148	return nil
149}
150
151// AddressResponseProperties addressResponse resource specific properties
152type AddressResponseProperties struct {
153	// ServiceIPAddress - Main public virtual IP.
154	ServiceIPAddress *string `json:"serviceIpAddress,omitempty"`
155	// InternalIPAddress - Virtual Network internal IP address of the App Service Environment if it is in internal load-balancing mode.
156	InternalIPAddress *string `json:"internalIpAddress,omitempty"`
157	// OutboundIPAddresses - IP addresses appearing on outbound connections.
158	OutboundIPAddresses *[]string `json:"outboundIpAddresses,omitempty"`
159	// VipMappings - Additional virtual IPs.
160	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
161}
162
163// AllowedAudiencesValidation ...
164type AllowedAudiencesValidation struct {
165	// AllowedAudiencesValidationProperties - AllowedAudiencesValidation resource specific properties
166	*AllowedAudiencesValidationProperties `json:"properties,omitempty"`
167	// ID - READ-ONLY; Resource Id.
168	ID *string `json:"id,omitempty"`
169	// Name - READ-ONLY; Resource Name.
170	Name *string `json:"name,omitempty"`
171	// Kind - Kind of resource.
172	Kind *string `json:"kind,omitempty"`
173	// Type - READ-ONLY; Resource type.
174	Type *string `json:"type,omitempty"`
175}
176
177// MarshalJSON is the custom marshaler for AllowedAudiencesValidation.
178func (aav AllowedAudiencesValidation) MarshalJSON() ([]byte, error) {
179	objectMap := make(map[string]interface{})
180	if aav.AllowedAudiencesValidationProperties != nil {
181		objectMap["properties"] = aav.AllowedAudiencesValidationProperties
182	}
183	if aav.Kind != nil {
184		objectMap["kind"] = aav.Kind
185	}
186	return json.Marshal(objectMap)
187}
188
189// UnmarshalJSON is the custom unmarshaler for AllowedAudiencesValidation struct.
190func (aav *AllowedAudiencesValidation) UnmarshalJSON(body []byte) error {
191	var m map[string]*json.RawMessage
192	err := json.Unmarshal(body, &m)
193	if err != nil {
194		return err
195	}
196	for k, v := range m {
197		switch k {
198		case "properties":
199			if v != nil {
200				var allowedAudiencesValidationProperties AllowedAudiencesValidationProperties
201				err = json.Unmarshal(*v, &allowedAudiencesValidationProperties)
202				if err != nil {
203					return err
204				}
205				aav.AllowedAudiencesValidationProperties = &allowedAudiencesValidationProperties
206			}
207		case "id":
208			if v != nil {
209				var ID string
210				err = json.Unmarshal(*v, &ID)
211				if err != nil {
212					return err
213				}
214				aav.ID = &ID
215			}
216		case "name":
217			if v != nil {
218				var name string
219				err = json.Unmarshal(*v, &name)
220				if err != nil {
221					return err
222				}
223				aav.Name = &name
224			}
225		case "kind":
226			if v != nil {
227				var kind string
228				err = json.Unmarshal(*v, &kind)
229				if err != nil {
230					return err
231				}
232				aav.Kind = &kind
233			}
234		case "type":
235			if v != nil {
236				var typeVar string
237				err = json.Unmarshal(*v, &typeVar)
238				if err != nil {
239					return err
240				}
241				aav.Type = &typeVar
242			}
243		}
244	}
245
246	return nil
247}
248
249// AllowedAudiencesValidationProperties allowedAudiencesValidation resource specific properties
250type AllowedAudiencesValidationProperties struct {
251	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
252}
253
254// AnalysisData class Representing Detector Evidence used for analysis
255type AnalysisData struct {
256	// Source - Name of the Detector
257	Source *string `json:"source,omitempty"`
258	// DetectorDefinition - Detector Definition
259	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
260	// Metrics - Source Metrics
261	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
262	// Data - Additional Source Data
263	Data *[][]NameValuePair `json:"data,omitempty"`
264	// DetectorMetaData - Detector Meta Data
265	DetectorMetaData *ResponseMetaData `json:"detectorMetaData,omitempty"`
266}
267
268// AnalysisDefinition definition of Analysis
269type AnalysisDefinition struct {
270	autorest.Response `json:"-"`
271	// AnalysisDefinitionProperties - AnalysisDefinition resource specific properties
272	*AnalysisDefinitionProperties `json:"properties,omitempty"`
273	// ID - READ-ONLY; Resource Id.
274	ID *string `json:"id,omitempty"`
275	// Name - READ-ONLY; Resource Name.
276	Name *string `json:"name,omitempty"`
277	// Kind - Kind of resource.
278	Kind *string `json:"kind,omitempty"`
279	// Type - READ-ONLY; Resource type.
280	Type *string `json:"type,omitempty"`
281}
282
283// MarshalJSON is the custom marshaler for AnalysisDefinition.
284func (ad AnalysisDefinition) MarshalJSON() ([]byte, error) {
285	objectMap := make(map[string]interface{})
286	if ad.AnalysisDefinitionProperties != nil {
287		objectMap["properties"] = ad.AnalysisDefinitionProperties
288	}
289	if ad.Kind != nil {
290		objectMap["kind"] = ad.Kind
291	}
292	return json.Marshal(objectMap)
293}
294
295// UnmarshalJSON is the custom unmarshaler for AnalysisDefinition struct.
296func (ad *AnalysisDefinition) UnmarshalJSON(body []byte) error {
297	var m map[string]*json.RawMessage
298	err := json.Unmarshal(body, &m)
299	if err != nil {
300		return err
301	}
302	for k, v := range m {
303		switch k {
304		case "properties":
305			if v != nil {
306				var analysisDefinitionProperties AnalysisDefinitionProperties
307				err = json.Unmarshal(*v, &analysisDefinitionProperties)
308				if err != nil {
309					return err
310				}
311				ad.AnalysisDefinitionProperties = &analysisDefinitionProperties
312			}
313		case "id":
314			if v != nil {
315				var ID string
316				err = json.Unmarshal(*v, &ID)
317				if err != nil {
318					return err
319				}
320				ad.ID = &ID
321			}
322		case "name":
323			if v != nil {
324				var name string
325				err = json.Unmarshal(*v, &name)
326				if err != nil {
327					return err
328				}
329				ad.Name = &name
330			}
331		case "kind":
332			if v != nil {
333				var kind string
334				err = json.Unmarshal(*v, &kind)
335				if err != nil {
336					return err
337				}
338				ad.Kind = &kind
339			}
340		case "type":
341			if v != nil {
342				var typeVar string
343				err = json.Unmarshal(*v, &typeVar)
344				if err != nil {
345					return err
346				}
347				ad.Type = &typeVar
348			}
349		}
350	}
351
352	return nil
353}
354
355// AnalysisDefinitionProperties analysisDefinition resource specific properties
356type AnalysisDefinitionProperties struct {
357	// Description - READ-ONLY; Description of the Analysis
358	Description *string `json:"description,omitempty"`
359}
360
361// APIDefinitionInfo information about the formal API definition for the app.
362type APIDefinitionInfo struct {
363	// URL - The URL of the API definition.
364	URL *string `json:"url,omitempty"`
365}
366
367// APIManagementConfig azure API management (APIM) configuration linked to the app.
368type APIManagementConfig struct {
369	// ID - APIM-Api Identifier.
370	ID *string `json:"id,omitempty"`
371}
372
373// AppCollection collection of App Service apps.
374type AppCollection struct {
375	autorest.Response `json:"-"`
376	// Value - Collection of resources.
377	Value *[]Site `json:"value,omitempty"`
378	// NextLink - READ-ONLY; Link to next page of resources.
379	NextLink *string `json:"nextLink,omitempty"`
380}
381
382// MarshalJSON is the custom marshaler for AppCollection.
383func (ac AppCollection) MarshalJSON() ([]byte, error) {
384	objectMap := make(map[string]interface{})
385	if ac.Value != nil {
386		objectMap["value"] = ac.Value
387	}
388	return json.Marshal(objectMap)
389}
390
391// AppCollectionIterator provides access to a complete listing of Site values.
392type AppCollectionIterator struct {
393	i    int
394	page AppCollectionPage
395}
396
397// NextWithContext advances to the next value.  If there was an error making
398// the request the iterator does not advance and the error is returned.
399func (iter *AppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
400	if tracing.IsEnabled() {
401		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionIterator.NextWithContext")
402		defer func() {
403			sc := -1
404			if iter.Response().Response.Response != nil {
405				sc = iter.Response().Response.Response.StatusCode
406			}
407			tracing.EndSpan(ctx, sc, err)
408		}()
409	}
410	iter.i++
411	if iter.i < len(iter.page.Values()) {
412		return nil
413	}
414	err = iter.page.NextWithContext(ctx)
415	if err != nil {
416		iter.i--
417		return err
418	}
419	iter.i = 0
420	return nil
421}
422
423// Next advances to the next value.  If there was an error making
424// the request the iterator does not advance and the error is returned.
425// Deprecated: Use NextWithContext() instead.
426func (iter *AppCollectionIterator) Next() error {
427	return iter.NextWithContext(context.Background())
428}
429
430// NotDone returns true if the enumeration should be started or is not yet complete.
431func (iter AppCollectionIterator) NotDone() bool {
432	return iter.page.NotDone() && iter.i < len(iter.page.Values())
433}
434
435// Response returns the raw server response from the last page request.
436func (iter AppCollectionIterator) Response() AppCollection {
437	return iter.page.Response()
438}
439
440// Value returns the current value or a zero-initialized value if the
441// iterator has advanced beyond the end of the collection.
442func (iter AppCollectionIterator) Value() Site {
443	if !iter.page.NotDone() {
444		return Site{}
445	}
446	return iter.page.Values()[iter.i]
447}
448
449// Creates a new instance of the AppCollectionIterator type.
450func NewAppCollectionIterator(page AppCollectionPage) AppCollectionIterator {
451	return AppCollectionIterator{page: page}
452}
453
454// IsEmpty returns true if the ListResult contains no values.
455func (ac AppCollection) IsEmpty() bool {
456	return ac.Value == nil || len(*ac.Value) == 0
457}
458
459// hasNextLink returns true if the NextLink is not empty.
460func (ac AppCollection) hasNextLink() bool {
461	return ac.NextLink != nil && len(*ac.NextLink) != 0
462}
463
464// appCollectionPreparer prepares a request to retrieve the next set of results.
465// It returns nil if no more results exist.
466func (ac AppCollection) appCollectionPreparer(ctx context.Context) (*http.Request, error) {
467	if !ac.hasNextLink() {
468		return nil, nil
469	}
470	return autorest.Prepare((&http.Request{}).WithContext(ctx),
471		autorest.AsJSON(),
472		autorest.AsGet(),
473		autorest.WithBaseURL(to.String(ac.NextLink)))
474}
475
476// AppCollectionPage contains a page of Site values.
477type AppCollectionPage struct {
478	fn func(context.Context, AppCollection) (AppCollection, error)
479	ac AppCollection
480}
481
482// NextWithContext advances to the next page of values.  If there was an error making
483// the request the page does not advance and the error is returned.
484func (page *AppCollectionPage) NextWithContext(ctx context.Context) (err error) {
485	if tracing.IsEnabled() {
486		ctx = tracing.StartSpan(ctx, fqdn+"/AppCollectionPage.NextWithContext")
487		defer func() {
488			sc := -1
489			if page.Response().Response.Response != nil {
490				sc = page.Response().Response.Response.StatusCode
491			}
492			tracing.EndSpan(ctx, sc, err)
493		}()
494	}
495	for {
496		next, err := page.fn(ctx, page.ac)
497		if err != nil {
498			return err
499		}
500		page.ac = next
501		if !next.hasNextLink() || !next.IsEmpty() {
502			break
503		}
504	}
505	return nil
506}
507
508// Next advances to the next page of values.  If there was an error making
509// the request the page does not advance and the error is returned.
510// Deprecated: Use NextWithContext() instead.
511func (page *AppCollectionPage) Next() error {
512	return page.NextWithContext(context.Background())
513}
514
515// NotDone returns true if the page enumeration should be started or is not yet complete.
516func (page AppCollectionPage) NotDone() bool {
517	return !page.ac.IsEmpty()
518}
519
520// Response returns the raw server response from the last page request.
521func (page AppCollectionPage) Response() AppCollection {
522	return page.ac
523}
524
525// Values returns the slice of values for the current page or nil if there are no values.
526func (page AppCollectionPage) Values() []Site {
527	if page.ac.IsEmpty() {
528		return nil
529	}
530	return *page.ac.Value
531}
532
533// Creates a new instance of the AppCollectionPage type.
534func NewAppCollectionPage(cur AppCollection, getNextPage func(context.Context, AppCollection) (AppCollection, error)) AppCollectionPage {
535	return AppCollectionPage{
536		fn: getNextPage,
537		ac: cur,
538	}
539}
540
541// AppInstanceStatusCollection collection of app instances.
542type AppInstanceStatusCollection struct {
543	autorest.Response `json:"-"`
544	// Value - Collection of resources.
545	Value *[]SiteInstanceStatus `json:"value,omitempty"`
546	// NextLink - READ-ONLY; Link to next page of resources.
547	NextLink *string `json:"nextLink,omitempty"`
548}
549
550// MarshalJSON is the custom marshaler for AppInstanceStatusCollection.
551func (aisc AppInstanceStatusCollection) MarshalJSON() ([]byte, error) {
552	objectMap := make(map[string]interface{})
553	if aisc.Value != nil {
554		objectMap["value"] = aisc.Value
555	}
556	return json.Marshal(objectMap)
557}
558
559// AppInstanceStatusCollectionIterator provides access to a complete listing of SiteInstanceStatus values.
560type AppInstanceStatusCollectionIterator struct {
561	i    int
562	page AppInstanceStatusCollectionPage
563}
564
565// NextWithContext advances to the next value.  If there was an error making
566// the request the iterator does not advance and the error is returned.
567func (iter *AppInstanceStatusCollectionIterator) NextWithContext(ctx context.Context) (err error) {
568	if tracing.IsEnabled() {
569		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceStatusCollectionIterator.NextWithContext")
570		defer func() {
571			sc := -1
572			if iter.Response().Response.Response != nil {
573				sc = iter.Response().Response.Response.StatusCode
574			}
575			tracing.EndSpan(ctx, sc, err)
576		}()
577	}
578	iter.i++
579	if iter.i < len(iter.page.Values()) {
580		return nil
581	}
582	err = iter.page.NextWithContext(ctx)
583	if err != nil {
584		iter.i--
585		return err
586	}
587	iter.i = 0
588	return nil
589}
590
591// Next advances to the next value.  If there was an error making
592// the request the iterator does not advance and the error is returned.
593// Deprecated: Use NextWithContext() instead.
594func (iter *AppInstanceStatusCollectionIterator) Next() error {
595	return iter.NextWithContext(context.Background())
596}
597
598// NotDone returns true if the enumeration should be started or is not yet complete.
599func (iter AppInstanceStatusCollectionIterator) NotDone() bool {
600	return iter.page.NotDone() && iter.i < len(iter.page.Values())
601}
602
603// Response returns the raw server response from the last page request.
604func (iter AppInstanceStatusCollectionIterator) Response() AppInstanceStatusCollection {
605	return iter.page.Response()
606}
607
608// Value returns the current value or a zero-initialized value if the
609// iterator has advanced beyond the end of the collection.
610func (iter AppInstanceStatusCollectionIterator) Value() SiteInstanceStatus {
611	if !iter.page.NotDone() {
612		return SiteInstanceStatus{}
613	}
614	return iter.page.Values()[iter.i]
615}
616
617// Creates a new instance of the AppInstanceStatusCollectionIterator type.
618func NewAppInstanceStatusCollectionIterator(page AppInstanceStatusCollectionPage) AppInstanceStatusCollectionIterator {
619	return AppInstanceStatusCollectionIterator{page: page}
620}
621
622// IsEmpty returns true if the ListResult contains no values.
623func (aisc AppInstanceStatusCollection) IsEmpty() bool {
624	return aisc.Value == nil || len(*aisc.Value) == 0
625}
626
627// hasNextLink returns true if the NextLink is not empty.
628func (aisc AppInstanceStatusCollection) hasNextLink() bool {
629	return aisc.NextLink != nil && len(*aisc.NextLink) != 0
630}
631
632// appInstanceStatusCollectionPreparer prepares a request to retrieve the next set of results.
633// It returns nil if no more results exist.
634func (aisc AppInstanceStatusCollection) appInstanceStatusCollectionPreparer(ctx context.Context) (*http.Request, error) {
635	if !aisc.hasNextLink() {
636		return nil, nil
637	}
638	return autorest.Prepare((&http.Request{}).WithContext(ctx),
639		autorest.AsJSON(),
640		autorest.AsGet(),
641		autorest.WithBaseURL(to.String(aisc.NextLink)))
642}
643
644// AppInstanceStatusCollectionPage contains a page of SiteInstanceStatus values.
645type AppInstanceStatusCollectionPage struct {
646	fn   func(context.Context, AppInstanceStatusCollection) (AppInstanceStatusCollection, error)
647	aisc AppInstanceStatusCollection
648}
649
650// NextWithContext advances to the next page of values.  If there was an error making
651// the request the page does not advance and the error is returned.
652func (page *AppInstanceStatusCollectionPage) NextWithContext(ctx context.Context) (err error) {
653	if tracing.IsEnabled() {
654		ctx = tracing.StartSpan(ctx, fqdn+"/AppInstanceStatusCollectionPage.NextWithContext")
655		defer func() {
656			sc := -1
657			if page.Response().Response.Response != nil {
658				sc = page.Response().Response.Response.StatusCode
659			}
660			tracing.EndSpan(ctx, sc, err)
661		}()
662	}
663	for {
664		next, err := page.fn(ctx, page.aisc)
665		if err != nil {
666			return err
667		}
668		page.aisc = next
669		if !next.hasNextLink() || !next.IsEmpty() {
670			break
671		}
672	}
673	return nil
674}
675
676// Next advances to the next page of values.  If there was an error making
677// the request the page does not advance and the error is returned.
678// Deprecated: Use NextWithContext() instead.
679func (page *AppInstanceStatusCollectionPage) Next() error {
680	return page.NextWithContext(context.Background())
681}
682
683// NotDone returns true if the page enumeration should be started or is not yet complete.
684func (page AppInstanceStatusCollectionPage) NotDone() bool {
685	return !page.aisc.IsEmpty()
686}
687
688// Response returns the raw server response from the last page request.
689func (page AppInstanceStatusCollectionPage) Response() AppInstanceStatusCollection {
690	return page.aisc
691}
692
693// Values returns the slice of values for the current page or nil if there are no values.
694func (page AppInstanceStatusCollectionPage) Values() []SiteInstanceStatus {
695	if page.aisc.IsEmpty() {
696		return nil
697	}
698	return *page.aisc.Value
699}
700
701// Creates a new instance of the AppInstanceStatusCollectionPage type.
702func NewAppInstanceStatusCollectionPage(cur AppInstanceStatusCollection, getNextPage func(context.Context, AppInstanceStatusCollection) (AppInstanceStatusCollection, error)) AppInstanceStatusCollectionPage {
703	return AppInstanceStatusCollectionPage{
704		fn:   getNextPage,
705		aisc: cur,
706	}
707}
708
709// ApplicationLogsConfig application logs configuration.
710type ApplicationLogsConfig struct {
711	// FileSystem - Application logs to file system configuration.
712	FileSystem *FileSystemApplicationLogsConfig `json:"fileSystem,omitempty"`
713	// AzureTableStorage - Application logs to azure table storage configuration.
714	AzureTableStorage *AzureTableStorageApplicationLogsConfig `json:"azureTableStorage,omitempty"`
715	// AzureBlobStorage - Application logs to blob storage configuration.
716	AzureBlobStorage *AzureBlobStorageApplicationLogsConfig `json:"azureBlobStorage,omitempty"`
717}
718
719// ApplicationStack application stack.
720type ApplicationStack struct {
721	// Name - Application stack name.
722	Name *string `json:"name,omitempty"`
723	// Display - Application stack display name.
724	Display *string `json:"display,omitempty"`
725	// Dependency - Application stack dependency.
726	Dependency *string `json:"dependency,omitempty"`
727	// MajorVersions - List of major versions available.
728	MajorVersions *[]StackMajorVersion `json:"majorVersions,omitempty"`
729	// Frameworks - List of frameworks associated with application stack.
730	Frameworks *[]ApplicationStack `json:"frameworks,omitempty"`
731}
732
733// ApplicationStackCollection collection of Application Stacks
734type ApplicationStackCollection struct {
735	autorest.Response `json:"-"`
736	// Value - Collection of resources.
737	Value *[]ApplicationStackResource `json:"value,omitempty"`
738	// NextLink - READ-ONLY; Link to next page of resources.
739	NextLink *string `json:"nextLink,omitempty"`
740}
741
742// MarshalJSON is the custom marshaler for ApplicationStackCollection.
743func (asc ApplicationStackCollection) MarshalJSON() ([]byte, error) {
744	objectMap := make(map[string]interface{})
745	if asc.Value != nil {
746		objectMap["value"] = asc.Value
747	}
748	return json.Marshal(objectMap)
749}
750
751// ApplicationStackCollectionIterator provides access to a complete listing of ApplicationStackResource
752// values.
753type ApplicationStackCollectionIterator struct {
754	i    int
755	page ApplicationStackCollectionPage
756}
757
758// NextWithContext advances to the next value.  If there was an error making
759// the request the iterator does not advance and the error is returned.
760func (iter *ApplicationStackCollectionIterator) NextWithContext(ctx context.Context) (err error) {
761	if tracing.IsEnabled() {
762		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionIterator.NextWithContext")
763		defer func() {
764			sc := -1
765			if iter.Response().Response.Response != nil {
766				sc = iter.Response().Response.Response.StatusCode
767			}
768			tracing.EndSpan(ctx, sc, err)
769		}()
770	}
771	iter.i++
772	if iter.i < len(iter.page.Values()) {
773		return nil
774	}
775	err = iter.page.NextWithContext(ctx)
776	if err != nil {
777		iter.i--
778		return err
779	}
780	iter.i = 0
781	return nil
782}
783
784// Next advances to the next value.  If there was an error making
785// the request the iterator does not advance and the error is returned.
786// Deprecated: Use NextWithContext() instead.
787func (iter *ApplicationStackCollectionIterator) Next() error {
788	return iter.NextWithContext(context.Background())
789}
790
791// NotDone returns true if the enumeration should be started or is not yet complete.
792func (iter ApplicationStackCollectionIterator) NotDone() bool {
793	return iter.page.NotDone() && iter.i < len(iter.page.Values())
794}
795
796// Response returns the raw server response from the last page request.
797func (iter ApplicationStackCollectionIterator) Response() ApplicationStackCollection {
798	return iter.page.Response()
799}
800
801// Value returns the current value or a zero-initialized value if the
802// iterator has advanced beyond the end of the collection.
803func (iter ApplicationStackCollectionIterator) Value() ApplicationStackResource {
804	if !iter.page.NotDone() {
805		return ApplicationStackResource{}
806	}
807	return iter.page.Values()[iter.i]
808}
809
810// Creates a new instance of the ApplicationStackCollectionIterator type.
811func NewApplicationStackCollectionIterator(page ApplicationStackCollectionPage) ApplicationStackCollectionIterator {
812	return ApplicationStackCollectionIterator{page: page}
813}
814
815// IsEmpty returns true if the ListResult contains no values.
816func (asc ApplicationStackCollection) IsEmpty() bool {
817	return asc.Value == nil || len(*asc.Value) == 0
818}
819
820// hasNextLink returns true if the NextLink is not empty.
821func (asc ApplicationStackCollection) hasNextLink() bool {
822	return asc.NextLink != nil && len(*asc.NextLink) != 0
823}
824
825// applicationStackCollectionPreparer prepares a request to retrieve the next set of results.
826// It returns nil if no more results exist.
827func (asc ApplicationStackCollection) applicationStackCollectionPreparer(ctx context.Context) (*http.Request, error) {
828	if !asc.hasNextLink() {
829		return nil, nil
830	}
831	return autorest.Prepare((&http.Request{}).WithContext(ctx),
832		autorest.AsJSON(),
833		autorest.AsGet(),
834		autorest.WithBaseURL(to.String(asc.NextLink)))
835}
836
837// ApplicationStackCollectionPage contains a page of ApplicationStackResource values.
838type ApplicationStackCollectionPage struct {
839	fn  func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)
840	asc ApplicationStackCollection
841}
842
843// NextWithContext advances to the next page of values.  If there was an error making
844// the request the page does not advance and the error is returned.
845func (page *ApplicationStackCollectionPage) NextWithContext(ctx context.Context) (err error) {
846	if tracing.IsEnabled() {
847		ctx = tracing.StartSpan(ctx, fqdn+"/ApplicationStackCollectionPage.NextWithContext")
848		defer func() {
849			sc := -1
850			if page.Response().Response.Response != nil {
851				sc = page.Response().Response.Response.StatusCode
852			}
853			tracing.EndSpan(ctx, sc, err)
854		}()
855	}
856	for {
857		next, err := page.fn(ctx, page.asc)
858		if err != nil {
859			return err
860		}
861		page.asc = next
862		if !next.hasNextLink() || !next.IsEmpty() {
863			break
864		}
865	}
866	return nil
867}
868
869// Next advances to the next page of values.  If there was an error making
870// the request the page does not advance and the error is returned.
871// Deprecated: Use NextWithContext() instead.
872func (page *ApplicationStackCollectionPage) Next() error {
873	return page.NextWithContext(context.Background())
874}
875
876// NotDone returns true if the page enumeration should be started or is not yet complete.
877func (page ApplicationStackCollectionPage) NotDone() bool {
878	return !page.asc.IsEmpty()
879}
880
881// Response returns the raw server response from the last page request.
882func (page ApplicationStackCollectionPage) Response() ApplicationStackCollection {
883	return page.asc
884}
885
886// Values returns the slice of values for the current page or nil if there are no values.
887func (page ApplicationStackCollectionPage) Values() []ApplicationStackResource {
888	if page.asc.IsEmpty() {
889		return nil
890	}
891	return *page.asc.Value
892}
893
894// Creates a new instance of the ApplicationStackCollectionPage type.
895func NewApplicationStackCollectionPage(cur ApplicationStackCollection, getNextPage func(context.Context, ApplicationStackCollection) (ApplicationStackCollection, error)) ApplicationStackCollectionPage {
896	return ApplicationStackCollectionPage{
897		fn:  getNextPage,
898		asc: cur,
899	}
900}
901
902// ApplicationStackResource ARM resource for a ApplicationStack.
903type ApplicationStackResource struct {
904	// ApplicationStack - Core resource properties
905	*ApplicationStack `json:"properties,omitempty"`
906	// ID - READ-ONLY; Resource Id.
907	ID *string `json:"id,omitempty"`
908	// Name - READ-ONLY; Resource Name.
909	Name *string `json:"name,omitempty"`
910	// Kind - Kind of resource.
911	Kind *string `json:"kind,omitempty"`
912	// Type - READ-ONLY; Resource type.
913	Type *string `json:"type,omitempty"`
914}
915
916// MarshalJSON is the custom marshaler for ApplicationStackResource.
917func (asr ApplicationStackResource) MarshalJSON() ([]byte, error) {
918	objectMap := make(map[string]interface{})
919	if asr.ApplicationStack != nil {
920		objectMap["properties"] = asr.ApplicationStack
921	}
922	if asr.Kind != nil {
923		objectMap["kind"] = asr.Kind
924	}
925	return json.Marshal(objectMap)
926}
927
928// UnmarshalJSON is the custom unmarshaler for ApplicationStackResource struct.
929func (asr *ApplicationStackResource) UnmarshalJSON(body []byte) error {
930	var m map[string]*json.RawMessage
931	err := json.Unmarshal(body, &m)
932	if err != nil {
933		return err
934	}
935	for k, v := range m {
936		switch k {
937		case "properties":
938			if v != nil {
939				var applicationStack ApplicationStack
940				err = json.Unmarshal(*v, &applicationStack)
941				if err != nil {
942					return err
943				}
944				asr.ApplicationStack = &applicationStack
945			}
946		case "id":
947			if v != nil {
948				var ID string
949				err = json.Unmarshal(*v, &ID)
950				if err != nil {
951					return err
952				}
953				asr.ID = &ID
954			}
955		case "name":
956			if v != nil {
957				var name string
958				err = json.Unmarshal(*v, &name)
959				if err != nil {
960					return err
961				}
962				asr.Name = &name
963			}
964		case "kind":
965			if v != nil {
966				var kind string
967				err = json.Unmarshal(*v, &kind)
968				if err != nil {
969					return err
970				}
971				asr.Kind = &kind
972			}
973		case "type":
974			if v != nil {
975				var typeVar string
976				err = json.Unmarshal(*v, &typeVar)
977				if err != nil {
978					return err
979				}
980				asr.Type = &typeVar
981			}
982		}
983	}
984
985	return nil
986}
987
988// AppRegistration ...
989type AppRegistration struct {
990	// AppRegistrationProperties - AppRegistration resource specific properties
991	*AppRegistrationProperties `json:"properties,omitempty"`
992	// ID - READ-ONLY; Resource Id.
993	ID *string `json:"id,omitempty"`
994	// Name - READ-ONLY; Resource Name.
995	Name *string `json:"name,omitempty"`
996	// Kind - Kind of resource.
997	Kind *string `json:"kind,omitempty"`
998	// Type - READ-ONLY; Resource type.
999	Type *string `json:"type,omitempty"`
1000}
1001
1002// MarshalJSON is the custom marshaler for AppRegistration.
1003func (ar AppRegistration) MarshalJSON() ([]byte, error) {
1004	objectMap := make(map[string]interface{})
1005	if ar.AppRegistrationProperties != nil {
1006		objectMap["properties"] = ar.AppRegistrationProperties
1007	}
1008	if ar.Kind != nil {
1009		objectMap["kind"] = ar.Kind
1010	}
1011	return json.Marshal(objectMap)
1012}
1013
1014// UnmarshalJSON is the custom unmarshaler for AppRegistration struct.
1015func (ar *AppRegistration) UnmarshalJSON(body []byte) error {
1016	var m map[string]*json.RawMessage
1017	err := json.Unmarshal(body, &m)
1018	if err != nil {
1019		return err
1020	}
1021	for k, v := range m {
1022		switch k {
1023		case "properties":
1024			if v != nil {
1025				var appRegistrationProperties AppRegistrationProperties
1026				err = json.Unmarshal(*v, &appRegistrationProperties)
1027				if err != nil {
1028					return err
1029				}
1030				ar.AppRegistrationProperties = &appRegistrationProperties
1031			}
1032		case "id":
1033			if v != nil {
1034				var ID string
1035				err = json.Unmarshal(*v, &ID)
1036				if err != nil {
1037					return err
1038				}
1039				ar.ID = &ID
1040			}
1041		case "name":
1042			if v != nil {
1043				var name string
1044				err = json.Unmarshal(*v, &name)
1045				if err != nil {
1046					return err
1047				}
1048				ar.Name = &name
1049			}
1050		case "kind":
1051			if v != nil {
1052				var kind string
1053				err = json.Unmarshal(*v, &kind)
1054				if err != nil {
1055					return err
1056				}
1057				ar.Kind = &kind
1058			}
1059		case "type":
1060			if v != nil {
1061				var typeVar string
1062				err = json.Unmarshal(*v, &typeVar)
1063				if err != nil {
1064					return err
1065				}
1066				ar.Type = &typeVar
1067			}
1068		}
1069	}
1070
1071	return nil
1072}
1073
1074// AppRegistrationProperties appRegistration resource specific properties
1075type AppRegistrationProperties struct {
1076	AppID                *string `json:"appId,omitempty"`
1077	AppSecretSettingName *string `json:"appSecretSettingName,omitempty"`
1078}
1079
1080// AppsApproveOrRejectPrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the
1081// results of a long-running operation.
1082type AppsApproveOrRejectPrivateEndpointConnectionFuture struct {
1083	azure.FutureAPI
1084	// Result returns the result of the asynchronous operation.
1085	// If the operation has not completed it will return an error.
1086	Result func(AppsClient) (PrivateEndpointConnectionResource, error)
1087}
1088
1089// AppsCopyProductionSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1090// operation.
1091type AppsCopyProductionSlotFuture struct {
1092	azure.FutureAPI
1093	// Result returns the result of the asynchronous operation.
1094	// If the operation has not completed it will return an error.
1095	Result func(AppsClient) (autorest.Response, error)
1096}
1097
1098// AppsCopySlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1099// operation.
1100type AppsCopySlotSlotFuture struct {
1101	azure.FutureAPI
1102	// Result returns the result of the asynchronous operation.
1103	// If the operation has not completed it will return an error.
1104	Result func(AppsClient) (autorest.Response, error)
1105}
1106
1107// AppsCreateFunctionFuture an abstraction for monitoring and retrieving the results of a long-running
1108// operation.
1109type AppsCreateFunctionFuture struct {
1110	azure.FutureAPI
1111	// Result returns the result of the asynchronous operation.
1112	// If the operation has not completed it will return an error.
1113	Result func(AppsClient) (FunctionEnvelope, error)
1114}
1115
1116// AppsCreateInstanceFunctionSlotFuture an abstraction for monitoring and retrieving the results of a
1117// long-running operation.
1118type AppsCreateInstanceFunctionSlotFuture struct {
1119	azure.FutureAPI
1120	// Result returns the result of the asynchronous operation.
1121	// If the operation has not completed it will return an error.
1122	Result func(AppsClient) (FunctionEnvelope, error)
1123}
1124
1125// AppsCreateInstanceMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1126// long-running operation.
1127type AppsCreateInstanceMSDeployOperationFuture struct {
1128	azure.FutureAPI
1129	// Result returns the result of the asynchronous operation.
1130	// If the operation has not completed it will return an error.
1131	Result func(AppsClient) (MSDeployStatus, error)
1132}
1133
1134// AppsCreateInstanceMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results
1135// of a long-running operation.
1136type AppsCreateInstanceMSDeployOperationSlotFuture struct {
1137	azure.FutureAPI
1138	// Result returns the result of the asynchronous operation.
1139	// If the operation has not completed it will return an error.
1140	Result func(AppsClient) (MSDeployStatus, error)
1141}
1142
1143// AppsCreateMSDeployOperationFuture an abstraction for monitoring and retrieving the results of a
1144// long-running operation.
1145type AppsCreateMSDeployOperationFuture struct {
1146	azure.FutureAPI
1147	// Result returns the result of the asynchronous operation.
1148	// If the operation has not completed it will return an error.
1149	Result func(AppsClient) (MSDeployStatus, error)
1150}
1151
1152// AppsCreateMSDeployOperationSlotFuture an abstraction for monitoring and retrieving the results of a
1153// long-running operation.
1154type AppsCreateMSDeployOperationSlotFuture struct {
1155	azure.FutureAPI
1156	// Result returns the result of the asynchronous operation.
1157	// If the operation has not completed it will return an error.
1158	Result func(AppsClient) (MSDeployStatus, error)
1159}
1160
1161// AppsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
1162// operation.
1163type AppsCreateOrUpdateFuture struct {
1164	azure.FutureAPI
1165	// Result returns the result of the asynchronous operation.
1166	// If the operation has not completed it will return an error.
1167	Result func(AppsClient) (Site, error)
1168}
1169
1170// AppsCreateOrUpdateSlotFuture an abstraction for monitoring and retrieving the results of a long-running
1171// operation.
1172type AppsCreateOrUpdateSlotFuture struct {
1173	azure.FutureAPI
1174	// Result returns the result of the asynchronous operation.
1175	// If the operation has not completed it will return an error.
1176	Result func(AppsClient) (Site, error)
1177}
1178
1179// AppsCreateOrUpdateSourceControlFuture an abstraction for monitoring and retrieving the results of a
1180// long-running operation.
1181type AppsCreateOrUpdateSourceControlFuture struct {
1182	azure.FutureAPI
1183	// Result returns the result of the asynchronous operation.
1184	// If the operation has not completed it will return an error.
1185	Result func(AppsClient) (SiteSourceControl, error)
1186}
1187
1188// AppsCreateOrUpdateSourceControlSlotFuture an abstraction for monitoring and retrieving the results of a
1189// long-running operation.
1190type AppsCreateOrUpdateSourceControlSlotFuture struct {
1191	azure.FutureAPI
1192	// Result returns the result of the asynchronous operation.
1193	// If the operation has not completed it will return an error.
1194	Result func(AppsClient) (SiteSourceControl, error)
1195}
1196
1197// AppsDeletePrivateEndpointConnectionFuture an abstraction for monitoring and retrieving the results of a
1198// long-running operation.
1199type AppsDeletePrivateEndpointConnectionFuture struct {
1200	azure.FutureAPI
1201	// Result returns the result of the asynchronous operation.
1202	// If the operation has not completed it will return an error.
1203	Result func(AppsClient) (SetObject, error)
1204}
1205
1206// AppServiceCertificate key Vault container for a certificate that is purchased through Azure.
1207type AppServiceCertificate struct {
1208	// KeyVaultID - Key Vault resource Id.
1209	KeyVaultID *string `json:"keyVaultId,omitempty"`
1210	// KeyVaultSecretName - Key Vault secret name.
1211	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
1212	// ProvisioningState - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
1213	ProvisioningState KeyVaultSecretStatus `json:"provisioningState,omitempty"`
1214}
1215
1216// MarshalJSON is the custom marshaler for AppServiceCertificate.
1217func (asc AppServiceCertificate) MarshalJSON() ([]byte, error) {
1218	objectMap := make(map[string]interface{})
1219	if asc.KeyVaultID != nil {
1220		objectMap["keyVaultId"] = asc.KeyVaultID
1221	}
1222	if asc.KeyVaultSecretName != nil {
1223		objectMap["keyVaultSecretName"] = asc.KeyVaultSecretName
1224	}
1225	return json.Marshal(objectMap)
1226}
1227
1228// AppServiceCertificateCollection collection of certificate order certificates.
1229type AppServiceCertificateCollection struct {
1230	autorest.Response `json:"-"`
1231	// Value - Collection of resources.
1232	Value *[]AppServiceCertificateResource `json:"value,omitempty"`
1233	// NextLink - READ-ONLY; Link to next page of resources.
1234	NextLink *string `json:"nextLink,omitempty"`
1235}
1236
1237// MarshalJSON is the custom marshaler for AppServiceCertificateCollection.
1238func (ascc AppServiceCertificateCollection) MarshalJSON() ([]byte, error) {
1239	objectMap := make(map[string]interface{})
1240	if ascc.Value != nil {
1241		objectMap["value"] = ascc.Value
1242	}
1243	return json.Marshal(objectMap)
1244}
1245
1246// AppServiceCertificateCollectionIterator provides access to a complete listing of
1247// AppServiceCertificateResource values.
1248type AppServiceCertificateCollectionIterator struct {
1249	i    int
1250	page AppServiceCertificateCollectionPage
1251}
1252
1253// NextWithContext advances to the next value.  If there was an error making
1254// the request the iterator does not advance and the error is returned.
1255func (iter *AppServiceCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1256	if tracing.IsEnabled() {
1257		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionIterator.NextWithContext")
1258		defer func() {
1259			sc := -1
1260			if iter.Response().Response.Response != nil {
1261				sc = iter.Response().Response.Response.StatusCode
1262			}
1263			tracing.EndSpan(ctx, sc, err)
1264		}()
1265	}
1266	iter.i++
1267	if iter.i < len(iter.page.Values()) {
1268		return nil
1269	}
1270	err = iter.page.NextWithContext(ctx)
1271	if err != nil {
1272		iter.i--
1273		return err
1274	}
1275	iter.i = 0
1276	return nil
1277}
1278
1279// Next advances to the next value.  If there was an error making
1280// the request the iterator does not advance and the error is returned.
1281// Deprecated: Use NextWithContext() instead.
1282func (iter *AppServiceCertificateCollectionIterator) Next() error {
1283	return iter.NextWithContext(context.Background())
1284}
1285
1286// NotDone returns true if the enumeration should be started or is not yet complete.
1287func (iter AppServiceCertificateCollectionIterator) NotDone() bool {
1288	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1289}
1290
1291// Response returns the raw server response from the last page request.
1292func (iter AppServiceCertificateCollectionIterator) Response() AppServiceCertificateCollection {
1293	return iter.page.Response()
1294}
1295
1296// Value returns the current value or a zero-initialized value if the
1297// iterator has advanced beyond the end of the collection.
1298func (iter AppServiceCertificateCollectionIterator) Value() AppServiceCertificateResource {
1299	if !iter.page.NotDone() {
1300		return AppServiceCertificateResource{}
1301	}
1302	return iter.page.Values()[iter.i]
1303}
1304
1305// Creates a new instance of the AppServiceCertificateCollectionIterator type.
1306func NewAppServiceCertificateCollectionIterator(page AppServiceCertificateCollectionPage) AppServiceCertificateCollectionIterator {
1307	return AppServiceCertificateCollectionIterator{page: page}
1308}
1309
1310// IsEmpty returns true if the ListResult contains no values.
1311func (ascc AppServiceCertificateCollection) IsEmpty() bool {
1312	return ascc.Value == nil || len(*ascc.Value) == 0
1313}
1314
1315// hasNextLink returns true if the NextLink is not empty.
1316func (ascc AppServiceCertificateCollection) hasNextLink() bool {
1317	return ascc.NextLink != nil && len(*ascc.NextLink) != 0
1318}
1319
1320// appServiceCertificateCollectionPreparer prepares a request to retrieve the next set of results.
1321// It returns nil if no more results exist.
1322func (ascc AppServiceCertificateCollection) appServiceCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
1323	if !ascc.hasNextLink() {
1324		return nil, nil
1325	}
1326	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1327		autorest.AsJSON(),
1328		autorest.AsGet(),
1329		autorest.WithBaseURL(to.String(ascc.NextLink)))
1330}
1331
1332// AppServiceCertificateCollectionPage contains a page of AppServiceCertificateResource values.
1333type AppServiceCertificateCollectionPage struct {
1334	fn   func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)
1335	ascc AppServiceCertificateCollection
1336}
1337
1338// NextWithContext advances to the next page of values.  If there was an error making
1339// the request the page does not advance and the error is returned.
1340func (page *AppServiceCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
1341	if tracing.IsEnabled() {
1342		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateCollectionPage.NextWithContext")
1343		defer func() {
1344			sc := -1
1345			if page.Response().Response.Response != nil {
1346				sc = page.Response().Response.Response.StatusCode
1347			}
1348			tracing.EndSpan(ctx, sc, err)
1349		}()
1350	}
1351	for {
1352		next, err := page.fn(ctx, page.ascc)
1353		if err != nil {
1354			return err
1355		}
1356		page.ascc = next
1357		if !next.hasNextLink() || !next.IsEmpty() {
1358			break
1359		}
1360	}
1361	return nil
1362}
1363
1364// Next advances to the next page of values.  If there was an error making
1365// the request the page does not advance and the error is returned.
1366// Deprecated: Use NextWithContext() instead.
1367func (page *AppServiceCertificateCollectionPage) Next() error {
1368	return page.NextWithContext(context.Background())
1369}
1370
1371// NotDone returns true if the page enumeration should be started or is not yet complete.
1372func (page AppServiceCertificateCollectionPage) NotDone() bool {
1373	return !page.ascc.IsEmpty()
1374}
1375
1376// Response returns the raw server response from the last page request.
1377func (page AppServiceCertificateCollectionPage) Response() AppServiceCertificateCollection {
1378	return page.ascc
1379}
1380
1381// Values returns the slice of values for the current page or nil if there are no values.
1382func (page AppServiceCertificateCollectionPage) Values() []AppServiceCertificateResource {
1383	if page.ascc.IsEmpty() {
1384		return nil
1385	}
1386	return *page.ascc.Value
1387}
1388
1389// Creates a new instance of the AppServiceCertificateCollectionPage type.
1390func NewAppServiceCertificateCollectionPage(cur AppServiceCertificateCollection, getNextPage func(context.Context, AppServiceCertificateCollection) (AppServiceCertificateCollection, error)) AppServiceCertificateCollectionPage {
1391	return AppServiceCertificateCollectionPage{
1392		fn:   getNextPage,
1393		ascc: cur,
1394	}
1395}
1396
1397// AppServiceCertificateOrder SSL certificate purchase order.
1398type AppServiceCertificateOrder struct {
1399	autorest.Response `json:"-"`
1400	// AppServiceCertificateOrderProperties - AppServiceCertificateOrder resource specific properties
1401	*AppServiceCertificateOrderProperties `json:"properties,omitempty"`
1402	// ID - READ-ONLY; Resource Id.
1403	ID *string `json:"id,omitempty"`
1404	// Name - READ-ONLY; Resource Name.
1405	Name *string `json:"name,omitempty"`
1406	// Kind - Kind of resource.
1407	Kind *string `json:"kind,omitempty"`
1408	// Location - Resource Location.
1409	Location *string `json:"location,omitempty"`
1410	// Type - READ-ONLY; Resource type.
1411	Type *string `json:"type,omitempty"`
1412	// Tags - Resource tags.
1413	Tags map[string]*string `json:"tags"`
1414}
1415
1416// MarshalJSON is the custom marshaler for AppServiceCertificateOrder.
1417func (asco AppServiceCertificateOrder) MarshalJSON() ([]byte, error) {
1418	objectMap := make(map[string]interface{})
1419	if asco.AppServiceCertificateOrderProperties != nil {
1420		objectMap["properties"] = asco.AppServiceCertificateOrderProperties
1421	}
1422	if asco.Kind != nil {
1423		objectMap["kind"] = asco.Kind
1424	}
1425	if asco.Location != nil {
1426		objectMap["location"] = asco.Location
1427	}
1428	if asco.Tags != nil {
1429		objectMap["tags"] = asco.Tags
1430	}
1431	return json.Marshal(objectMap)
1432}
1433
1434// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrder struct.
1435func (asco *AppServiceCertificateOrder) UnmarshalJSON(body []byte) error {
1436	var m map[string]*json.RawMessage
1437	err := json.Unmarshal(body, &m)
1438	if err != nil {
1439		return err
1440	}
1441	for k, v := range m {
1442		switch k {
1443		case "properties":
1444			if v != nil {
1445				var appServiceCertificateOrderProperties AppServiceCertificateOrderProperties
1446				err = json.Unmarshal(*v, &appServiceCertificateOrderProperties)
1447				if err != nil {
1448					return err
1449				}
1450				asco.AppServiceCertificateOrderProperties = &appServiceCertificateOrderProperties
1451			}
1452		case "id":
1453			if v != nil {
1454				var ID string
1455				err = json.Unmarshal(*v, &ID)
1456				if err != nil {
1457					return err
1458				}
1459				asco.ID = &ID
1460			}
1461		case "name":
1462			if v != nil {
1463				var name string
1464				err = json.Unmarshal(*v, &name)
1465				if err != nil {
1466					return err
1467				}
1468				asco.Name = &name
1469			}
1470		case "kind":
1471			if v != nil {
1472				var kind string
1473				err = json.Unmarshal(*v, &kind)
1474				if err != nil {
1475					return err
1476				}
1477				asco.Kind = &kind
1478			}
1479		case "location":
1480			if v != nil {
1481				var location string
1482				err = json.Unmarshal(*v, &location)
1483				if err != nil {
1484					return err
1485				}
1486				asco.Location = &location
1487			}
1488		case "type":
1489			if v != nil {
1490				var typeVar string
1491				err = json.Unmarshal(*v, &typeVar)
1492				if err != nil {
1493					return err
1494				}
1495				asco.Type = &typeVar
1496			}
1497		case "tags":
1498			if v != nil {
1499				var tags map[string]*string
1500				err = json.Unmarshal(*v, &tags)
1501				if err != nil {
1502					return err
1503				}
1504				asco.Tags = tags
1505			}
1506		}
1507	}
1508
1509	return nil
1510}
1511
1512// AppServiceCertificateOrderCollection collection of certificate orders.
1513type AppServiceCertificateOrderCollection struct {
1514	autorest.Response `json:"-"`
1515	// Value - Collection of resources.
1516	Value *[]AppServiceCertificateOrder `json:"value,omitempty"`
1517	// NextLink - READ-ONLY; Link to next page of resources.
1518	NextLink *string `json:"nextLink,omitempty"`
1519}
1520
1521// MarshalJSON is the custom marshaler for AppServiceCertificateOrderCollection.
1522func (ascoc AppServiceCertificateOrderCollection) MarshalJSON() ([]byte, error) {
1523	objectMap := make(map[string]interface{})
1524	if ascoc.Value != nil {
1525		objectMap["value"] = ascoc.Value
1526	}
1527	return json.Marshal(objectMap)
1528}
1529
1530// AppServiceCertificateOrderCollectionIterator provides access to a complete listing of
1531// AppServiceCertificateOrder values.
1532type AppServiceCertificateOrderCollectionIterator struct {
1533	i    int
1534	page AppServiceCertificateOrderCollectionPage
1535}
1536
1537// NextWithContext advances to the next value.  If there was an error making
1538// the request the iterator does not advance and the error is returned.
1539func (iter *AppServiceCertificateOrderCollectionIterator) NextWithContext(ctx context.Context) (err error) {
1540	if tracing.IsEnabled() {
1541		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionIterator.NextWithContext")
1542		defer func() {
1543			sc := -1
1544			if iter.Response().Response.Response != nil {
1545				sc = iter.Response().Response.Response.StatusCode
1546			}
1547			tracing.EndSpan(ctx, sc, err)
1548		}()
1549	}
1550	iter.i++
1551	if iter.i < len(iter.page.Values()) {
1552		return nil
1553	}
1554	err = iter.page.NextWithContext(ctx)
1555	if err != nil {
1556		iter.i--
1557		return err
1558	}
1559	iter.i = 0
1560	return nil
1561}
1562
1563// Next advances to the next value.  If there was an error making
1564// the request the iterator does not advance and the error is returned.
1565// Deprecated: Use NextWithContext() instead.
1566func (iter *AppServiceCertificateOrderCollectionIterator) Next() error {
1567	return iter.NextWithContext(context.Background())
1568}
1569
1570// NotDone returns true if the enumeration should be started or is not yet complete.
1571func (iter AppServiceCertificateOrderCollectionIterator) NotDone() bool {
1572	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1573}
1574
1575// Response returns the raw server response from the last page request.
1576func (iter AppServiceCertificateOrderCollectionIterator) Response() AppServiceCertificateOrderCollection {
1577	return iter.page.Response()
1578}
1579
1580// Value returns the current value or a zero-initialized value if the
1581// iterator has advanced beyond the end of the collection.
1582func (iter AppServiceCertificateOrderCollectionIterator) Value() AppServiceCertificateOrder {
1583	if !iter.page.NotDone() {
1584		return AppServiceCertificateOrder{}
1585	}
1586	return iter.page.Values()[iter.i]
1587}
1588
1589// Creates a new instance of the AppServiceCertificateOrderCollectionIterator type.
1590func NewAppServiceCertificateOrderCollectionIterator(page AppServiceCertificateOrderCollectionPage) AppServiceCertificateOrderCollectionIterator {
1591	return AppServiceCertificateOrderCollectionIterator{page: page}
1592}
1593
1594// IsEmpty returns true if the ListResult contains no values.
1595func (ascoc AppServiceCertificateOrderCollection) IsEmpty() bool {
1596	return ascoc.Value == nil || len(*ascoc.Value) == 0
1597}
1598
1599// hasNextLink returns true if the NextLink is not empty.
1600func (ascoc AppServiceCertificateOrderCollection) hasNextLink() bool {
1601	return ascoc.NextLink != nil && len(*ascoc.NextLink) != 0
1602}
1603
1604// appServiceCertificateOrderCollectionPreparer prepares a request to retrieve the next set of results.
1605// It returns nil if no more results exist.
1606func (ascoc AppServiceCertificateOrderCollection) appServiceCertificateOrderCollectionPreparer(ctx context.Context) (*http.Request, error) {
1607	if !ascoc.hasNextLink() {
1608		return nil, nil
1609	}
1610	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1611		autorest.AsJSON(),
1612		autorest.AsGet(),
1613		autorest.WithBaseURL(to.String(ascoc.NextLink)))
1614}
1615
1616// AppServiceCertificateOrderCollectionPage contains a page of AppServiceCertificateOrder values.
1617type AppServiceCertificateOrderCollectionPage struct {
1618	fn    func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)
1619	ascoc AppServiceCertificateOrderCollection
1620}
1621
1622// NextWithContext advances to the next page of values.  If there was an error making
1623// the request the page does not advance and the error is returned.
1624func (page *AppServiceCertificateOrderCollectionPage) NextWithContext(ctx context.Context) (err error) {
1625	if tracing.IsEnabled() {
1626		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceCertificateOrderCollectionPage.NextWithContext")
1627		defer func() {
1628			sc := -1
1629			if page.Response().Response.Response != nil {
1630				sc = page.Response().Response.Response.StatusCode
1631			}
1632			tracing.EndSpan(ctx, sc, err)
1633		}()
1634	}
1635	for {
1636		next, err := page.fn(ctx, page.ascoc)
1637		if err != nil {
1638			return err
1639		}
1640		page.ascoc = next
1641		if !next.hasNextLink() || !next.IsEmpty() {
1642			break
1643		}
1644	}
1645	return nil
1646}
1647
1648// Next advances to the next page of values.  If there was an error making
1649// the request the page does not advance and the error is returned.
1650// Deprecated: Use NextWithContext() instead.
1651func (page *AppServiceCertificateOrderCollectionPage) Next() error {
1652	return page.NextWithContext(context.Background())
1653}
1654
1655// NotDone returns true if the page enumeration should be started or is not yet complete.
1656func (page AppServiceCertificateOrderCollectionPage) NotDone() bool {
1657	return !page.ascoc.IsEmpty()
1658}
1659
1660// Response returns the raw server response from the last page request.
1661func (page AppServiceCertificateOrderCollectionPage) Response() AppServiceCertificateOrderCollection {
1662	return page.ascoc
1663}
1664
1665// Values returns the slice of values for the current page or nil if there are no values.
1666func (page AppServiceCertificateOrderCollectionPage) Values() []AppServiceCertificateOrder {
1667	if page.ascoc.IsEmpty() {
1668		return nil
1669	}
1670	return *page.ascoc.Value
1671}
1672
1673// Creates a new instance of the AppServiceCertificateOrderCollectionPage type.
1674func NewAppServiceCertificateOrderCollectionPage(cur AppServiceCertificateOrderCollection, getNextPage func(context.Context, AppServiceCertificateOrderCollection) (AppServiceCertificateOrderCollection, error)) AppServiceCertificateOrderCollectionPage {
1675	return AppServiceCertificateOrderCollectionPage{
1676		fn:    getNextPage,
1677		ascoc: cur,
1678	}
1679}
1680
1681// AppServiceCertificateOrderPatchResource ARM resource for a certificate order that is purchased through
1682// Azure.
1683type AppServiceCertificateOrderPatchResource struct {
1684	// AppServiceCertificateOrderPatchResourceProperties - AppServiceCertificateOrderPatchResource resource specific properties
1685	*AppServiceCertificateOrderPatchResourceProperties `json:"properties,omitempty"`
1686	// ID - READ-ONLY; Resource Id.
1687	ID *string `json:"id,omitempty"`
1688	// Name - READ-ONLY; Resource Name.
1689	Name *string `json:"name,omitempty"`
1690	// Kind - Kind of resource.
1691	Kind *string `json:"kind,omitempty"`
1692	// Type - READ-ONLY; Resource type.
1693	Type *string `json:"type,omitempty"`
1694}
1695
1696// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResource.
1697func (ascopr AppServiceCertificateOrderPatchResource) MarshalJSON() ([]byte, error) {
1698	objectMap := make(map[string]interface{})
1699	if ascopr.AppServiceCertificateOrderPatchResourceProperties != nil {
1700		objectMap["properties"] = ascopr.AppServiceCertificateOrderPatchResourceProperties
1701	}
1702	if ascopr.Kind != nil {
1703		objectMap["kind"] = ascopr.Kind
1704	}
1705	return json.Marshal(objectMap)
1706}
1707
1708// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateOrderPatchResource struct.
1709func (ascopr *AppServiceCertificateOrderPatchResource) UnmarshalJSON(body []byte) error {
1710	var m map[string]*json.RawMessage
1711	err := json.Unmarshal(body, &m)
1712	if err != nil {
1713		return err
1714	}
1715	for k, v := range m {
1716		switch k {
1717		case "properties":
1718			if v != nil {
1719				var appServiceCertificateOrderPatchResourceProperties AppServiceCertificateOrderPatchResourceProperties
1720				err = json.Unmarshal(*v, &appServiceCertificateOrderPatchResourceProperties)
1721				if err != nil {
1722					return err
1723				}
1724				ascopr.AppServiceCertificateOrderPatchResourceProperties = &appServiceCertificateOrderPatchResourceProperties
1725			}
1726		case "id":
1727			if v != nil {
1728				var ID string
1729				err = json.Unmarshal(*v, &ID)
1730				if err != nil {
1731					return err
1732				}
1733				ascopr.ID = &ID
1734			}
1735		case "name":
1736			if v != nil {
1737				var name string
1738				err = json.Unmarshal(*v, &name)
1739				if err != nil {
1740					return err
1741				}
1742				ascopr.Name = &name
1743			}
1744		case "kind":
1745			if v != nil {
1746				var kind string
1747				err = json.Unmarshal(*v, &kind)
1748				if err != nil {
1749					return err
1750				}
1751				ascopr.Kind = &kind
1752			}
1753		case "type":
1754			if v != nil {
1755				var typeVar string
1756				err = json.Unmarshal(*v, &typeVar)
1757				if err != nil {
1758					return err
1759				}
1760				ascopr.Type = &typeVar
1761			}
1762		}
1763	}
1764
1765	return nil
1766}
1767
1768// AppServiceCertificateOrderPatchResourceProperties appServiceCertificateOrderPatchResource resource
1769// specific properties
1770type AppServiceCertificateOrderPatchResourceProperties struct {
1771	// Certificates - State of the Key Vault secret.
1772	Certificates map[string]*AppServiceCertificate `json:"certificates"`
1773	// DistinguishedName - Certificate distinguished name.
1774	DistinguishedName *string `json:"distinguishedName,omitempty"`
1775	// DomainVerificationToken - READ-ONLY; Domain verification token.
1776	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
1777	// ValidityInYears - Duration in years (must be between 1 and 3).
1778	ValidityInYears *int32 `json:"validityInYears,omitempty"`
1779	// KeySize - Certificate key size.
1780	KeySize *int32 `json:"keySize,omitempty"`
1781	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
1782	ProductType CertificateProductType `json:"productType,omitempty"`
1783	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
1784	AutoRenew *bool `json:"autoRenew,omitempty"`
1785	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
1786	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
1787	// Status - READ-ONLY; Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
1788	Status CertificateOrderStatus `json:"status,omitempty"`
1789	// SignedCertificate - READ-ONLY; Signed certificate.
1790	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
1791	// Csr - Last CSR that was created for this order.
1792	Csr *string `json:"csr,omitempty"`
1793	// Intermediate - READ-ONLY; Intermediate certificate.
1794	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
1795	// Root - READ-ONLY; Root certificate.
1796	Root *CertificateDetails `json:"root,omitempty"`
1797	// SerialNumber - READ-ONLY; Current serial number of the certificate.
1798	SerialNumber *string `json:"serialNumber,omitempty"`
1799	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
1800	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
1801	// ExpirationTime - READ-ONLY; Certificate expiration time.
1802	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
1803	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
1804	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
1805	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
1806	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
1807	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
1808	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
1809}
1810
1811// MarshalJSON is the custom marshaler for AppServiceCertificateOrderPatchResourceProperties.
1812func (ascopr AppServiceCertificateOrderPatchResourceProperties) MarshalJSON() ([]byte, error) {
1813	objectMap := make(map[string]interface{})
1814	if ascopr.Certificates != nil {
1815		objectMap["certificates"] = ascopr.Certificates
1816	}
1817	if ascopr.DistinguishedName != nil {
1818		objectMap["distinguishedName"] = ascopr.DistinguishedName
1819	}
1820	if ascopr.ValidityInYears != nil {
1821		objectMap["validityInYears"] = ascopr.ValidityInYears
1822	}
1823	if ascopr.KeySize != nil {
1824		objectMap["keySize"] = ascopr.KeySize
1825	}
1826	if ascopr.ProductType != "" {
1827		objectMap["productType"] = ascopr.ProductType
1828	}
1829	if ascopr.AutoRenew != nil {
1830		objectMap["autoRenew"] = ascopr.AutoRenew
1831	}
1832	if ascopr.Csr != nil {
1833		objectMap["csr"] = ascopr.Csr
1834	}
1835	return json.Marshal(objectMap)
1836}
1837
1838// AppServiceCertificateOrderProperties appServiceCertificateOrder resource specific properties
1839type AppServiceCertificateOrderProperties struct {
1840	// Certificates - State of the Key Vault secret.
1841	Certificates map[string]*AppServiceCertificate `json:"certificates"`
1842	// DistinguishedName - Certificate distinguished name.
1843	DistinguishedName *string `json:"distinguishedName,omitempty"`
1844	// DomainVerificationToken - READ-ONLY; Domain verification token.
1845	DomainVerificationToken *string `json:"domainVerificationToken,omitempty"`
1846	// ValidityInYears - Duration in years (must be between 1 and 3).
1847	ValidityInYears *int32 `json:"validityInYears,omitempty"`
1848	// KeySize - Certificate key size.
1849	KeySize *int32 `json:"keySize,omitempty"`
1850	// ProductType - Certificate product type. Possible values include: 'StandardDomainValidatedSsl', 'StandardDomainValidatedWildCardSsl'
1851	ProductType CertificateProductType `json:"productType,omitempty"`
1852	// AutoRenew - <code>true</code> if the certificate should be automatically renewed when it expires; otherwise, <code>false</code>.
1853	AutoRenew *bool `json:"autoRenew,omitempty"`
1854	// ProvisioningState - READ-ONLY; Status of certificate order. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
1855	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
1856	// Status - READ-ONLY; Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted'
1857	Status CertificateOrderStatus `json:"status,omitempty"`
1858	// SignedCertificate - READ-ONLY; Signed certificate.
1859	SignedCertificate *CertificateDetails `json:"signedCertificate,omitempty"`
1860	// Csr - Last CSR that was created for this order.
1861	Csr *string `json:"csr,omitempty"`
1862	// Intermediate - READ-ONLY; Intermediate certificate.
1863	Intermediate *CertificateDetails `json:"intermediate,omitempty"`
1864	// Root - READ-ONLY; Root certificate.
1865	Root *CertificateDetails `json:"root,omitempty"`
1866	// SerialNumber - READ-ONLY; Current serial number of the certificate.
1867	SerialNumber *string `json:"serialNumber,omitempty"`
1868	// LastCertificateIssuanceTime - READ-ONLY; Certificate last issuance time.
1869	LastCertificateIssuanceTime *date.Time `json:"lastCertificateIssuanceTime,omitempty"`
1870	// ExpirationTime - READ-ONLY; Certificate expiration time.
1871	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
1872	// IsPrivateKeyExternal - READ-ONLY; <code>true</code> if private key is external; otherwise, <code>false</code>.
1873	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
1874	// AppServiceCertificateNotRenewableReasons - READ-ONLY; Reasons why App Service Certificate is not renewable at the current moment.
1875	AppServiceCertificateNotRenewableReasons *[]string `json:"appServiceCertificateNotRenewableReasons,omitempty"`
1876	// NextAutoRenewalTimeStamp - READ-ONLY; Time stamp when the certificate would be auto renewed next
1877	NextAutoRenewalTimeStamp *date.Time `json:"nextAutoRenewalTimeStamp,omitempty"`
1878}
1879
1880// MarshalJSON is the custom marshaler for AppServiceCertificateOrderProperties.
1881func (asco AppServiceCertificateOrderProperties) MarshalJSON() ([]byte, error) {
1882	objectMap := make(map[string]interface{})
1883	if asco.Certificates != nil {
1884		objectMap["certificates"] = asco.Certificates
1885	}
1886	if asco.DistinguishedName != nil {
1887		objectMap["distinguishedName"] = asco.DistinguishedName
1888	}
1889	if asco.ValidityInYears != nil {
1890		objectMap["validityInYears"] = asco.ValidityInYears
1891	}
1892	if asco.KeySize != nil {
1893		objectMap["keySize"] = asco.KeySize
1894	}
1895	if asco.ProductType != "" {
1896		objectMap["productType"] = asco.ProductType
1897	}
1898	if asco.AutoRenew != nil {
1899		objectMap["autoRenew"] = asco.AutoRenew
1900	}
1901	if asco.Csr != nil {
1902		objectMap["csr"] = asco.Csr
1903	}
1904	return json.Marshal(objectMap)
1905}
1906
1907// AppServiceCertificateOrdersCreateOrUpdateCertificateFuture an abstraction for monitoring and retrieving
1908// the results of a long-running operation.
1909type AppServiceCertificateOrdersCreateOrUpdateCertificateFuture struct {
1910	azure.FutureAPI
1911	// Result returns the result of the asynchronous operation.
1912	// If the operation has not completed it will return an error.
1913	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateResource, error)
1914}
1915
1916// AppServiceCertificateOrdersCreateOrUpdateFuture an abstraction for monitoring and retrieving the results
1917// of a long-running operation.
1918type AppServiceCertificateOrdersCreateOrUpdateFuture struct {
1919	azure.FutureAPI
1920	// Result returns the result of the asynchronous operation.
1921	// If the operation has not completed it will return an error.
1922	Result func(AppServiceCertificateOrdersClient) (AppServiceCertificateOrder, error)
1923}
1924
1925// AppServiceCertificatePatchResource key Vault container ARM resource for a certificate that is purchased
1926// through Azure.
1927type AppServiceCertificatePatchResource struct {
1928	// AppServiceCertificate - Core resource properties
1929	*AppServiceCertificate `json:"properties,omitempty"`
1930	// ID - READ-ONLY; Resource Id.
1931	ID *string `json:"id,omitempty"`
1932	// Name - READ-ONLY; Resource Name.
1933	Name *string `json:"name,omitempty"`
1934	// Kind - Kind of resource.
1935	Kind *string `json:"kind,omitempty"`
1936	// Type - READ-ONLY; Resource type.
1937	Type *string `json:"type,omitempty"`
1938}
1939
1940// MarshalJSON is the custom marshaler for AppServiceCertificatePatchResource.
1941func (ascpr AppServiceCertificatePatchResource) MarshalJSON() ([]byte, error) {
1942	objectMap := make(map[string]interface{})
1943	if ascpr.AppServiceCertificate != nil {
1944		objectMap["properties"] = ascpr.AppServiceCertificate
1945	}
1946	if ascpr.Kind != nil {
1947		objectMap["kind"] = ascpr.Kind
1948	}
1949	return json.Marshal(objectMap)
1950}
1951
1952// UnmarshalJSON is the custom unmarshaler for AppServiceCertificatePatchResource struct.
1953func (ascpr *AppServiceCertificatePatchResource) UnmarshalJSON(body []byte) error {
1954	var m map[string]*json.RawMessage
1955	err := json.Unmarshal(body, &m)
1956	if err != nil {
1957		return err
1958	}
1959	for k, v := range m {
1960		switch k {
1961		case "properties":
1962			if v != nil {
1963				var appServiceCertificate AppServiceCertificate
1964				err = json.Unmarshal(*v, &appServiceCertificate)
1965				if err != nil {
1966					return err
1967				}
1968				ascpr.AppServiceCertificate = &appServiceCertificate
1969			}
1970		case "id":
1971			if v != nil {
1972				var ID string
1973				err = json.Unmarshal(*v, &ID)
1974				if err != nil {
1975					return err
1976				}
1977				ascpr.ID = &ID
1978			}
1979		case "name":
1980			if v != nil {
1981				var name string
1982				err = json.Unmarshal(*v, &name)
1983				if err != nil {
1984					return err
1985				}
1986				ascpr.Name = &name
1987			}
1988		case "kind":
1989			if v != nil {
1990				var kind string
1991				err = json.Unmarshal(*v, &kind)
1992				if err != nil {
1993					return err
1994				}
1995				ascpr.Kind = &kind
1996			}
1997		case "type":
1998			if v != nil {
1999				var typeVar string
2000				err = json.Unmarshal(*v, &typeVar)
2001				if err != nil {
2002					return err
2003				}
2004				ascpr.Type = &typeVar
2005			}
2006		}
2007	}
2008
2009	return nil
2010}
2011
2012// AppServiceCertificateResource key Vault container ARM resource for a certificate that is purchased
2013// through Azure.
2014type AppServiceCertificateResource struct {
2015	autorest.Response `json:"-"`
2016	// AppServiceCertificate - Core resource properties
2017	*AppServiceCertificate `json:"properties,omitempty"`
2018	// ID - READ-ONLY; Resource Id.
2019	ID *string `json:"id,omitempty"`
2020	// Name - READ-ONLY; Resource Name.
2021	Name *string `json:"name,omitempty"`
2022	// Kind - Kind of resource.
2023	Kind *string `json:"kind,omitempty"`
2024	// Location - Resource Location.
2025	Location *string `json:"location,omitempty"`
2026	// Type - READ-ONLY; Resource type.
2027	Type *string `json:"type,omitempty"`
2028	// Tags - Resource tags.
2029	Tags map[string]*string `json:"tags"`
2030}
2031
2032// MarshalJSON is the custom marshaler for AppServiceCertificateResource.
2033func (ascr AppServiceCertificateResource) MarshalJSON() ([]byte, error) {
2034	objectMap := make(map[string]interface{})
2035	if ascr.AppServiceCertificate != nil {
2036		objectMap["properties"] = ascr.AppServiceCertificate
2037	}
2038	if ascr.Kind != nil {
2039		objectMap["kind"] = ascr.Kind
2040	}
2041	if ascr.Location != nil {
2042		objectMap["location"] = ascr.Location
2043	}
2044	if ascr.Tags != nil {
2045		objectMap["tags"] = ascr.Tags
2046	}
2047	return json.Marshal(objectMap)
2048}
2049
2050// UnmarshalJSON is the custom unmarshaler for AppServiceCertificateResource struct.
2051func (ascr *AppServiceCertificateResource) UnmarshalJSON(body []byte) error {
2052	var m map[string]*json.RawMessage
2053	err := json.Unmarshal(body, &m)
2054	if err != nil {
2055		return err
2056	}
2057	for k, v := range m {
2058		switch k {
2059		case "properties":
2060			if v != nil {
2061				var appServiceCertificate AppServiceCertificate
2062				err = json.Unmarshal(*v, &appServiceCertificate)
2063				if err != nil {
2064					return err
2065				}
2066				ascr.AppServiceCertificate = &appServiceCertificate
2067			}
2068		case "id":
2069			if v != nil {
2070				var ID string
2071				err = json.Unmarshal(*v, &ID)
2072				if err != nil {
2073					return err
2074				}
2075				ascr.ID = &ID
2076			}
2077		case "name":
2078			if v != nil {
2079				var name string
2080				err = json.Unmarshal(*v, &name)
2081				if err != nil {
2082					return err
2083				}
2084				ascr.Name = &name
2085			}
2086		case "kind":
2087			if v != nil {
2088				var kind string
2089				err = json.Unmarshal(*v, &kind)
2090				if err != nil {
2091					return err
2092				}
2093				ascr.Kind = &kind
2094			}
2095		case "location":
2096			if v != nil {
2097				var location string
2098				err = json.Unmarshal(*v, &location)
2099				if err != nil {
2100					return err
2101				}
2102				ascr.Location = &location
2103			}
2104		case "type":
2105			if v != nil {
2106				var typeVar string
2107				err = json.Unmarshal(*v, &typeVar)
2108				if err != nil {
2109					return err
2110				}
2111				ascr.Type = &typeVar
2112			}
2113		case "tags":
2114			if v != nil {
2115				var tags map[string]*string
2116				err = json.Unmarshal(*v, &tags)
2117				if err != nil {
2118					return err
2119				}
2120				ascr.Tags = tags
2121			}
2122		}
2123	}
2124
2125	return nil
2126}
2127
2128// AppServiceEnvironment description of an App Service Environment.
2129type AppServiceEnvironment struct {
2130	// Name - Name of the App Service Environment.
2131	Name *string `json:"name,omitempty"`
2132	// Location - Location of the App Service Environment, e.g. "West US".
2133	Location *string `json:"location,omitempty"`
2134	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
2135	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
2136	// Status - READ-ONLY; Current status of the App Service Environment. Possible values include: 'Preparing', 'Ready', 'Scaling', 'Deleting'
2137	Status HostingEnvironmentStatus `json:"status,omitempty"`
2138	// VnetName - Name of the Virtual Network for the App Service Environment.
2139	VnetName *string `json:"vnetName,omitempty"`
2140	// VnetResourceGroupName - Resource group of the Virtual Network.
2141	VnetResourceGroupName *string `json:"vnetResourceGroupName,omitempty"`
2142	// VnetSubnetName - Subnet of the Virtual Network.
2143	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
2144	// VirtualNetwork - Description of the Virtual Network.
2145	VirtualNetwork *VirtualNetworkProfile `json:"virtualNetwork,omitempty"`
2146	// InternalLoadBalancingMode - Specifies which endpoints to serve internally in the Virtual Network for the App Service Environment. Possible values include: 'LoadBalancingModeNone', 'LoadBalancingModeWeb', 'LoadBalancingModePublishing', 'LoadBalancingModeWebPublishing'
2147	InternalLoadBalancingMode LoadBalancingMode `json:"internalLoadBalancingMode,omitempty"`
2148	// MultiSize - Front-end VM size, e.g. "Medium", "Large".
2149	MultiSize *string `json:"multiSize,omitempty"`
2150	// MultiRoleCount - Number of front-end instances.
2151	MultiRoleCount *int32 `json:"multiRoleCount,omitempty"`
2152	// WorkerPools - Description of worker pools with worker size IDs, VM sizes, and number of workers in each pool.
2153	WorkerPools *[]WorkerPool `json:"workerPools,omitempty"`
2154	// IpsslAddressCount - Number of IP SSL addresses reserved for the App Service Environment.
2155	IpsslAddressCount *int32 `json:"ipsslAddressCount,omitempty"`
2156	// DatabaseEdition - READ-ONLY; Edition of the metadata database for the App Service Environment, e.g. "Standard".
2157	DatabaseEdition *string `json:"databaseEdition,omitempty"`
2158	// DatabaseServiceObjective - READ-ONLY; Service objective of the metadata database for the App Service Environment, e.g. "S0".
2159	DatabaseServiceObjective *string `json:"databaseServiceObjective,omitempty"`
2160	// UpgradeDomains - READ-ONLY; Number of upgrade domains of the App Service Environment.
2161	UpgradeDomains *int32 `json:"upgradeDomains,omitempty"`
2162	// SubscriptionID - READ-ONLY; Subscription of the App Service Environment.
2163	SubscriptionID *string `json:"subscriptionId,omitempty"`
2164	// DNSSuffix - DNS suffix of the App Service Environment.
2165	DNSSuffix *string `json:"dnsSuffix,omitempty"`
2166	// LastAction - READ-ONLY; Last deployment action on the App Service Environment.
2167	LastAction *string `json:"lastAction,omitempty"`
2168	// LastActionResult - READ-ONLY; Result of the last deployment action on the App Service Environment.
2169	LastActionResult *string `json:"lastActionResult,omitempty"`
2170	// AllowedMultiSizes - READ-ONLY; List of comma separated strings describing which VM sizes are allowed for front-ends.
2171	AllowedMultiSizes *string `json:"allowedMultiSizes,omitempty"`
2172	// AllowedWorkerSizes - READ-ONLY; List of comma separated strings describing which VM sizes are allowed for workers.
2173	AllowedWorkerSizes *string `json:"allowedWorkerSizes,omitempty"`
2174	// MaximumNumberOfMachines - READ-ONLY; Maximum number of VMs in the App Service Environment.
2175	MaximumNumberOfMachines *int32 `json:"maximumNumberOfMachines,omitempty"`
2176	// VipMappings - READ-ONLY; Description of IP SSL mapping for the App Service Environment.
2177	VipMappings *[]VirtualIPMapping `json:"vipMappings,omitempty"`
2178	// EnvironmentCapacities - READ-ONLY; Current total, used, and available worker capacities.
2179	EnvironmentCapacities *[]StampCapacity `json:"environmentCapacities,omitempty"`
2180	// NetworkAccessControlList - Access control list for controlling traffic to the App Service Environment.
2181	NetworkAccessControlList *[]NetworkAccessControlEntry `json:"networkAccessControlList,omitempty"`
2182	// EnvironmentIsHealthy - READ-ONLY; True/false indicating whether the App Service Environment is healthy.
2183	EnvironmentIsHealthy *bool `json:"environmentIsHealthy,omitempty"`
2184	// EnvironmentStatus - READ-ONLY; Detailed message about with results of the last check of the App Service Environment.
2185	EnvironmentStatus *string `json:"environmentStatus,omitempty"`
2186	// ResourceGroup - READ-ONLY; Resource group of the App Service Environment.
2187	ResourceGroup *string `json:"resourceGroup,omitempty"`
2188	// FrontEndScaleFactor - Scale factor for front-ends.
2189	FrontEndScaleFactor *int32 `json:"frontEndScaleFactor,omitempty"`
2190	// DefaultFrontEndScaleFactor - READ-ONLY; Default Scale Factor for FrontEnds.
2191	DefaultFrontEndScaleFactor *int32 `json:"defaultFrontEndScaleFactor,omitempty"`
2192	// APIManagementAccountID - API Management Account associated with the App Service Environment.
2193	APIManagementAccountID *string `json:"apiManagementAccountId,omitempty"`
2194	// 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
2195	//  (most likely because NSG blocked the incoming traffic).
2196	Suspended *bool `json:"suspended,omitempty"`
2197	// 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
2198	// (most likely because NSG blocked the incoming traffic).
2199	DynamicCacheEnabled *bool `json:"dynamicCacheEnabled,omitempty"`
2200	// ClusterSettings - Custom settings for changing the behavior of the App Service Environment.
2201	ClusterSettings *[]NameValuePair `json:"clusterSettings,omitempty"`
2202	// UserWhitelistedIPRanges - User added ip ranges to whitelist on ASE db
2203	UserWhitelistedIPRanges *[]string `json:"userWhitelistedIpRanges,omitempty"`
2204	// HasLinuxWorkers - Flag that displays whether an ASE has linux workers or not
2205	HasLinuxWorkers *bool `json:"hasLinuxWorkers,omitempty"`
2206	// SslCertKeyVaultID - Key Vault ID for ILB App Service Environment default SSL certificate
2207	SslCertKeyVaultID *string `json:"sslCertKeyVaultId,omitempty"`
2208	// SslCertKeyVaultSecretName - Key Vault Secret Name for ILB App Service Environment default SSL certificate
2209	SslCertKeyVaultSecretName *string `json:"sslCertKeyVaultSecretName,omitempty"`
2210}
2211
2212// MarshalJSON is the custom marshaler for AppServiceEnvironment.
2213func (ase AppServiceEnvironment) MarshalJSON() ([]byte, error) {
2214	objectMap := make(map[string]interface{})
2215	if ase.Name != nil {
2216		objectMap["name"] = ase.Name
2217	}
2218	if ase.Location != nil {
2219		objectMap["location"] = ase.Location
2220	}
2221	if ase.VnetName != nil {
2222		objectMap["vnetName"] = ase.VnetName
2223	}
2224	if ase.VnetResourceGroupName != nil {
2225		objectMap["vnetResourceGroupName"] = ase.VnetResourceGroupName
2226	}
2227	if ase.VnetSubnetName != nil {
2228		objectMap["vnetSubnetName"] = ase.VnetSubnetName
2229	}
2230	if ase.VirtualNetwork != nil {
2231		objectMap["virtualNetwork"] = ase.VirtualNetwork
2232	}
2233	if ase.InternalLoadBalancingMode != "" {
2234		objectMap["internalLoadBalancingMode"] = ase.InternalLoadBalancingMode
2235	}
2236	if ase.MultiSize != nil {
2237		objectMap["multiSize"] = ase.MultiSize
2238	}
2239	if ase.MultiRoleCount != nil {
2240		objectMap["multiRoleCount"] = ase.MultiRoleCount
2241	}
2242	if ase.WorkerPools != nil {
2243		objectMap["workerPools"] = ase.WorkerPools
2244	}
2245	if ase.IpsslAddressCount != nil {
2246		objectMap["ipsslAddressCount"] = ase.IpsslAddressCount
2247	}
2248	if ase.DNSSuffix != nil {
2249		objectMap["dnsSuffix"] = ase.DNSSuffix
2250	}
2251	if ase.NetworkAccessControlList != nil {
2252		objectMap["networkAccessControlList"] = ase.NetworkAccessControlList
2253	}
2254	if ase.FrontEndScaleFactor != nil {
2255		objectMap["frontEndScaleFactor"] = ase.FrontEndScaleFactor
2256	}
2257	if ase.APIManagementAccountID != nil {
2258		objectMap["apiManagementAccountId"] = ase.APIManagementAccountID
2259	}
2260	if ase.Suspended != nil {
2261		objectMap["suspended"] = ase.Suspended
2262	}
2263	if ase.DynamicCacheEnabled != nil {
2264		objectMap["dynamicCacheEnabled"] = ase.DynamicCacheEnabled
2265	}
2266	if ase.ClusterSettings != nil {
2267		objectMap["clusterSettings"] = ase.ClusterSettings
2268	}
2269	if ase.UserWhitelistedIPRanges != nil {
2270		objectMap["userWhitelistedIpRanges"] = ase.UserWhitelistedIPRanges
2271	}
2272	if ase.HasLinuxWorkers != nil {
2273		objectMap["hasLinuxWorkers"] = ase.HasLinuxWorkers
2274	}
2275	if ase.SslCertKeyVaultID != nil {
2276		objectMap["sslCertKeyVaultId"] = ase.SslCertKeyVaultID
2277	}
2278	if ase.SslCertKeyVaultSecretName != nil {
2279		objectMap["sslCertKeyVaultSecretName"] = ase.SslCertKeyVaultSecretName
2280	}
2281	return json.Marshal(objectMap)
2282}
2283
2284// AppServiceEnvironmentCollection collection of App Service Environments.
2285type AppServiceEnvironmentCollection struct {
2286	autorest.Response `json:"-"`
2287	// Value - Collection of resources.
2288	Value *[]AppServiceEnvironmentResource `json:"value,omitempty"`
2289	// NextLink - READ-ONLY; Link to next page of resources.
2290	NextLink *string `json:"nextLink,omitempty"`
2291}
2292
2293// MarshalJSON is the custom marshaler for AppServiceEnvironmentCollection.
2294func (asec AppServiceEnvironmentCollection) MarshalJSON() ([]byte, error) {
2295	objectMap := make(map[string]interface{})
2296	if asec.Value != nil {
2297		objectMap["value"] = asec.Value
2298	}
2299	return json.Marshal(objectMap)
2300}
2301
2302// AppServiceEnvironmentCollectionIterator provides access to a complete listing of
2303// AppServiceEnvironmentResource values.
2304type AppServiceEnvironmentCollectionIterator struct {
2305	i    int
2306	page AppServiceEnvironmentCollectionPage
2307}
2308
2309// NextWithContext advances to the next value.  If there was an error making
2310// the request the iterator does not advance and the error is returned.
2311func (iter *AppServiceEnvironmentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2312	if tracing.IsEnabled() {
2313		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionIterator.NextWithContext")
2314		defer func() {
2315			sc := -1
2316			if iter.Response().Response.Response != nil {
2317				sc = iter.Response().Response.Response.StatusCode
2318			}
2319			tracing.EndSpan(ctx, sc, err)
2320		}()
2321	}
2322	iter.i++
2323	if iter.i < len(iter.page.Values()) {
2324		return nil
2325	}
2326	err = iter.page.NextWithContext(ctx)
2327	if err != nil {
2328		iter.i--
2329		return err
2330	}
2331	iter.i = 0
2332	return nil
2333}
2334
2335// Next advances to the next value.  If there was an error making
2336// the request the iterator does not advance and the error is returned.
2337// Deprecated: Use NextWithContext() instead.
2338func (iter *AppServiceEnvironmentCollectionIterator) Next() error {
2339	return iter.NextWithContext(context.Background())
2340}
2341
2342// NotDone returns true if the enumeration should be started or is not yet complete.
2343func (iter AppServiceEnvironmentCollectionIterator) NotDone() bool {
2344	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2345}
2346
2347// Response returns the raw server response from the last page request.
2348func (iter AppServiceEnvironmentCollectionIterator) Response() AppServiceEnvironmentCollection {
2349	return iter.page.Response()
2350}
2351
2352// Value returns the current value or a zero-initialized value if the
2353// iterator has advanced beyond the end of the collection.
2354func (iter AppServiceEnvironmentCollectionIterator) Value() AppServiceEnvironmentResource {
2355	if !iter.page.NotDone() {
2356		return AppServiceEnvironmentResource{}
2357	}
2358	return iter.page.Values()[iter.i]
2359}
2360
2361// Creates a new instance of the AppServiceEnvironmentCollectionIterator type.
2362func NewAppServiceEnvironmentCollectionIterator(page AppServiceEnvironmentCollectionPage) AppServiceEnvironmentCollectionIterator {
2363	return AppServiceEnvironmentCollectionIterator{page: page}
2364}
2365
2366// IsEmpty returns true if the ListResult contains no values.
2367func (asec AppServiceEnvironmentCollection) IsEmpty() bool {
2368	return asec.Value == nil || len(*asec.Value) == 0
2369}
2370
2371// hasNextLink returns true if the NextLink is not empty.
2372func (asec AppServiceEnvironmentCollection) hasNextLink() bool {
2373	return asec.NextLink != nil && len(*asec.NextLink) != 0
2374}
2375
2376// appServiceEnvironmentCollectionPreparer prepares a request to retrieve the next set of results.
2377// It returns nil if no more results exist.
2378func (asec AppServiceEnvironmentCollection) appServiceEnvironmentCollectionPreparer(ctx context.Context) (*http.Request, error) {
2379	if !asec.hasNextLink() {
2380		return nil, nil
2381	}
2382	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2383		autorest.AsJSON(),
2384		autorest.AsGet(),
2385		autorest.WithBaseURL(to.String(asec.NextLink)))
2386}
2387
2388// AppServiceEnvironmentCollectionPage contains a page of AppServiceEnvironmentResource values.
2389type AppServiceEnvironmentCollectionPage struct {
2390	fn   func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)
2391	asec AppServiceEnvironmentCollection
2392}
2393
2394// NextWithContext advances to the next page of values.  If there was an error making
2395// the request the page does not advance and the error is returned.
2396func (page *AppServiceEnvironmentCollectionPage) NextWithContext(ctx context.Context) (err error) {
2397	if tracing.IsEnabled() {
2398		ctx = tracing.StartSpan(ctx, fqdn+"/AppServiceEnvironmentCollectionPage.NextWithContext")
2399		defer func() {
2400			sc := -1
2401			if page.Response().Response.Response != nil {
2402				sc = page.Response().Response.Response.StatusCode
2403			}
2404			tracing.EndSpan(ctx, sc, err)
2405		}()
2406	}
2407	for {
2408		next, err := page.fn(ctx, page.asec)
2409		if err != nil {
2410			return err
2411		}
2412		page.asec = next
2413		if !next.hasNextLink() || !next.IsEmpty() {
2414			break
2415		}
2416	}
2417	return nil
2418}
2419
2420// Next advances to the next page of values.  If there was an error making
2421// the request the page does not advance and the error is returned.
2422// Deprecated: Use NextWithContext() instead.
2423func (page *AppServiceEnvironmentCollectionPage) Next() error {
2424	return page.NextWithContext(context.Background())
2425}
2426
2427// NotDone returns true if the page enumeration should be started or is not yet complete.
2428func (page AppServiceEnvironmentCollectionPage) NotDone() bool {
2429	return !page.asec.IsEmpty()
2430}
2431
2432// Response returns the raw server response from the last page request.
2433func (page AppServiceEnvironmentCollectionPage) Response() AppServiceEnvironmentCollection {
2434	return page.asec
2435}
2436
2437// Values returns the slice of values for the current page or nil if there are no values.
2438func (page AppServiceEnvironmentCollectionPage) Values() []AppServiceEnvironmentResource {
2439	if page.asec.IsEmpty() {
2440		return nil
2441	}
2442	return *page.asec.Value
2443}
2444
2445// Creates a new instance of the AppServiceEnvironmentCollectionPage type.
2446func NewAppServiceEnvironmentCollectionPage(cur AppServiceEnvironmentCollection, getNextPage func(context.Context, AppServiceEnvironmentCollection) (AppServiceEnvironmentCollection, error)) AppServiceEnvironmentCollectionPage {
2447	return AppServiceEnvironmentCollectionPage{
2448		fn:   getNextPage,
2449		asec: cur,
2450	}
2451}
2452
2453// AppServiceEnvironmentPatchResource ARM resource for a app service environment.
2454type AppServiceEnvironmentPatchResource struct {
2455	// AppServiceEnvironment - Core resource properties
2456	*AppServiceEnvironment `json:"properties,omitempty"`
2457	// ID - READ-ONLY; Resource Id.
2458	ID *string `json:"id,omitempty"`
2459	// Name - READ-ONLY; Resource Name.
2460	Name *string `json:"name,omitempty"`
2461	// Kind - Kind of resource.
2462	Kind *string `json:"kind,omitempty"`
2463	// Type - READ-ONLY; Resource type.
2464	Type *string `json:"type,omitempty"`
2465}
2466
2467// MarshalJSON is the custom marshaler for AppServiceEnvironmentPatchResource.
2468func (asepr AppServiceEnvironmentPatchResource) MarshalJSON() ([]byte, error) {
2469	objectMap := make(map[string]interface{})
2470	if asepr.AppServiceEnvironment != nil {
2471		objectMap["properties"] = asepr.AppServiceEnvironment
2472	}
2473	if asepr.Kind != nil {
2474		objectMap["kind"] = asepr.Kind
2475	}
2476	return json.Marshal(objectMap)
2477}
2478
2479// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentPatchResource struct.
2480func (asepr *AppServiceEnvironmentPatchResource) UnmarshalJSON(body []byte) error {
2481	var m map[string]*json.RawMessage
2482	err := json.Unmarshal(body, &m)
2483	if err != nil {
2484		return err
2485	}
2486	for k, v := range m {
2487		switch k {
2488		case "properties":
2489			if v != nil {
2490				var appServiceEnvironment AppServiceEnvironment
2491				err = json.Unmarshal(*v, &appServiceEnvironment)
2492				if err != nil {
2493					return err
2494				}
2495				asepr.AppServiceEnvironment = &appServiceEnvironment
2496			}
2497		case "id":
2498			if v != nil {
2499				var ID string
2500				err = json.Unmarshal(*v, &ID)
2501				if err != nil {
2502					return err
2503				}
2504				asepr.ID = &ID
2505			}
2506		case "name":
2507			if v != nil {
2508				var name string
2509				err = json.Unmarshal(*v, &name)
2510				if err != nil {
2511					return err
2512				}
2513				asepr.Name = &name
2514			}
2515		case "kind":
2516			if v != nil {
2517				var kind string
2518				err = json.Unmarshal(*v, &kind)
2519				if err != nil {
2520					return err
2521				}
2522				asepr.Kind = &kind
2523			}
2524		case "type":
2525			if v != nil {
2526				var typeVar string
2527				err = json.Unmarshal(*v, &typeVar)
2528				if err != nil {
2529					return err
2530				}
2531				asepr.Type = &typeVar
2532			}
2533		}
2534	}
2535
2536	return nil
2537}
2538
2539// AppServiceEnvironmentResource app Service Environment ARM resource.
2540type AppServiceEnvironmentResource struct {
2541	autorest.Response `json:"-"`
2542	// AppServiceEnvironment - Core resource properties
2543	*AppServiceEnvironment `json:"properties,omitempty"`
2544	// ID - READ-ONLY; Resource Id.
2545	ID *string `json:"id,omitempty"`
2546	// Name - READ-ONLY; Resource Name.
2547	Name *string `json:"name,omitempty"`
2548	// Kind - Kind of resource.
2549	Kind *string `json:"kind,omitempty"`
2550	// Location - Resource Location.
2551	Location *string `json:"location,omitempty"`
2552	// Type - READ-ONLY; Resource type.
2553	Type *string `json:"type,omitempty"`
2554	// Tags - Resource tags.
2555	Tags map[string]*string `json:"tags"`
2556}
2557
2558// MarshalJSON is the custom marshaler for AppServiceEnvironmentResource.
2559func (aser AppServiceEnvironmentResource) MarshalJSON() ([]byte, error) {
2560	objectMap := make(map[string]interface{})
2561	if aser.AppServiceEnvironment != nil {
2562		objectMap["properties"] = aser.AppServiceEnvironment
2563	}
2564	if aser.Kind != nil {
2565		objectMap["kind"] = aser.Kind
2566	}
2567	if aser.Location != nil {
2568		objectMap["location"] = aser.Location
2569	}
2570	if aser.Tags != nil {
2571		objectMap["tags"] = aser.Tags
2572	}
2573	return json.Marshal(objectMap)
2574}
2575
2576// UnmarshalJSON is the custom unmarshaler for AppServiceEnvironmentResource struct.
2577func (aser *AppServiceEnvironmentResource) UnmarshalJSON(body []byte) error {
2578	var m map[string]*json.RawMessage
2579	err := json.Unmarshal(body, &m)
2580	if err != nil {
2581		return err
2582	}
2583	for k, v := range m {
2584		switch k {
2585		case "properties":
2586			if v != nil {
2587				var appServiceEnvironment AppServiceEnvironment
2588				err = json.Unmarshal(*v, &appServiceEnvironment)
2589				if err != nil {
2590					return err
2591				}
2592				aser.AppServiceEnvironment = &appServiceEnvironment
2593			}
2594		case "id":
2595			if v != nil {
2596				var ID string
2597				err = json.Unmarshal(*v, &ID)
2598				if err != nil {
2599					return err
2600				}
2601				aser.ID = &ID
2602			}
2603		case "name":
2604			if v != nil {
2605				var name string
2606				err = json.Unmarshal(*v, &name)
2607				if err != nil {
2608					return err
2609				}
2610				aser.Name = &name
2611			}
2612		case "kind":
2613			if v != nil {
2614				var kind string
2615				err = json.Unmarshal(*v, &kind)
2616				if err != nil {
2617					return err
2618				}
2619				aser.Kind = &kind
2620			}
2621		case "location":
2622			if v != nil {
2623				var location string
2624				err = json.Unmarshal(*v, &location)
2625				if err != nil {
2626					return err
2627				}
2628				aser.Location = &location
2629			}
2630		case "type":
2631			if v != nil {
2632				var typeVar string
2633				err = json.Unmarshal(*v, &typeVar)
2634				if err != nil {
2635					return err
2636				}
2637				aser.Type = &typeVar
2638			}
2639		case "tags":
2640			if v != nil {
2641				var tags map[string]*string
2642				err = json.Unmarshal(*v, &tags)
2643				if err != nil {
2644					return err
2645				}
2646				aser.Tags = tags
2647			}
2648		}
2649	}
2650
2651	return nil
2652}
2653
2654// AppServiceEnvironmentsChangeVnetAllFuture an abstraction for monitoring and retrieving the results of a
2655// long-running operation.
2656type AppServiceEnvironmentsChangeVnetAllFuture struct {
2657	azure.FutureAPI
2658	// Result returns the result of the asynchronous operation.
2659	// If the operation has not completed it will return an error.
2660	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
2661}
2662
2663// AppServiceEnvironmentsChangeVnetFuture an abstraction for monitoring and retrieving the results of a
2664// long-running operation.
2665type AppServiceEnvironmentsChangeVnetFuture struct {
2666	azure.FutureAPI
2667	// Result returns the result of the asynchronous operation.
2668	// If the operation has not completed it will return an error.
2669	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
2670}
2671
2672// AppServiceEnvironmentsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
2673// long-running operation.
2674type AppServiceEnvironmentsCreateOrUpdateFuture struct {
2675	azure.FutureAPI
2676	// Result returns the result of the asynchronous operation.
2677	// If the operation has not completed it will return an error.
2678	Result func(AppServiceEnvironmentsClient) (AppServiceEnvironmentResource, error)
2679}
2680
2681// AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture an abstraction for monitoring and retrieving the
2682// results of a long-running operation.
2683type AppServiceEnvironmentsCreateOrUpdateMultiRolePoolFuture struct {
2684	azure.FutureAPI
2685	// Result returns the result of the asynchronous operation.
2686	// If the operation has not completed it will return an error.
2687	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
2688}
2689
2690// AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture an abstraction for monitoring and retrieving the
2691// results of a long-running operation.
2692type AppServiceEnvironmentsCreateOrUpdateWorkerPoolFuture struct {
2693	azure.FutureAPI
2694	// Result returns the result of the asynchronous operation.
2695	// If the operation has not completed it will return an error.
2696	Result func(AppServiceEnvironmentsClient) (WorkerPoolResource, error)
2697}
2698
2699// AppServiceEnvironmentsDeleteFuture an abstraction for monitoring and retrieving the results of a
2700// long-running operation.
2701type AppServiceEnvironmentsDeleteFuture struct {
2702	azure.FutureAPI
2703	// Result returns the result of the asynchronous operation.
2704	// If the operation has not completed it will return an error.
2705	Result func(AppServiceEnvironmentsClient) (autorest.Response, error)
2706}
2707
2708// AppServiceEnvironmentsResumeAllFuture an abstraction for monitoring and retrieving the results of a
2709// long-running operation.
2710type AppServiceEnvironmentsResumeAllFuture struct {
2711	azure.FutureAPI
2712	// Result returns the result of the asynchronous operation.
2713	// If the operation has not completed it will return an error.
2714	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
2715}
2716
2717// AppServiceEnvironmentsResumeFuture an abstraction for monitoring and retrieving the results of a
2718// long-running operation.
2719type AppServiceEnvironmentsResumeFuture struct {
2720	azure.FutureAPI
2721	// Result returns the result of the asynchronous operation.
2722	// If the operation has not completed it will return an error.
2723	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
2724}
2725
2726// AppServiceEnvironmentsSuspendAllFuture an abstraction for monitoring and retrieving the results of a
2727// long-running operation.
2728type AppServiceEnvironmentsSuspendAllFuture struct {
2729	azure.FutureAPI
2730	// Result returns the result of the asynchronous operation.
2731	// If the operation has not completed it will return an error.
2732	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
2733}
2734
2735// AppServiceEnvironmentsSuspendFuture an abstraction for monitoring and retrieving the results of a
2736// long-running operation.
2737type AppServiceEnvironmentsSuspendFuture struct {
2738	azure.FutureAPI
2739	// Result returns the result of the asynchronous operation.
2740	// If the operation has not completed it will return an error.
2741	Result func(AppServiceEnvironmentsClient) (AppCollectionPage, error)
2742}
2743
2744// AppServicePlan app Service plan.
2745type AppServicePlan struct {
2746	autorest.Response `json:"-"`
2747	// AppServicePlanProperties - AppServicePlan resource specific properties
2748	*AppServicePlanProperties `json:"properties,omitempty"`
2749	Sku                       *SkuDescription `json:"sku,omitempty"`
2750	// ID - READ-ONLY; Resource Id.
2751	ID *string `json:"id,omitempty"`
2752	// Name - READ-ONLY; Resource Name.
2753	Name *string `json:"name,omitempty"`
2754	// Kind - Kind of resource.
2755	Kind *string `json:"kind,omitempty"`
2756	// Location - Resource Location.
2757	Location *string `json:"location,omitempty"`
2758	// Type - READ-ONLY; Resource type.
2759	Type *string `json:"type,omitempty"`
2760	// Tags - Resource tags.
2761	Tags map[string]*string `json:"tags"`
2762}
2763
2764// MarshalJSON is the custom marshaler for AppServicePlan.
2765func (asp AppServicePlan) MarshalJSON() ([]byte, error) {
2766	objectMap := make(map[string]interface{})
2767	if asp.AppServicePlanProperties != nil {
2768		objectMap["properties"] = asp.AppServicePlanProperties
2769	}
2770	if asp.Sku != nil {
2771		objectMap["sku"] = asp.Sku
2772	}
2773	if asp.Kind != nil {
2774		objectMap["kind"] = asp.Kind
2775	}
2776	if asp.Location != nil {
2777		objectMap["location"] = asp.Location
2778	}
2779	if asp.Tags != nil {
2780		objectMap["tags"] = asp.Tags
2781	}
2782	return json.Marshal(objectMap)
2783}
2784
2785// UnmarshalJSON is the custom unmarshaler for AppServicePlan struct.
2786func (asp *AppServicePlan) UnmarshalJSON(body []byte) error {
2787	var m map[string]*json.RawMessage
2788	err := json.Unmarshal(body, &m)
2789	if err != nil {
2790		return err
2791	}
2792	for k, v := range m {
2793		switch k {
2794		case "properties":
2795			if v != nil {
2796				var appServicePlanProperties AppServicePlanProperties
2797				err = json.Unmarshal(*v, &appServicePlanProperties)
2798				if err != nil {
2799					return err
2800				}
2801				asp.AppServicePlanProperties = &appServicePlanProperties
2802			}
2803		case "sku":
2804			if v != nil {
2805				var sku SkuDescription
2806				err = json.Unmarshal(*v, &sku)
2807				if err != nil {
2808					return err
2809				}
2810				asp.Sku = &sku
2811			}
2812		case "id":
2813			if v != nil {
2814				var ID string
2815				err = json.Unmarshal(*v, &ID)
2816				if err != nil {
2817					return err
2818				}
2819				asp.ID = &ID
2820			}
2821		case "name":
2822			if v != nil {
2823				var name string
2824				err = json.Unmarshal(*v, &name)
2825				if err != nil {
2826					return err
2827				}
2828				asp.Name = &name
2829			}
2830		case "kind":
2831			if v != nil {
2832				var kind string
2833				err = json.Unmarshal(*v, &kind)
2834				if err != nil {
2835					return err
2836				}
2837				asp.Kind = &kind
2838			}
2839		case "location":
2840			if v != nil {
2841				var location string
2842				err = json.Unmarshal(*v, &location)
2843				if err != nil {
2844					return err
2845				}
2846				asp.Location = &location
2847			}
2848		case "type":
2849			if v != nil {
2850				var typeVar string
2851				err = json.Unmarshal(*v, &typeVar)
2852				if err != nil {
2853					return err
2854				}
2855				asp.Type = &typeVar
2856			}
2857		case "tags":
2858			if v != nil {
2859				var tags map[string]*string
2860				err = json.Unmarshal(*v, &tags)
2861				if err != nil {
2862					return err
2863				}
2864				asp.Tags = tags
2865			}
2866		}
2867	}
2868
2869	return nil
2870}
2871
2872// AppServicePlanCollection collection of App Service plans.
2873type AppServicePlanCollection struct {
2874	autorest.Response `json:"-"`
2875	// Value - Collection of resources.
2876	Value *[]AppServicePlan `json:"value,omitempty"`
2877	// NextLink - READ-ONLY; Link to next page of resources.
2878	NextLink *string `json:"nextLink,omitempty"`
2879}
2880
2881// MarshalJSON is the custom marshaler for AppServicePlanCollection.
2882func (aspc AppServicePlanCollection) MarshalJSON() ([]byte, error) {
2883	objectMap := make(map[string]interface{})
2884	if aspc.Value != nil {
2885		objectMap["value"] = aspc.Value
2886	}
2887	return json.Marshal(objectMap)
2888}
2889
2890// AppServicePlanCollectionIterator provides access to a complete listing of AppServicePlan values.
2891type AppServicePlanCollectionIterator struct {
2892	i    int
2893	page AppServicePlanCollectionPage
2894}
2895
2896// NextWithContext advances to the next value.  If there was an error making
2897// the request the iterator does not advance and the error is returned.
2898func (iter *AppServicePlanCollectionIterator) NextWithContext(ctx context.Context) (err error) {
2899	if tracing.IsEnabled() {
2900		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionIterator.NextWithContext")
2901		defer func() {
2902			sc := -1
2903			if iter.Response().Response.Response != nil {
2904				sc = iter.Response().Response.Response.StatusCode
2905			}
2906			tracing.EndSpan(ctx, sc, err)
2907		}()
2908	}
2909	iter.i++
2910	if iter.i < len(iter.page.Values()) {
2911		return nil
2912	}
2913	err = iter.page.NextWithContext(ctx)
2914	if err != nil {
2915		iter.i--
2916		return err
2917	}
2918	iter.i = 0
2919	return nil
2920}
2921
2922// Next advances to the next value.  If there was an error making
2923// the request the iterator does not advance and the error is returned.
2924// Deprecated: Use NextWithContext() instead.
2925func (iter *AppServicePlanCollectionIterator) Next() error {
2926	return iter.NextWithContext(context.Background())
2927}
2928
2929// NotDone returns true if the enumeration should be started or is not yet complete.
2930func (iter AppServicePlanCollectionIterator) NotDone() bool {
2931	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2932}
2933
2934// Response returns the raw server response from the last page request.
2935func (iter AppServicePlanCollectionIterator) Response() AppServicePlanCollection {
2936	return iter.page.Response()
2937}
2938
2939// Value returns the current value or a zero-initialized value if the
2940// iterator has advanced beyond the end of the collection.
2941func (iter AppServicePlanCollectionIterator) Value() AppServicePlan {
2942	if !iter.page.NotDone() {
2943		return AppServicePlan{}
2944	}
2945	return iter.page.Values()[iter.i]
2946}
2947
2948// Creates a new instance of the AppServicePlanCollectionIterator type.
2949func NewAppServicePlanCollectionIterator(page AppServicePlanCollectionPage) AppServicePlanCollectionIterator {
2950	return AppServicePlanCollectionIterator{page: page}
2951}
2952
2953// IsEmpty returns true if the ListResult contains no values.
2954func (aspc AppServicePlanCollection) IsEmpty() bool {
2955	return aspc.Value == nil || len(*aspc.Value) == 0
2956}
2957
2958// hasNextLink returns true if the NextLink is not empty.
2959func (aspc AppServicePlanCollection) hasNextLink() bool {
2960	return aspc.NextLink != nil && len(*aspc.NextLink) != 0
2961}
2962
2963// appServicePlanCollectionPreparer prepares a request to retrieve the next set of results.
2964// It returns nil if no more results exist.
2965func (aspc AppServicePlanCollection) appServicePlanCollectionPreparer(ctx context.Context) (*http.Request, error) {
2966	if !aspc.hasNextLink() {
2967		return nil, nil
2968	}
2969	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2970		autorest.AsJSON(),
2971		autorest.AsGet(),
2972		autorest.WithBaseURL(to.String(aspc.NextLink)))
2973}
2974
2975// AppServicePlanCollectionPage contains a page of AppServicePlan values.
2976type AppServicePlanCollectionPage struct {
2977	fn   func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)
2978	aspc AppServicePlanCollection
2979}
2980
2981// NextWithContext advances to the next page of values.  If there was an error making
2982// the request the page does not advance and the error is returned.
2983func (page *AppServicePlanCollectionPage) NextWithContext(ctx context.Context) (err error) {
2984	if tracing.IsEnabled() {
2985		ctx = tracing.StartSpan(ctx, fqdn+"/AppServicePlanCollectionPage.NextWithContext")
2986		defer func() {
2987			sc := -1
2988			if page.Response().Response.Response != nil {
2989				sc = page.Response().Response.Response.StatusCode
2990			}
2991			tracing.EndSpan(ctx, sc, err)
2992		}()
2993	}
2994	for {
2995		next, err := page.fn(ctx, page.aspc)
2996		if err != nil {
2997			return err
2998		}
2999		page.aspc = next
3000		if !next.hasNextLink() || !next.IsEmpty() {
3001			break
3002		}
3003	}
3004	return nil
3005}
3006
3007// Next advances to the next page of values.  If there was an error making
3008// the request the page does not advance and the error is returned.
3009// Deprecated: Use NextWithContext() instead.
3010func (page *AppServicePlanCollectionPage) Next() error {
3011	return page.NextWithContext(context.Background())
3012}
3013
3014// NotDone returns true if the page enumeration should be started or is not yet complete.
3015func (page AppServicePlanCollectionPage) NotDone() bool {
3016	return !page.aspc.IsEmpty()
3017}
3018
3019// Response returns the raw server response from the last page request.
3020func (page AppServicePlanCollectionPage) Response() AppServicePlanCollection {
3021	return page.aspc
3022}
3023
3024// Values returns the slice of values for the current page or nil if there are no values.
3025func (page AppServicePlanCollectionPage) Values() []AppServicePlan {
3026	if page.aspc.IsEmpty() {
3027		return nil
3028	}
3029	return *page.aspc.Value
3030}
3031
3032// Creates a new instance of the AppServicePlanCollectionPage type.
3033func NewAppServicePlanCollectionPage(cur AppServicePlanCollection, getNextPage func(context.Context, AppServicePlanCollection) (AppServicePlanCollection, error)) AppServicePlanCollectionPage {
3034	return AppServicePlanCollectionPage{
3035		fn:   getNextPage,
3036		aspc: cur,
3037	}
3038}
3039
3040// AppServicePlanPatchResource ARM resource for a app service plan.
3041type AppServicePlanPatchResource struct {
3042	// AppServicePlanPatchResourceProperties - AppServicePlanPatchResource resource specific properties
3043	*AppServicePlanPatchResourceProperties `json:"properties,omitempty"`
3044	// ID - READ-ONLY; Resource Id.
3045	ID *string `json:"id,omitempty"`
3046	// Name - READ-ONLY; Resource Name.
3047	Name *string `json:"name,omitempty"`
3048	// Kind - Kind of resource.
3049	Kind *string `json:"kind,omitempty"`
3050	// Type - READ-ONLY; Resource type.
3051	Type *string `json:"type,omitempty"`
3052}
3053
3054// MarshalJSON is the custom marshaler for AppServicePlanPatchResource.
3055func (asppr AppServicePlanPatchResource) MarshalJSON() ([]byte, error) {
3056	objectMap := make(map[string]interface{})
3057	if asppr.AppServicePlanPatchResourceProperties != nil {
3058		objectMap["properties"] = asppr.AppServicePlanPatchResourceProperties
3059	}
3060	if asppr.Kind != nil {
3061		objectMap["kind"] = asppr.Kind
3062	}
3063	return json.Marshal(objectMap)
3064}
3065
3066// UnmarshalJSON is the custom unmarshaler for AppServicePlanPatchResource struct.
3067func (asppr *AppServicePlanPatchResource) UnmarshalJSON(body []byte) error {
3068	var m map[string]*json.RawMessage
3069	err := json.Unmarshal(body, &m)
3070	if err != nil {
3071		return err
3072	}
3073	for k, v := range m {
3074		switch k {
3075		case "properties":
3076			if v != nil {
3077				var appServicePlanPatchResourceProperties AppServicePlanPatchResourceProperties
3078				err = json.Unmarshal(*v, &appServicePlanPatchResourceProperties)
3079				if err != nil {
3080					return err
3081				}
3082				asppr.AppServicePlanPatchResourceProperties = &appServicePlanPatchResourceProperties
3083			}
3084		case "id":
3085			if v != nil {
3086				var ID string
3087				err = json.Unmarshal(*v, &ID)
3088				if err != nil {
3089					return err
3090				}
3091				asppr.ID = &ID
3092			}
3093		case "name":
3094			if v != nil {
3095				var name string
3096				err = json.Unmarshal(*v, &name)
3097				if err != nil {
3098					return err
3099				}
3100				asppr.Name = &name
3101			}
3102		case "kind":
3103			if v != nil {
3104				var kind string
3105				err = json.Unmarshal(*v, &kind)
3106				if err != nil {
3107					return err
3108				}
3109				asppr.Kind = &kind
3110			}
3111		case "type":
3112			if v != nil {
3113				var typeVar string
3114				err = json.Unmarshal(*v, &typeVar)
3115				if err != nil {
3116					return err
3117				}
3118				asppr.Type = &typeVar
3119			}
3120		}
3121	}
3122
3123	return nil
3124}
3125
3126// AppServicePlanPatchResourceProperties appServicePlanPatchResource resource specific properties
3127type AppServicePlanPatchResourceProperties struct {
3128	// WorkerTierName - Target worker tier assigned to the App Service plan.
3129	WorkerTierName *string `json:"workerTierName,omitempty"`
3130	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
3131	Status StatusOptions `json:"status,omitempty"`
3132	// Subscription - READ-ONLY; App Service plan subscription.
3133	Subscription *string `json:"subscription,omitempty"`
3134	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
3135	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
3136	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
3137	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
3138	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
3139	GeoRegion *string `json:"geoRegion,omitempty"`
3140	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
3141	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
3142	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
3143	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
3144	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
3145	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
3146	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
3147	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
3148	IsSpot *bool `json:"isSpot,omitempty"`
3149	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
3150	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
3151	// FreeOfferExpirationTime - The time when the server farm free offer expires.
3152	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
3153	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
3154	ResourceGroup *string `json:"resourceGroup,omitempty"`
3155	// Reserved - This needs to set to <code>true</code> when creating a Linux App Service Plan, along with <code>kind</code> set to <code>Linux</code>. It should be <code>false</code> otherwise.
3156	Reserved *bool `json:"reserved,omitempty"`
3157	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
3158	IsXenon *bool `json:"isXenon,omitempty"`
3159	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
3160	HyperV *bool `json:"hyperV,omitempty"`
3161	// TargetWorkerCount - Scaling worker count.
3162	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
3163	// TargetWorkerSizeID - Scaling worker size ID.
3164	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
3165	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
3166	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
3167}
3168
3169// MarshalJSON is the custom marshaler for AppServicePlanPatchResourceProperties.
3170func (asppr AppServicePlanPatchResourceProperties) MarshalJSON() ([]byte, error) {
3171	objectMap := make(map[string]interface{})
3172	if asppr.WorkerTierName != nil {
3173		objectMap["workerTierName"] = asppr.WorkerTierName
3174	}
3175	if asppr.HostingEnvironmentProfile != nil {
3176		objectMap["hostingEnvironmentProfile"] = asppr.HostingEnvironmentProfile
3177	}
3178	if asppr.PerSiteScaling != nil {
3179		objectMap["perSiteScaling"] = asppr.PerSiteScaling
3180	}
3181	if asppr.MaximumElasticWorkerCount != nil {
3182		objectMap["maximumElasticWorkerCount"] = asppr.MaximumElasticWorkerCount
3183	}
3184	if asppr.IsSpot != nil {
3185		objectMap["isSpot"] = asppr.IsSpot
3186	}
3187	if asppr.SpotExpirationTime != nil {
3188		objectMap["spotExpirationTime"] = asppr.SpotExpirationTime
3189	}
3190	if asppr.FreeOfferExpirationTime != nil {
3191		objectMap["freeOfferExpirationTime"] = asppr.FreeOfferExpirationTime
3192	}
3193	if asppr.Reserved != nil {
3194		objectMap["reserved"] = asppr.Reserved
3195	}
3196	if asppr.IsXenon != nil {
3197		objectMap["isXenon"] = asppr.IsXenon
3198	}
3199	if asppr.HyperV != nil {
3200		objectMap["hyperV"] = asppr.HyperV
3201	}
3202	if asppr.TargetWorkerCount != nil {
3203		objectMap["targetWorkerCount"] = asppr.TargetWorkerCount
3204	}
3205	if asppr.TargetWorkerSizeID != nil {
3206		objectMap["targetWorkerSizeId"] = asppr.TargetWorkerSizeID
3207	}
3208	return json.Marshal(objectMap)
3209}
3210
3211// AppServicePlanProperties appServicePlan resource specific properties
3212type AppServicePlanProperties struct {
3213	// WorkerTierName - Target worker tier assigned to the App Service plan.
3214	WorkerTierName *string `json:"workerTierName,omitempty"`
3215	// Status - READ-ONLY; App Service plan status. Possible values include: 'StatusOptionsReady', 'StatusOptionsPending', 'StatusOptionsCreating'
3216	Status StatusOptions `json:"status,omitempty"`
3217	// Subscription - READ-ONLY; App Service plan subscription.
3218	Subscription *string `json:"subscription,omitempty"`
3219	// HostingEnvironmentProfile - Specification for the App Service Environment to use for the App Service plan.
3220	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
3221	// MaximumNumberOfWorkers - READ-ONLY; Maximum number of instances that can be assigned to this App Service plan.
3222	MaximumNumberOfWorkers *int32 `json:"maximumNumberOfWorkers,omitempty"`
3223	// GeoRegion - READ-ONLY; Geographical location for the App Service plan.
3224	GeoRegion *string `json:"geoRegion,omitempty"`
3225	// PerSiteScaling - If <code>true</code>, apps assigned to this App Service plan can be scaled independently.
3226	// If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.
3227	PerSiteScaling *bool `json:"perSiteScaling,omitempty"`
3228	// MaximumElasticWorkerCount - Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan
3229	MaximumElasticWorkerCount *int32 `json:"maximumElasticWorkerCount,omitempty"`
3230	// NumberOfSites - READ-ONLY; Number of apps assigned to this App Service plan.
3231	NumberOfSites *int32 `json:"numberOfSites,omitempty"`
3232	// IsSpot - If <code>true</code>, this App Service Plan owns spot instances.
3233	IsSpot *bool `json:"isSpot,omitempty"`
3234	// SpotExpirationTime - The time when the server farm expires. Valid only if it is a spot server farm.
3235	SpotExpirationTime *date.Time `json:"spotExpirationTime,omitempty"`
3236	// FreeOfferExpirationTime - The time when the server farm free offer expires.
3237	FreeOfferExpirationTime *date.Time `json:"freeOfferExpirationTime,omitempty"`
3238	// ResourceGroup - READ-ONLY; Resource group of the App Service plan.
3239	ResourceGroup *string `json:"resourceGroup,omitempty"`
3240	// Reserved - If Linux app service plan <code>true</code>, <code>false</code> otherwise.
3241	Reserved *bool `json:"reserved,omitempty"`
3242	// IsXenon - Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
3243	IsXenon *bool `json:"isXenon,omitempty"`
3244	// HyperV - If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.
3245	HyperV *bool `json:"hyperV,omitempty"`
3246	// TargetWorkerCount - Scaling worker count.
3247	TargetWorkerCount *int32 `json:"targetWorkerCount,omitempty"`
3248	// TargetWorkerSizeID - Scaling worker size ID.
3249	TargetWorkerSizeID *int32 `json:"targetWorkerSizeId,omitempty"`
3250	// ProvisioningState - READ-ONLY; Provisioning state of the App Service Environment. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
3251	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
3252}
3253
3254// MarshalJSON is the custom marshaler for AppServicePlanProperties.
3255func (asp AppServicePlanProperties) MarshalJSON() ([]byte, error) {
3256	objectMap := make(map[string]interface{})
3257	if asp.WorkerTierName != nil {
3258		objectMap["workerTierName"] = asp.WorkerTierName
3259	}
3260	if asp.HostingEnvironmentProfile != nil {
3261		objectMap["hostingEnvironmentProfile"] = asp.HostingEnvironmentProfile
3262	}
3263	if asp.PerSiteScaling != nil {
3264		objectMap["perSiteScaling"] = asp.PerSiteScaling
3265	}
3266	if asp.MaximumElasticWorkerCount != nil {
3267		objectMap["maximumElasticWorkerCount"] = asp.MaximumElasticWorkerCount
3268	}
3269	if asp.IsSpot != nil {
3270		objectMap["isSpot"] = asp.IsSpot
3271	}
3272	if asp.SpotExpirationTime != nil {
3273		objectMap["spotExpirationTime"] = asp.SpotExpirationTime
3274	}
3275	if asp.FreeOfferExpirationTime != nil {
3276		objectMap["freeOfferExpirationTime"] = asp.FreeOfferExpirationTime
3277	}
3278	if asp.Reserved != nil {
3279		objectMap["reserved"] = asp.Reserved
3280	}
3281	if asp.IsXenon != nil {
3282		objectMap["isXenon"] = asp.IsXenon
3283	}
3284	if asp.HyperV != nil {
3285		objectMap["hyperV"] = asp.HyperV
3286	}
3287	if asp.TargetWorkerCount != nil {
3288		objectMap["targetWorkerCount"] = asp.TargetWorkerCount
3289	}
3290	if asp.TargetWorkerSizeID != nil {
3291		objectMap["targetWorkerSizeId"] = asp.TargetWorkerSizeID
3292	}
3293	return json.Marshal(objectMap)
3294}
3295
3296// AppServicePlansCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
3297// long-running operation.
3298type AppServicePlansCreateOrUpdateFuture struct {
3299	azure.FutureAPI
3300	// Result returns the result of the asynchronous operation.
3301	// If the operation has not completed it will return an error.
3302	Result func(AppServicePlansClient) (AppServicePlan, error)
3303}
3304
3305// AppsInstallSiteExtensionFuture an abstraction for monitoring and retrieving the results of a
3306// long-running operation.
3307type AppsInstallSiteExtensionFuture struct {
3308	azure.FutureAPI
3309	// Result returns the result of the asynchronous operation.
3310	// If the operation has not completed it will return an error.
3311	Result func(AppsClient) (SiteExtensionInfo, error)
3312}
3313
3314// AppsInstallSiteExtensionSlotFuture an abstraction for monitoring and retrieving the results of a
3315// long-running operation.
3316type AppsInstallSiteExtensionSlotFuture struct {
3317	azure.FutureAPI
3318	// Result returns the result of the asynchronous operation.
3319	// If the operation has not completed it will return an error.
3320	Result func(AppsClient) (SiteExtensionInfo, error)
3321}
3322
3323// AppsListPublishingCredentialsFuture an abstraction for monitoring and retrieving the results of a
3324// long-running operation.
3325type AppsListPublishingCredentialsFuture struct {
3326	azure.FutureAPI
3327	// Result returns the result of the asynchronous operation.
3328	// If the operation has not completed it will return an error.
3329	Result func(AppsClient) (User, error)
3330}
3331
3332// AppsListPublishingCredentialsSlotFuture an abstraction for monitoring and retrieving the results of a
3333// long-running operation.
3334type AppsListPublishingCredentialsSlotFuture struct {
3335	azure.FutureAPI
3336	// Result returns the result of the asynchronous operation.
3337	// If the operation has not completed it will return an error.
3338	Result func(AppsClient) (User, error)
3339}
3340
3341// AppsMigrateMySQLFuture an abstraction for monitoring and retrieving the results of a long-running
3342// operation.
3343type AppsMigrateMySQLFuture struct {
3344	azure.FutureAPI
3345	// Result returns the result of the asynchronous operation.
3346	// If the operation has not completed it will return an error.
3347	Result func(AppsClient) (Operation, error)
3348}
3349
3350// AppsMigrateStorageFuture an abstraction for monitoring and retrieving the results of a long-running
3351// operation.
3352type AppsMigrateStorageFuture struct {
3353	azure.FutureAPI
3354	// Result returns the result of the asynchronous operation.
3355	// If the operation has not completed it will return an error.
3356	Result func(AppsClient) (StorageMigrationResponse, error)
3357}
3358
3359// AppsRestoreFromBackupBlobFuture an abstraction for monitoring and retrieving the results of a
3360// long-running operation.
3361type AppsRestoreFromBackupBlobFuture struct {
3362	azure.FutureAPI
3363	// Result returns the result of the asynchronous operation.
3364	// If the operation has not completed it will return an error.
3365	Result func(AppsClient) (autorest.Response, error)
3366}
3367
3368// AppsRestoreFromBackupBlobSlotFuture an abstraction for monitoring and retrieving the results of a
3369// long-running operation.
3370type AppsRestoreFromBackupBlobSlotFuture struct {
3371	azure.FutureAPI
3372	// Result returns the result of the asynchronous operation.
3373	// If the operation has not completed it will return an error.
3374	Result func(AppsClient) (autorest.Response, error)
3375}
3376
3377// AppsRestoreFromDeletedAppFuture an abstraction for monitoring and retrieving the results of a
3378// long-running operation.
3379type AppsRestoreFromDeletedAppFuture struct {
3380	azure.FutureAPI
3381	// Result returns the result of the asynchronous operation.
3382	// If the operation has not completed it will return an error.
3383	Result func(AppsClient) (autorest.Response, error)
3384}
3385
3386// AppsRestoreFromDeletedAppSlotFuture an abstraction for monitoring and retrieving the results of a
3387// long-running operation.
3388type AppsRestoreFromDeletedAppSlotFuture struct {
3389	azure.FutureAPI
3390	// Result returns the result of the asynchronous operation.
3391	// If the operation has not completed it will return an error.
3392	Result func(AppsClient) (autorest.Response, error)
3393}
3394
3395// AppsRestoreFuture an abstraction for monitoring and retrieving the results of a long-running operation.
3396type AppsRestoreFuture struct {
3397	azure.FutureAPI
3398	// Result returns the result of the asynchronous operation.
3399	// If the operation has not completed it will return an error.
3400	Result func(AppsClient) (autorest.Response, error)
3401}
3402
3403// AppsRestoreSlotFuture an abstraction for monitoring and retrieving the results of a long-running
3404// operation.
3405type AppsRestoreSlotFuture struct {
3406	azure.FutureAPI
3407	// Result returns the result of the asynchronous operation.
3408	// If the operation has not completed it will return an error.
3409	Result func(AppsClient) (autorest.Response, error)
3410}
3411
3412// AppsRestoreSnapshotFuture an abstraction for monitoring and retrieving the results of a long-running
3413// operation.
3414type AppsRestoreSnapshotFuture struct {
3415	azure.FutureAPI
3416	// Result returns the result of the asynchronous operation.
3417	// If the operation has not completed it will return an error.
3418	Result func(AppsClient) (autorest.Response, error)
3419}
3420
3421// AppsRestoreSnapshotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
3422// operation.
3423type AppsRestoreSnapshotSlotFuture struct {
3424	azure.FutureAPI
3425	// Result returns the result of the asynchronous operation.
3426	// If the operation has not completed it will return an error.
3427	Result func(AppsClient) (autorest.Response, error)
3428}
3429
3430// AppsStartNetworkTraceFuture an abstraction for monitoring and retrieving the results of a long-running
3431// operation.
3432type AppsStartNetworkTraceFuture struct {
3433	azure.FutureAPI
3434	// Result returns the result of the asynchronous operation.
3435	// If the operation has not completed it will return an error.
3436	Result func(AppsClient) (ListNetworkTrace, error)
3437}
3438
3439// AppsStartNetworkTraceSlotFuture an abstraction for monitoring and retrieving the results of a
3440// long-running operation.
3441type AppsStartNetworkTraceSlotFuture struct {
3442	azure.FutureAPI
3443	// Result returns the result of the asynchronous operation.
3444	// If the operation has not completed it will return an error.
3445	Result func(AppsClient) (ListNetworkTrace, error)
3446}
3447
3448// AppsStartWebSiteNetworkTraceOperationFuture an abstraction for monitoring and retrieving the results of
3449// a long-running operation.
3450type AppsStartWebSiteNetworkTraceOperationFuture struct {
3451	azure.FutureAPI
3452	// Result returns the result of the asynchronous operation.
3453	// If the operation has not completed it will return an error.
3454	Result func(AppsClient) (ListNetworkTrace, error)
3455}
3456
3457// AppsStartWebSiteNetworkTraceOperationSlotFuture an abstraction for monitoring and retrieving the results
3458// of a long-running operation.
3459type AppsStartWebSiteNetworkTraceOperationSlotFuture struct {
3460	azure.FutureAPI
3461	// Result returns the result of the asynchronous operation.
3462	// If the operation has not completed it will return an error.
3463	Result func(AppsClient) (ListNetworkTrace, error)
3464}
3465
3466// AppsSwapSlotSlotFuture an abstraction for monitoring and retrieving the results of a long-running
3467// operation.
3468type AppsSwapSlotSlotFuture struct {
3469	azure.FutureAPI
3470	// Result returns the result of the asynchronous operation.
3471	// If the operation has not completed it will return an error.
3472	Result func(AppsClient) (autorest.Response, error)
3473}
3474
3475// AppsSwapSlotWithProductionFuture an abstraction for monitoring and retrieving the results of a
3476// long-running operation.
3477type AppsSwapSlotWithProductionFuture struct {
3478	azure.FutureAPI
3479	// Result returns the result of the asynchronous operation.
3480	// If the operation has not completed it will return an error.
3481	Result func(AppsClient) (autorest.Response, error)
3482}
3483
3484// ArmIDWrapper a wrapper for an ARM resource id
3485type ArmIDWrapper struct {
3486	// ID - READ-ONLY
3487	ID *string `json:"id,omitempty"`
3488}
3489
3490// AuthPlatform ...
3491type AuthPlatform struct {
3492	// AuthPlatformProperties - AuthPlatform resource specific properties
3493	*AuthPlatformProperties `json:"properties,omitempty"`
3494	// ID - READ-ONLY; Resource Id.
3495	ID *string `json:"id,omitempty"`
3496	// Name - READ-ONLY; Resource Name.
3497	Name *string `json:"name,omitempty"`
3498	// Kind - Kind of resource.
3499	Kind *string `json:"kind,omitempty"`
3500	// Type - READ-ONLY; Resource type.
3501	Type *string `json:"type,omitempty"`
3502}
3503
3504// MarshalJSON is the custom marshaler for AuthPlatform.
3505func (ap AuthPlatform) MarshalJSON() ([]byte, error) {
3506	objectMap := make(map[string]interface{})
3507	if ap.AuthPlatformProperties != nil {
3508		objectMap["properties"] = ap.AuthPlatformProperties
3509	}
3510	if ap.Kind != nil {
3511		objectMap["kind"] = ap.Kind
3512	}
3513	return json.Marshal(objectMap)
3514}
3515
3516// UnmarshalJSON is the custom unmarshaler for AuthPlatform struct.
3517func (ap *AuthPlatform) UnmarshalJSON(body []byte) error {
3518	var m map[string]*json.RawMessage
3519	err := json.Unmarshal(body, &m)
3520	if err != nil {
3521		return err
3522	}
3523	for k, v := range m {
3524		switch k {
3525		case "properties":
3526			if v != nil {
3527				var authPlatformProperties AuthPlatformProperties
3528				err = json.Unmarshal(*v, &authPlatformProperties)
3529				if err != nil {
3530					return err
3531				}
3532				ap.AuthPlatformProperties = &authPlatformProperties
3533			}
3534		case "id":
3535			if v != nil {
3536				var ID string
3537				err = json.Unmarshal(*v, &ID)
3538				if err != nil {
3539					return err
3540				}
3541				ap.ID = &ID
3542			}
3543		case "name":
3544			if v != nil {
3545				var name string
3546				err = json.Unmarshal(*v, &name)
3547				if err != nil {
3548					return err
3549				}
3550				ap.Name = &name
3551			}
3552		case "kind":
3553			if v != nil {
3554				var kind string
3555				err = json.Unmarshal(*v, &kind)
3556				if err != nil {
3557					return err
3558				}
3559				ap.Kind = &kind
3560			}
3561		case "type":
3562			if v != nil {
3563				var typeVar string
3564				err = json.Unmarshal(*v, &typeVar)
3565				if err != nil {
3566					return err
3567				}
3568				ap.Type = &typeVar
3569			}
3570		}
3571	}
3572
3573	return nil
3574}
3575
3576// AuthPlatformProperties authPlatform resource specific properties
3577type AuthPlatformProperties struct {
3578	Enabled        *bool   `json:"enabled,omitempty"`
3579	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
3580	ConfigFilePath *string `json:"configFilePath,omitempty"`
3581}
3582
3583// AutoHealActions actions which to take by the auto-heal module when a rule is triggered.
3584type AutoHealActions struct {
3585	// ActionType - Predefined action to be taken. Possible values include: 'Recycle', 'LogEvent', 'CustomAction'
3586	ActionType AutoHealActionType `json:"actionType,omitempty"`
3587	// CustomAction - Custom action to be taken.
3588	CustomAction *AutoHealCustomAction `json:"customAction,omitempty"`
3589	// MinProcessExecutionTime - Minimum time the process must execute
3590	// before taking the action
3591	MinProcessExecutionTime *string `json:"minProcessExecutionTime,omitempty"`
3592}
3593
3594// AutoHealCustomAction custom action to be executed
3595// when an auto heal rule is triggered.
3596type AutoHealCustomAction struct {
3597	// Exe - Executable to be run.
3598	Exe *string `json:"exe,omitempty"`
3599	// Parameters - Parameters for the executable.
3600	Parameters *string `json:"parameters,omitempty"`
3601}
3602
3603// AutoHealRules rules that can be defined for auto-heal.
3604type AutoHealRules struct {
3605	// Triggers - Conditions that describe when to execute the auto-heal actions.
3606	Triggers *AutoHealTriggers `json:"triggers,omitempty"`
3607	// Actions - Actions to be executed when a rule is triggered.
3608	Actions *AutoHealActions `json:"actions,omitempty"`
3609}
3610
3611// AutoHealTriggers triggers for auto-heal.
3612type AutoHealTriggers struct {
3613	// Requests - A rule based on total requests.
3614	Requests *RequestsBasedTrigger `json:"requests,omitempty"`
3615	// PrivateBytesInKB - A rule based on private bytes.
3616	PrivateBytesInKB *int32 `json:"privateBytesInKB,omitempty"`
3617	// StatusCodes - A rule based on status codes.
3618	StatusCodes *[]StatusCodesBasedTrigger `json:"statusCodes,omitempty"`
3619	// SlowRequests - A rule based on request execution time.
3620	SlowRequests *SlowRequestsBasedTrigger `json:"slowRequests,omitempty"`
3621}
3622
3623// AzureActiveDirectory ...
3624type AzureActiveDirectory struct {
3625	// AzureActiveDirectoryProperties - AzureActiveDirectory resource specific properties
3626	*AzureActiveDirectoryProperties `json:"properties,omitempty"`
3627	// ID - READ-ONLY; Resource Id.
3628	ID *string `json:"id,omitempty"`
3629	// Name - READ-ONLY; Resource Name.
3630	Name *string `json:"name,omitempty"`
3631	// Kind - Kind of resource.
3632	Kind *string `json:"kind,omitempty"`
3633	// Type - READ-ONLY; Resource type.
3634	Type *string `json:"type,omitempty"`
3635}
3636
3637// MarshalJSON is the custom marshaler for AzureActiveDirectory.
3638func (aad AzureActiveDirectory) MarshalJSON() ([]byte, error) {
3639	objectMap := make(map[string]interface{})
3640	if aad.AzureActiveDirectoryProperties != nil {
3641		objectMap["properties"] = aad.AzureActiveDirectoryProperties
3642	}
3643	if aad.Kind != nil {
3644		objectMap["kind"] = aad.Kind
3645	}
3646	return json.Marshal(objectMap)
3647}
3648
3649// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectory struct.
3650func (aad *AzureActiveDirectory) UnmarshalJSON(body []byte) error {
3651	var m map[string]*json.RawMessage
3652	err := json.Unmarshal(body, &m)
3653	if err != nil {
3654		return err
3655	}
3656	for k, v := range m {
3657		switch k {
3658		case "properties":
3659			if v != nil {
3660				var azureActiveDirectoryProperties AzureActiveDirectoryProperties
3661				err = json.Unmarshal(*v, &azureActiveDirectoryProperties)
3662				if err != nil {
3663					return err
3664				}
3665				aad.AzureActiveDirectoryProperties = &azureActiveDirectoryProperties
3666			}
3667		case "id":
3668			if v != nil {
3669				var ID string
3670				err = json.Unmarshal(*v, &ID)
3671				if err != nil {
3672					return err
3673				}
3674				aad.ID = &ID
3675			}
3676		case "name":
3677			if v != nil {
3678				var name string
3679				err = json.Unmarshal(*v, &name)
3680				if err != nil {
3681					return err
3682				}
3683				aad.Name = &name
3684			}
3685		case "kind":
3686			if v != nil {
3687				var kind string
3688				err = json.Unmarshal(*v, &kind)
3689				if err != nil {
3690					return err
3691				}
3692				aad.Kind = &kind
3693			}
3694		case "type":
3695			if v != nil {
3696				var typeVar string
3697				err = json.Unmarshal(*v, &typeVar)
3698				if err != nil {
3699					return err
3700				}
3701				aad.Type = &typeVar
3702			}
3703		}
3704	}
3705
3706	return nil
3707}
3708
3709// AzureActiveDirectoryLogin ...
3710type AzureActiveDirectoryLogin struct {
3711	// AzureActiveDirectoryLoginProperties - AzureActiveDirectoryLogin resource specific properties
3712	*AzureActiveDirectoryLoginProperties `json:"properties,omitempty"`
3713	// ID - READ-ONLY; Resource Id.
3714	ID *string `json:"id,omitempty"`
3715	// Name - READ-ONLY; Resource Name.
3716	Name *string `json:"name,omitempty"`
3717	// Kind - Kind of resource.
3718	Kind *string `json:"kind,omitempty"`
3719	// Type - READ-ONLY; Resource type.
3720	Type *string `json:"type,omitempty"`
3721}
3722
3723// MarshalJSON is the custom marshaler for AzureActiveDirectoryLogin.
3724func (aadl AzureActiveDirectoryLogin) MarshalJSON() ([]byte, error) {
3725	objectMap := make(map[string]interface{})
3726	if aadl.AzureActiveDirectoryLoginProperties != nil {
3727		objectMap["properties"] = aadl.AzureActiveDirectoryLoginProperties
3728	}
3729	if aadl.Kind != nil {
3730		objectMap["kind"] = aadl.Kind
3731	}
3732	return json.Marshal(objectMap)
3733}
3734
3735// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryLogin struct.
3736func (aadl *AzureActiveDirectoryLogin) UnmarshalJSON(body []byte) error {
3737	var m map[string]*json.RawMessage
3738	err := json.Unmarshal(body, &m)
3739	if err != nil {
3740		return err
3741	}
3742	for k, v := range m {
3743		switch k {
3744		case "properties":
3745			if v != nil {
3746				var azureActiveDirectoryLoginProperties AzureActiveDirectoryLoginProperties
3747				err = json.Unmarshal(*v, &azureActiveDirectoryLoginProperties)
3748				if err != nil {
3749					return err
3750				}
3751				aadl.AzureActiveDirectoryLoginProperties = &azureActiveDirectoryLoginProperties
3752			}
3753		case "id":
3754			if v != nil {
3755				var ID string
3756				err = json.Unmarshal(*v, &ID)
3757				if err != nil {
3758					return err
3759				}
3760				aadl.ID = &ID
3761			}
3762		case "name":
3763			if v != nil {
3764				var name string
3765				err = json.Unmarshal(*v, &name)
3766				if err != nil {
3767					return err
3768				}
3769				aadl.Name = &name
3770			}
3771		case "kind":
3772			if v != nil {
3773				var kind string
3774				err = json.Unmarshal(*v, &kind)
3775				if err != nil {
3776					return err
3777				}
3778				aadl.Kind = &kind
3779			}
3780		case "type":
3781			if v != nil {
3782				var typeVar string
3783				err = json.Unmarshal(*v, &typeVar)
3784				if err != nil {
3785					return err
3786				}
3787				aadl.Type = &typeVar
3788			}
3789		}
3790	}
3791
3792	return nil
3793}
3794
3795// AzureActiveDirectoryLoginProperties azureActiveDirectoryLogin resource specific properties
3796type AzureActiveDirectoryLoginProperties struct {
3797	DisableWWWAuthenticate *bool     `json:"disableWWWAuthenticate,omitempty"`
3798	LoginParameters        *[]string `json:"loginParameters,omitempty"`
3799}
3800
3801// AzureActiveDirectoryProperties azureActiveDirectory resource specific properties
3802type AzureActiveDirectoryProperties struct {
3803	Enabled           *bool                             `json:"enabled,omitempty"`
3804	Registration      *AzureActiveDirectoryRegistration `json:"registration,omitempty"`
3805	Login             *AzureActiveDirectoryLogin        `json:"login,omitempty"`
3806	Validation        *AzureActiveDirectoryValidation   `json:"validation,omitempty"`
3807	IsAutoProvisioned *bool                             `json:"isAutoProvisioned,omitempty"`
3808}
3809
3810// AzureActiveDirectoryRegistration ...
3811type AzureActiveDirectoryRegistration struct {
3812	// AzureActiveDirectoryRegistrationProperties - AzureActiveDirectoryRegistration resource specific properties
3813	*AzureActiveDirectoryRegistrationProperties `json:"properties,omitempty"`
3814	// ID - READ-ONLY; Resource Id.
3815	ID *string `json:"id,omitempty"`
3816	// Name - READ-ONLY; Resource Name.
3817	Name *string `json:"name,omitempty"`
3818	// Kind - Kind of resource.
3819	Kind *string `json:"kind,omitempty"`
3820	// Type - READ-ONLY; Resource type.
3821	Type *string `json:"type,omitempty"`
3822}
3823
3824// MarshalJSON is the custom marshaler for AzureActiveDirectoryRegistration.
3825func (aadr AzureActiveDirectoryRegistration) MarshalJSON() ([]byte, error) {
3826	objectMap := make(map[string]interface{})
3827	if aadr.AzureActiveDirectoryRegistrationProperties != nil {
3828		objectMap["properties"] = aadr.AzureActiveDirectoryRegistrationProperties
3829	}
3830	if aadr.Kind != nil {
3831		objectMap["kind"] = aadr.Kind
3832	}
3833	return json.Marshal(objectMap)
3834}
3835
3836// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryRegistration struct.
3837func (aadr *AzureActiveDirectoryRegistration) UnmarshalJSON(body []byte) error {
3838	var m map[string]*json.RawMessage
3839	err := json.Unmarshal(body, &m)
3840	if err != nil {
3841		return err
3842	}
3843	for k, v := range m {
3844		switch k {
3845		case "properties":
3846			if v != nil {
3847				var azureActiveDirectoryRegistrationProperties AzureActiveDirectoryRegistrationProperties
3848				err = json.Unmarshal(*v, &azureActiveDirectoryRegistrationProperties)
3849				if err != nil {
3850					return err
3851				}
3852				aadr.AzureActiveDirectoryRegistrationProperties = &azureActiveDirectoryRegistrationProperties
3853			}
3854		case "id":
3855			if v != nil {
3856				var ID string
3857				err = json.Unmarshal(*v, &ID)
3858				if err != nil {
3859					return err
3860				}
3861				aadr.ID = &ID
3862			}
3863		case "name":
3864			if v != nil {
3865				var name string
3866				err = json.Unmarshal(*v, &name)
3867				if err != nil {
3868					return err
3869				}
3870				aadr.Name = &name
3871			}
3872		case "kind":
3873			if v != nil {
3874				var kind string
3875				err = json.Unmarshal(*v, &kind)
3876				if err != nil {
3877					return err
3878				}
3879				aadr.Kind = &kind
3880			}
3881		case "type":
3882			if v != nil {
3883				var typeVar string
3884				err = json.Unmarshal(*v, &typeVar)
3885				if err != nil {
3886					return err
3887				}
3888				aadr.Type = &typeVar
3889			}
3890		}
3891	}
3892
3893	return nil
3894}
3895
3896// AzureActiveDirectoryRegistrationProperties azureActiveDirectoryRegistration resource specific properties
3897type AzureActiveDirectoryRegistrationProperties struct {
3898	OpenIDIssuer                      *string `json:"openIdIssuer,omitempty"`
3899	ClientID                          *string `json:"clientId,omitempty"`
3900	ClientSecretSettingName           *string `json:"clientSecretSettingName,omitempty"`
3901	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
3902}
3903
3904// AzureActiveDirectoryValidation ...
3905type AzureActiveDirectoryValidation struct {
3906	// AzureActiveDirectoryValidationProperties - AzureActiveDirectoryValidation resource specific properties
3907	*AzureActiveDirectoryValidationProperties `json:"properties,omitempty"`
3908	// ID - READ-ONLY; Resource Id.
3909	ID *string `json:"id,omitempty"`
3910	// Name - READ-ONLY; Resource Name.
3911	Name *string `json:"name,omitempty"`
3912	// Kind - Kind of resource.
3913	Kind *string `json:"kind,omitempty"`
3914	// Type - READ-ONLY; Resource type.
3915	Type *string `json:"type,omitempty"`
3916}
3917
3918// MarshalJSON is the custom marshaler for AzureActiveDirectoryValidation.
3919func (aadv AzureActiveDirectoryValidation) MarshalJSON() ([]byte, error) {
3920	objectMap := make(map[string]interface{})
3921	if aadv.AzureActiveDirectoryValidationProperties != nil {
3922		objectMap["properties"] = aadv.AzureActiveDirectoryValidationProperties
3923	}
3924	if aadv.Kind != nil {
3925		objectMap["kind"] = aadv.Kind
3926	}
3927	return json.Marshal(objectMap)
3928}
3929
3930// UnmarshalJSON is the custom unmarshaler for AzureActiveDirectoryValidation struct.
3931func (aadv *AzureActiveDirectoryValidation) UnmarshalJSON(body []byte) error {
3932	var m map[string]*json.RawMessage
3933	err := json.Unmarshal(body, &m)
3934	if err != nil {
3935		return err
3936	}
3937	for k, v := range m {
3938		switch k {
3939		case "properties":
3940			if v != nil {
3941				var azureActiveDirectoryValidationProperties AzureActiveDirectoryValidationProperties
3942				err = json.Unmarshal(*v, &azureActiveDirectoryValidationProperties)
3943				if err != nil {
3944					return err
3945				}
3946				aadv.AzureActiveDirectoryValidationProperties = &azureActiveDirectoryValidationProperties
3947			}
3948		case "id":
3949			if v != nil {
3950				var ID string
3951				err = json.Unmarshal(*v, &ID)
3952				if err != nil {
3953					return err
3954				}
3955				aadv.ID = &ID
3956			}
3957		case "name":
3958			if v != nil {
3959				var name string
3960				err = json.Unmarshal(*v, &name)
3961				if err != nil {
3962					return err
3963				}
3964				aadv.Name = &name
3965			}
3966		case "kind":
3967			if v != nil {
3968				var kind string
3969				err = json.Unmarshal(*v, &kind)
3970				if err != nil {
3971					return err
3972				}
3973				aadv.Kind = &kind
3974			}
3975		case "type":
3976			if v != nil {
3977				var typeVar string
3978				err = json.Unmarshal(*v, &typeVar)
3979				if err != nil {
3980					return err
3981				}
3982				aadv.Type = &typeVar
3983			}
3984		}
3985	}
3986
3987	return nil
3988}
3989
3990// AzureActiveDirectoryValidationProperties azureActiveDirectoryValidation resource specific properties
3991type AzureActiveDirectoryValidationProperties struct {
3992	JwtClaimChecks   *JwtClaimChecks `json:"jwtClaimChecks,omitempty"`
3993	AllowedAudiences *[]string       `json:"allowedAudiences,omitempty"`
3994}
3995
3996// AzureBlobStorageApplicationLogsConfig application logs azure blob storage configuration.
3997type AzureBlobStorageApplicationLogsConfig struct {
3998	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
3999	Level LogLevel `json:"level,omitempty"`
4000	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
4001	SasURL *string `json:"sasUrl,omitempty"`
4002	// RetentionInDays - Retention in days.
4003	// Remove blobs older than X days.
4004	// 0 or lower means no retention.
4005	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
4006}
4007
4008// AzureBlobStorageHTTPLogsConfig http logs to azure blob storage configuration.
4009type AzureBlobStorageHTTPLogsConfig struct {
4010	// SasURL - SAS url to a azure blob container with read/write/list/delete permissions.
4011	SasURL *string `json:"sasUrl,omitempty"`
4012	// RetentionInDays - Retention in days.
4013	// Remove blobs older than X days.
4014	// 0 or lower means no retention.
4015	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
4016	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
4017	Enabled *bool `json:"enabled,omitempty"`
4018}
4019
4020// AzureStorageInfoValue azure Files or Blob Storage access information value for dictionary storage.
4021type AzureStorageInfoValue struct {
4022	// Type - Type of storage. Possible values include: 'AzureFiles', 'AzureBlob'
4023	Type AzureStorageType `json:"type,omitempty"`
4024	// AccountName - Name of the storage account.
4025	AccountName *string `json:"accountName,omitempty"`
4026	// ShareName - Name of the file share (container name, for Blob storage).
4027	ShareName *string `json:"shareName,omitempty"`
4028	// AccessKey - Access key for the storage account.
4029	AccessKey *string `json:"accessKey,omitempty"`
4030	// MountPath - Path to mount the storage within the site's runtime environment.
4031	MountPath *string `json:"mountPath,omitempty"`
4032	// State - READ-ONLY; State of the storage account. Possible values include: 'Ok', 'InvalidCredentials', 'InvalidShare'
4033	State AzureStorageState `json:"state,omitempty"`
4034}
4035
4036// MarshalJSON is the custom marshaler for AzureStorageInfoValue.
4037func (asiv AzureStorageInfoValue) MarshalJSON() ([]byte, error) {
4038	objectMap := make(map[string]interface{})
4039	if asiv.Type != "" {
4040		objectMap["type"] = asiv.Type
4041	}
4042	if asiv.AccountName != nil {
4043		objectMap["accountName"] = asiv.AccountName
4044	}
4045	if asiv.ShareName != nil {
4046		objectMap["shareName"] = asiv.ShareName
4047	}
4048	if asiv.AccessKey != nil {
4049		objectMap["accessKey"] = asiv.AccessKey
4050	}
4051	if asiv.MountPath != nil {
4052		objectMap["mountPath"] = asiv.MountPath
4053	}
4054	return json.Marshal(objectMap)
4055}
4056
4057// AzureStoragePropertyDictionaryResource azureStorageInfo dictionary resource.
4058type AzureStoragePropertyDictionaryResource struct {
4059	autorest.Response `json:"-"`
4060	// Properties - Azure storage accounts.
4061	Properties map[string]*AzureStorageInfoValue `json:"properties"`
4062	// ID - READ-ONLY; Resource Id.
4063	ID *string `json:"id,omitempty"`
4064	// Name - READ-ONLY; Resource Name.
4065	Name *string `json:"name,omitempty"`
4066	// Kind - Kind of resource.
4067	Kind *string `json:"kind,omitempty"`
4068	// Type - READ-ONLY; Resource type.
4069	Type *string `json:"type,omitempty"`
4070}
4071
4072// MarshalJSON is the custom marshaler for AzureStoragePropertyDictionaryResource.
4073func (aspdr AzureStoragePropertyDictionaryResource) MarshalJSON() ([]byte, error) {
4074	objectMap := make(map[string]interface{})
4075	if aspdr.Properties != nil {
4076		objectMap["properties"] = aspdr.Properties
4077	}
4078	if aspdr.Kind != nil {
4079		objectMap["kind"] = aspdr.Kind
4080	}
4081	return json.Marshal(objectMap)
4082}
4083
4084// AzureTableStorageApplicationLogsConfig application logs to Azure table storage configuration.
4085type AzureTableStorageApplicationLogsConfig struct {
4086	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
4087	Level LogLevel `json:"level,omitempty"`
4088	// SasURL - SAS URL to an Azure table with add/query/delete permissions.
4089	SasURL *string `json:"sasUrl,omitempty"`
4090}
4091
4092// BackupItem backup description.
4093type BackupItem struct {
4094	autorest.Response `json:"-"`
4095	// BackupItemProperties - BackupItem resource specific properties
4096	*BackupItemProperties `json:"properties,omitempty"`
4097	// ID - READ-ONLY; Resource Id.
4098	ID *string `json:"id,omitempty"`
4099	// Name - READ-ONLY; Resource Name.
4100	Name *string `json:"name,omitempty"`
4101	// Kind - Kind of resource.
4102	Kind *string `json:"kind,omitempty"`
4103	// Type - READ-ONLY; Resource type.
4104	Type *string `json:"type,omitempty"`
4105}
4106
4107// MarshalJSON is the custom marshaler for BackupItem.
4108func (bi BackupItem) MarshalJSON() ([]byte, error) {
4109	objectMap := make(map[string]interface{})
4110	if bi.BackupItemProperties != nil {
4111		objectMap["properties"] = bi.BackupItemProperties
4112	}
4113	if bi.Kind != nil {
4114		objectMap["kind"] = bi.Kind
4115	}
4116	return json.Marshal(objectMap)
4117}
4118
4119// UnmarshalJSON is the custom unmarshaler for BackupItem struct.
4120func (bi *BackupItem) UnmarshalJSON(body []byte) error {
4121	var m map[string]*json.RawMessage
4122	err := json.Unmarshal(body, &m)
4123	if err != nil {
4124		return err
4125	}
4126	for k, v := range m {
4127		switch k {
4128		case "properties":
4129			if v != nil {
4130				var backupItemProperties BackupItemProperties
4131				err = json.Unmarshal(*v, &backupItemProperties)
4132				if err != nil {
4133					return err
4134				}
4135				bi.BackupItemProperties = &backupItemProperties
4136			}
4137		case "id":
4138			if v != nil {
4139				var ID string
4140				err = json.Unmarshal(*v, &ID)
4141				if err != nil {
4142					return err
4143				}
4144				bi.ID = &ID
4145			}
4146		case "name":
4147			if v != nil {
4148				var name string
4149				err = json.Unmarshal(*v, &name)
4150				if err != nil {
4151					return err
4152				}
4153				bi.Name = &name
4154			}
4155		case "kind":
4156			if v != nil {
4157				var kind string
4158				err = json.Unmarshal(*v, &kind)
4159				if err != nil {
4160					return err
4161				}
4162				bi.Kind = &kind
4163			}
4164		case "type":
4165			if v != nil {
4166				var typeVar string
4167				err = json.Unmarshal(*v, &typeVar)
4168				if err != nil {
4169					return err
4170				}
4171				bi.Type = &typeVar
4172			}
4173		}
4174	}
4175
4176	return nil
4177}
4178
4179// BackupItemCollection collection of backup items.
4180type BackupItemCollection struct {
4181	autorest.Response `json:"-"`
4182	// Value - Collection of resources.
4183	Value *[]BackupItem `json:"value,omitempty"`
4184	// NextLink - READ-ONLY; Link to next page of resources.
4185	NextLink *string `json:"nextLink,omitempty"`
4186}
4187
4188// MarshalJSON is the custom marshaler for BackupItemCollection.
4189func (bic BackupItemCollection) MarshalJSON() ([]byte, error) {
4190	objectMap := make(map[string]interface{})
4191	if bic.Value != nil {
4192		objectMap["value"] = bic.Value
4193	}
4194	return json.Marshal(objectMap)
4195}
4196
4197// BackupItemCollectionIterator provides access to a complete listing of BackupItem values.
4198type BackupItemCollectionIterator struct {
4199	i    int
4200	page BackupItemCollectionPage
4201}
4202
4203// NextWithContext advances to the next value.  If there was an error making
4204// the request the iterator does not advance and the error is returned.
4205func (iter *BackupItemCollectionIterator) NextWithContext(ctx context.Context) (err error) {
4206	if tracing.IsEnabled() {
4207		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionIterator.NextWithContext")
4208		defer func() {
4209			sc := -1
4210			if iter.Response().Response.Response != nil {
4211				sc = iter.Response().Response.Response.StatusCode
4212			}
4213			tracing.EndSpan(ctx, sc, err)
4214		}()
4215	}
4216	iter.i++
4217	if iter.i < len(iter.page.Values()) {
4218		return nil
4219	}
4220	err = iter.page.NextWithContext(ctx)
4221	if err != nil {
4222		iter.i--
4223		return err
4224	}
4225	iter.i = 0
4226	return nil
4227}
4228
4229// Next advances to the next value.  If there was an error making
4230// the request the iterator does not advance and the error is returned.
4231// Deprecated: Use NextWithContext() instead.
4232func (iter *BackupItemCollectionIterator) Next() error {
4233	return iter.NextWithContext(context.Background())
4234}
4235
4236// NotDone returns true if the enumeration should be started or is not yet complete.
4237func (iter BackupItemCollectionIterator) NotDone() bool {
4238	return iter.page.NotDone() && iter.i < len(iter.page.Values())
4239}
4240
4241// Response returns the raw server response from the last page request.
4242func (iter BackupItemCollectionIterator) Response() BackupItemCollection {
4243	return iter.page.Response()
4244}
4245
4246// Value returns the current value or a zero-initialized value if the
4247// iterator has advanced beyond the end of the collection.
4248func (iter BackupItemCollectionIterator) Value() BackupItem {
4249	if !iter.page.NotDone() {
4250		return BackupItem{}
4251	}
4252	return iter.page.Values()[iter.i]
4253}
4254
4255// Creates a new instance of the BackupItemCollectionIterator type.
4256func NewBackupItemCollectionIterator(page BackupItemCollectionPage) BackupItemCollectionIterator {
4257	return BackupItemCollectionIterator{page: page}
4258}
4259
4260// IsEmpty returns true if the ListResult contains no values.
4261func (bic BackupItemCollection) IsEmpty() bool {
4262	return bic.Value == nil || len(*bic.Value) == 0
4263}
4264
4265// hasNextLink returns true if the NextLink is not empty.
4266func (bic BackupItemCollection) hasNextLink() bool {
4267	return bic.NextLink != nil && len(*bic.NextLink) != 0
4268}
4269
4270// backupItemCollectionPreparer prepares a request to retrieve the next set of results.
4271// It returns nil if no more results exist.
4272func (bic BackupItemCollection) backupItemCollectionPreparer(ctx context.Context) (*http.Request, error) {
4273	if !bic.hasNextLink() {
4274		return nil, nil
4275	}
4276	return autorest.Prepare((&http.Request{}).WithContext(ctx),
4277		autorest.AsJSON(),
4278		autorest.AsGet(),
4279		autorest.WithBaseURL(to.String(bic.NextLink)))
4280}
4281
4282// BackupItemCollectionPage contains a page of BackupItem values.
4283type BackupItemCollectionPage struct {
4284	fn  func(context.Context, BackupItemCollection) (BackupItemCollection, error)
4285	bic BackupItemCollection
4286}
4287
4288// NextWithContext advances to the next page of values.  If there was an error making
4289// the request the page does not advance and the error is returned.
4290func (page *BackupItemCollectionPage) NextWithContext(ctx context.Context) (err error) {
4291	if tracing.IsEnabled() {
4292		ctx = tracing.StartSpan(ctx, fqdn+"/BackupItemCollectionPage.NextWithContext")
4293		defer func() {
4294			sc := -1
4295			if page.Response().Response.Response != nil {
4296				sc = page.Response().Response.Response.StatusCode
4297			}
4298			tracing.EndSpan(ctx, sc, err)
4299		}()
4300	}
4301	for {
4302		next, err := page.fn(ctx, page.bic)
4303		if err != nil {
4304			return err
4305		}
4306		page.bic = next
4307		if !next.hasNextLink() || !next.IsEmpty() {
4308			break
4309		}
4310	}
4311	return nil
4312}
4313
4314// Next advances to the next page of values.  If there was an error making
4315// the request the page does not advance and the error is returned.
4316// Deprecated: Use NextWithContext() instead.
4317func (page *BackupItemCollectionPage) Next() error {
4318	return page.NextWithContext(context.Background())
4319}
4320
4321// NotDone returns true if the page enumeration should be started or is not yet complete.
4322func (page BackupItemCollectionPage) NotDone() bool {
4323	return !page.bic.IsEmpty()
4324}
4325
4326// Response returns the raw server response from the last page request.
4327func (page BackupItemCollectionPage) Response() BackupItemCollection {
4328	return page.bic
4329}
4330
4331// Values returns the slice of values for the current page or nil if there are no values.
4332func (page BackupItemCollectionPage) Values() []BackupItem {
4333	if page.bic.IsEmpty() {
4334		return nil
4335	}
4336	return *page.bic.Value
4337}
4338
4339// Creates a new instance of the BackupItemCollectionPage type.
4340func NewBackupItemCollectionPage(cur BackupItemCollection, getNextPage func(context.Context, BackupItemCollection) (BackupItemCollection, error)) BackupItemCollectionPage {
4341	return BackupItemCollectionPage{
4342		fn:  getNextPage,
4343		bic: cur,
4344	}
4345}
4346
4347// BackupItemProperties backupItem resource specific properties
4348type BackupItemProperties struct {
4349	// BackupID - READ-ONLY; Id of the backup.
4350	BackupID *int32 `json:"id,omitempty"`
4351	// StorageAccountURL - READ-ONLY; SAS URL for the storage account container which contains this backup.
4352	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
4353	// BlobName - READ-ONLY; Name of the blob which contains data for this backup.
4354	BlobName *string `json:"blobName,omitempty"`
4355	// Name - READ-ONLY; Name of this backup.
4356	Name *string `json:"name,omitempty"`
4357	// Status - READ-ONLY; Backup status. Possible values include: 'InProgress', 'Failed', 'Succeeded', 'TimedOut', 'Created', 'Skipped', 'PartiallySucceeded', 'DeleteInProgress', 'DeleteFailed', 'Deleted'
4358	Status BackupItemStatus `json:"status,omitempty"`
4359	// SizeInBytes - READ-ONLY; Size of the backup in bytes.
4360	SizeInBytes *int64 `json:"sizeInBytes,omitempty"`
4361	// Created - READ-ONLY; Timestamp of the backup creation.
4362	Created *date.Time `json:"created,omitempty"`
4363	// Log - READ-ONLY; Details regarding this backup. Might contain an error message.
4364	Log *string `json:"log,omitempty"`
4365	// Databases - READ-ONLY; List of databases included in the backup.
4366	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
4367	// Scheduled - READ-ONLY; True if this backup has been created due to a schedule being triggered.
4368	Scheduled *bool `json:"scheduled,omitempty"`
4369	// LastRestoreTimeStamp - READ-ONLY; Timestamp of a last restore operation which used this backup.
4370	LastRestoreTimeStamp *date.Time `json:"lastRestoreTimeStamp,omitempty"`
4371	// FinishedTimeStamp - READ-ONLY; Timestamp when this backup finished.
4372	FinishedTimeStamp *date.Time `json:"finishedTimeStamp,omitempty"`
4373	// CorrelationID - READ-ONLY; Unique correlation identifier. Please use this along with the timestamp while communicating with Azure support.
4374	CorrelationID *string `json:"correlationId,omitempty"`
4375	// WebsiteSizeInBytes - READ-ONLY; Size of the original web app which has been backed up.
4376	WebsiteSizeInBytes *int64 `json:"websiteSizeInBytes,omitempty"`
4377}
4378
4379// BackupRequest description of a backup which will be performed.
4380type BackupRequest struct {
4381	autorest.Response `json:"-"`
4382	// BackupRequestProperties - BackupRequest resource specific properties
4383	*BackupRequestProperties `json:"properties,omitempty"`
4384	// ID - READ-ONLY; Resource Id.
4385	ID *string `json:"id,omitempty"`
4386	// Name - READ-ONLY; Resource Name.
4387	Name *string `json:"name,omitempty"`
4388	// Kind - Kind of resource.
4389	Kind *string `json:"kind,omitempty"`
4390	// Type - READ-ONLY; Resource type.
4391	Type *string `json:"type,omitempty"`
4392}
4393
4394// MarshalJSON is the custom marshaler for BackupRequest.
4395func (br BackupRequest) MarshalJSON() ([]byte, error) {
4396	objectMap := make(map[string]interface{})
4397	if br.BackupRequestProperties != nil {
4398		objectMap["properties"] = br.BackupRequestProperties
4399	}
4400	if br.Kind != nil {
4401		objectMap["kind"] = br.Kind
4402	}
4403	return json.Marshal(objectMap)
4404}
4405
4406// UnmarshalJSON is the custom unmarshaler for BackupRequest struct.
4407func (br *BackupRequest) UnmarshalJSON(body []byte) error {
4408	var m map[string]*json.RawMessage
4409	err := json.Unmarshal(body, &m)
4410	if err != nil {
4411		return err
4412	}
4413	for k, v := range m {
4414		switch k {
4415		case "properties":
4416			if v != nil {
4417				var backupRequestProperties BackupRequestProperties
4418				err = json.Unmarshal(*v, &backupRequestProperties)
4419				if err != nil {
4420					return err
4421				}
4422				br.BackupRequestProperties = &backupRequestProperties
4423			}
4424		case "id":
4425			if v != nil {
4426				var ID string
4427				err = json.Unmarshal(*v, &ID)
4428				if err != nil {
4429					return err
4430				}
4431				br.ID = &ID
4432			}
4433		case "name":
4434			if v != nil {
4435				var name string
4436				err = json.Unmarshal(*v, &name)
4437				if err != nil {
4438					return err
4439				}
4440				br.Name = &name
4441			}
4442		case "kind":
4443			if v != nil {
4444				var kind string
4445				err = json.Unmarshal(*v, &kind)
4446				if err != nil {
4447					return err
4448				}
4449				br.Kind = &kind
4450			}
4451		case "type":
4452			if v != nil {
4453				var typeVar string
4454				err = json.Unmarshal(*v, &typeVar)
4455				if err != nil {
4456					return err
4457				}
4458				br.Type = &typeVar
4459			}
4460		}
4461	}
4462
4463	return nil
4464}
4465
4466// BackupRequestProperties backupRequest resource specific properties
4467type BackupRequestProperties struct {
4468	// BackupName - Name of the backup.
4469	BackupName *string `json:"backupName,omitempty"`
4470	// Enabled - True if the backup schedule is enabled (must be included in that case), false if the backup schedule should be disabled.
4471	Enabled *bool `json:"enabled,omitempty"`
4472	// StorageAccountURL - SAS URL to the container.
4473	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
4474	// BackupSchedule - Schedule for the backup if it is executed periodically.
4475	BackupSchedule *BackupSchedule `json:"backupSchedule,omitempty"`
4476	// Databases - Databases included in the backup.
4477	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
4478}
4479
4480// BackupSchedule description of a backup schedule. Describes how often should be the backup performed and
4481// what should be the retention policy.
4482type BackupSchedule struct {
4483	// 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)
4484	FrequencyInterval *int32 `json:"frequencyInterval,omitempty"`
4485	// 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'
4486	FrequencyUnit FrequencyUnit `json:"frequencyUnit,omitempty"`
4487	// KeepAtLeastOneBackup - True if the retention policy should always keep at least one backup in the storage account, regardless how old it is; false otherwise.
4488	KeepAtLeastOneBackup *bool `json:"keepAtLeastOneBackup,omitempty"`
4489	// RetentionPeriodInDays - After how many days backups should be deleted.
4490	RetentionPeriodInDays *int32 `json:"retentionPeriodInDays,omitempty"`
4491	// StartTime - When the schedule should start working.
4492	StartTime *date.Time `json:"startTime,omitempty"`
4493	// LastExecutionTime - READ-ONLY; Last time when this schedule was triggered.
4494	LastExecutionTime *date.Time `json:"lastExecutionTime,omitempty"`
4495}
4496
4497// MarshalJSON is the custom marshaler for BackupSchedule.
4498func (bs BackupSchedule) MarshalJSON() ([]byte, error) {
4499	objectMap := make(map[string]interface{})
4500	if bs.FrequencyInterval != nil {
4501		objectMap["frequencyInterval"] = bs.FrequencyInterval
4502	}
4503	if bs.FrequencyUnit != "" {
4504		objectMap["frequencyUnit"] = bs.FrequencyUnit
4505	}
4506	if bs.KeepAtLeastOneBackup != nil {
4507		objectMap["keepAtLeastOneBackup"] = bs.KeepAtLeastOneBackup
4508	}
4509	if bs.RetentionPeriodInDays != nil {
4510		objectMap["retentionPeriodInDays"] = bs.RetentionPeriodInDays
4511	}
4512	if bs.StartTime != nil {
4513		objectMap["startTime"] = bs.StartTime
4514	}
4515	return json.Marshal(objectMap)
4516}
4517
4518// BillingMeter app Service billing entity that contains information about meter which the Azure billing
4519// system utilizes to charge users for services.
4520type BillingMeter struct {
4521	// BillingMeterProperties - BillingMeter resource specific properties
4522	*BillingMeterProperties `json:"properties,omitempty"`
4523	// ID - READ-ONLY; Resource Id.
4524	ID *string `json:"id,omitempty"`
4525	// Name - READ-ONLY; Resource Name.
4526	Name *string `json:"name,omitempty"`
4527	// Kind - Kind of resource.
4528	Kind *string `json:"kind,omitempty"`
4529	// Type - READ-ONLY; Resource type.
4530	Type *string `json:"type,omitempty"`
4531}
4532
4533// MarshalJSON is the custom marshaler for BillingMeter.
4534func (bm BillingMeter) MarshalJSON() ([]byte, error) {
4535	objectMap := make(map[string]interface{})
4536	if bm.BillingMeterProperties != nil {
4537		objectMap["properties"] = bm.BillingMeterProperties
4538	}
4539	if bm.Kind != nil {
4540		objectMap["kind"] = bm.Kind
4541	}
4542	return json.Marshal(objectMap)
4543}
4544
4545// UnmarshalJSON is the custom unmarshaler for BillingMeter struct.
4546func (bm *BillingMeter) UnmarshalJSON(body []byte) error {
4547	var m map[string]*json.RawMessage
4548	err := json.Unmarshal(body, &m)
4549	if err != nil {
4550		return err
4551	}
4552	for k, v := range m {
4553		switch k {
4554		case "properties":
4555			if v != nil {
4556				var billingMeterProperties BillingMeterProperties
4557				err = json.Unmarshal(*v, &billingMeterProperties)
4558				if err != nil {
4559					return err
4560				}
4561				bm.BillingMeterProperties = &billingMeterProperties
4562			}
4563		case "id":
4564			if v != nil {
4565				var ID string
4566				err = json.Unmarshal(*v, &ID)
4567				if err != nil {
4568					return err
4569				}
4570				bm.ID = &ID
4571			}
4572		case "name":
4573			if v != nil {
4574				var name string
4575				err = json.Unmarshal(*v, &name)
4576				if err != nil {
4577					return err
4578				}
4579				bm.Name = &name
4580			}
4581		case "kind":
4582			if v != nil {
4583				var kind string
4584				err = json.Unmarshal(*v, &kind)
4585				if err != nil {
4586					return err
4587				}
4588				bm.Kind = &kind
4589			}
4590		case "type":
4591			if v != nil {
4592				var typeVar string
4593				err = json.Unmarshal(*v, &typeVar)
4594				if err != nil {
4595					return err
4596				}
4597				bm.Type = &typeVar
4598			}
4599		}
4600	}
4601
4602	return nil
4603}
4604
4605// BillingMeterCollection collection of Billing Meters
4606type BillingMeterCollection struct {
4607	autorest.Response `json:"-"`
4608	// Value - Collection of resources.
4609	Value *[]BillingMeter `json:"value,omitempty"`
4610	// NextLink - READ-ONLY; Link to next page of resources.
4611	NextLink *string `json:"nextLink,omitempty"`
4612}
4613
4614// MarshalJSON is the custom marshaler for BillingMeterCollection.
4615func (bmc BillingMeterCollection) MarshalJSON() ([]byte, error) {
4616	objectMap := make(map[string]interface{})
4617	if bmc.Value != nil {
4618		objectMap["value"] = bmc.Value
4619	}
4620	return json.Marshal(objectMap)
4621}
4622
4623// BillingMeterCollectionIterator provides access to a complete listing of BillingMeter values.
4624type BillingMeterCollectionIterator struct {
4625	i    int
4626	page BillingMeterCollectionPage
4627}
4628
4629// NextWithContext advances to the next value.  If there was an error making
4630// the request the iterator does not advance and the error is returned.
4631func (iter *BillingMeterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
4632	if tracing.IsEnabled() {
4633		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionIterator.NextWithContext")
4634		defer func() {
4635			sc := -1
4636			if iter.Response().Response.Response != nil {
4637				sc = iter.Response().Response.Response.StatusCode
4638			}
4639			tracing.EndSpan(ctx, sc, err)
4640		}()
4641	}
4642	iter.i++
4643	if iter.i < len(iter.page.Values()) {
4644		return nil
4645	}
4646	err = iter.page.NextWithContext(ctx)
4647	if err != nil {
4648		iter.i--
4649		return err
4650	}
4651	iter.i = 0
4652	return nil
4653}
4654
4655// Next advances to the next value.  If there was an error making
4656// the request the iterator does not advance and the error is returned.
4657// Deprecated: Use NextWithContext() instead.
4658func (iter *BillingMeterCollectionIterator) Next() error {
4659	return iter.NextWithContext(context.Background())
4660}
4661
4662// NotDone returns true if the enumeration should be started or is not yet complete.
4663func (iter BillingMeterCollectionIterator) NotDone() bool {
4664	return iter.page.NotDone() && iter.i < len(iter.page.Values())
4665}
4666
4667// Response returns the raw server response from the last page request.
4668func (iter BillingMeterCollectionIterator) Response() BillingMeterCollection {
4669	return iter.page.Response()
4670}
4671
4672// Value returns the current value or a zero-initialized value if the
4673// iterator has advanced beyond the end of the collection.
4674func (iter BillingMeterCollectionIterator) Value() BillingMeter {
4675	if !iter.page.NotDone() {
4676		return BillingMeter{}
4677	}
4678	return iter.page.Values()[iter.i]
4679}
4680
4681// Creates a new instance of the BillingMeterCollectionIterator type.
4682func NewBillingMeterCollectionIterator(page BillingMeterCollectionPage) BillingMeterCollectionIterator {
4683	return BillingMeterCollectionIterator{page: page}
4684}
4685
4686// IsEmpty returns true if the ListResult contains no values.
4687func (bmc BillingMeterCollection) IsEmpty() bool {
4688	return bmc.Value == nil || len(*bmc.Value) == 0
4689}
4690
4691// hasNextLink returns true if the NextLink is not empty.
4692func (bmc BillingMeterCollection) hasNextLink() bool {
4693	return bmc.NextLink != nil && len(*bmc.NextLink) != 0
4694}
4695
4696// billingMeterCollectionPreparer prepares a request to retrieve the next set of results.
4697// It returns nil if no more results exist.
4698func (bmc BillingMeterCollection) billingMeterCollectionPreparer(ctx context.Context) (*http.Request, error) {
4699	if !bmc.hasNextLink() {
4700		return nil, nil
4701	}
4702	return autorest.Prepare((&http.Request{}).WithContext(ctx),
4703		autorest.AsJSON(),
4704		autorest.AsGet(),
4705		autorest.WithBaseURL(to.String(bmc.NextLink)))
4706}
4707
4708// BillingMeterCollectionPage contains a page of BillingMeter values.
4709type BillingMeterCollectionPage struct {
4710	fn  func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)
4711	bmc BillingMeterCollection
4712}
4713
4714// NextWithContext advances to the next page of values.  If there was an error making
4715// the request the page does not advance and the error is returned.
4716func (page *BillingMeterCollectionPage) NextWithContext(ctx context.Context) (err error) {
4717	if tracing.IsEnabled() {
4718		ctx = tracing.StartSpan(ctx, fqdn+"/BillingMeterCollectionPage.NextWithContext")
4719		defer func() {
4720			sc := -1
4721			if page.Response().Response.Response != nil {
4722				sc = page.Response().Response.Response.StatusCode
4723			}
4724			tracing.EndSpan(ctx, sc, err)
4725		}()
4726	}
4727	for {
4728		next, err := page.fn(ctx, page.bmc)
4729		if err != nil {
4730			return err
4731		}
4732		page.bmc = next
4733		if !next.hasNextLink() || !next.IsEmpty() {
4734			break
4735		}
4736	}
4737	return nil
4738}
4739
4740// Next advances to the next page of values.  If there was an error making
4741// the request the page does not advance and the error is returned.
4742// Deprecated: Use NextWithContext() instead.
4743func (page *BillingMeterCollectionPage) Next() error {
4744	return page.NextWithContext(context.Background())
4745}
4746
4747// NotDone returns true if the page enumeration should be started or is not yet complete.
4748func (page BillingMeterCollectionPage) NotDone() bool {
4749	return !page.bmc.IsEmpty()
4750}
4751
4752// Response returns the raw server response from the last page request.
4753func (page BillingMeterCollectionPage) Response() BillingMeterCollection {
4754	return page.bmc
4755}
4756
4757// Values returns the slice of values for the current page or nil if there are no values.
4758func (page BillingMeterCollectionPage) Values() []BillingMeter {
4759	if page.bmc.IsEmpty() {
4760		return nil
4761	}
4762	return *page.bmc.Value
4763}
4764
4765// Creates a new instance of the BillingMeterCollectionPage type.
4766func NewBillingMeterCollectionPage(cur BillingMeterCollection, getNextPage func(context.Context, BillingMeterCollection) (BillingMeterCollection, error)) BillingMeterCollectionPage {
4767	return BillingMeterCollectionPage{
4768		fn:  getNextPage,
4769		bmc: cur,
4770	}
4771}
4772
4773// BillingMeterProperties billingMeter resource specific properties
4774type BillingMeterProperties struct {
4775	// MeterID - Meter GUID onboarded in Commerce
4776	MeterID *string `json:"meterId,omitempty"`
4777	// BillingLocation - Azure Location of billable resource
4778	BillingLocation *string `json:"billingLocation,omitempty"`
4779	// ShortName - Short Name from App Service Azure pricing Page
4780	ShortName *string `json:"shortName,omitempty"`
4781	// FriendlyName - Friendly name of the meter
4782	FriendlyName *string `json:"friendlyName,omitempty"`
4783	// ResourceType - App Service ResourceType meter used for
4784	ResourceType *string `json:"resourceType,omitempty"`
4785	// OsType - App Service OS type meter used for
4786	OsType *string `json:"osType,omitempty"`
4787}
4788
4789// BlobStorageTokenStore ...
4790type BlobStorageTokenStore struct {
4791	// BlobStorageTokenStoreProperties - BlobStorageTokenStore resource specific properties
4792	*BlobStorageTokenStoreProperties `json:"properties,omitempty"`
4793	// ID - READ-ONLY; Resource Id.
4794	ID *string `json:"id,omitempty"`
4795	// Name - READ-ONLY; Resource Name.
4796	Name *string `json:"name,omitempty"`
4797	// Kind - Kind of resource.
4798	Kind *string `json:"kind,omitempty"`
4799	// Type - READ-ONLY; Resource type.
4800	Type *string `json:"type,omitempty"`
4801}
4802
4803// MarshalJSON is the custom marshaler for BlobStorageTokenStore.
4804func (bsts BlobStorageTokenStore) MarshalJSON() ([]byte, error) {
4805	objectMap := make(map[string]interface{})
4806	if bsts.BlobStorageTokenStoreProperties != nil {
4807		objectMap["properties"] = bsts.BlobStorageTokenStoreProperties
4808	}
4809	if bsts.Kind != nil {
4810		objectMap["kind"] = bsts.Kind
4811	}
4812	return json.Marshal(objectMap)
4813}
4814
4815// UnmarshalJSON is the custom unmarshaler for BlobStorageTokenStore struct.
4816func (bsts *BlobStorageTokenStore) UnmarshalJSON(body []byte) error {
4817	var m map[string]*json.RawMessage
4818	err := json.Unmarshal(body, &m)
4819	if err != nil {
4820		return err
4821	}
4822	for k, v := range m {
4823		switch k {
4824		case "properties":
4825			if v != nil {
4826				var blobStorageTokenStoreProperties BlobStorageTokenStoreProperties
4827				err = json.Unmarshal(*v, &blobStorageTokenStoreProperties)
4828				if err != nil {
4829					return err
4830				}
4831				bsts.BlobStorageTokenStoreProperties = &blobStorageTokenStoreProperties
4832			}
4833		case "id":
4834			if v != nil {
4835				var ID string
4836				err = json.Unmarshal(*v, &ID)
4837				if err != nil {
4838					return err
4839				}
4840				bsts.ID = &ID
4841			}
4842		case "name":
4843			if v != nil {
4844				var name string
4845				err = json.Unmarshal(*v, &name)
4846				if err != nil {
4847					return err
4848				}
4849				bsts.Name = &name
4850			}
4851		case "kind":
4852			if v != nil {
4853				var kind string
4854				err = json.Unmarshal(*v, &kind)
4855				if err != nil {
4856					return err
4857				}
4858				bsts.Kind = &kind
4859			}
4860		case "type":
4861			if v != nil {
4862				var typeVar string
4863				err = json.Unmarshal(*v, &typeVar)
4864				if err != nil {
4865					return err
4866				}
4867				bsts.Type = &typeVar
4868			}
4869		}
4870	}
4871
4872	return nil
4873}
4874
4875// BlobStorageTokenStoreProperties blobStorageTokenStore resource specific properties
4876type BlobStorageTokenStoreProperties struct {
4877	SasURLSettingName *string `json:"sasUrlSettingName,omitempty"`
4878}
4879
4880// Capability describes the capabilities/features allowed for a specific SKU.
4881type Capability struct {
4882	// Name - Name of the SKU capability.
4883	Name *string `json:"name,omitempty"`
4884	// Value - Value of the SKU capability.
4885	Value *string `json:"value,omitempty"`
4886	// Reason - Reason of the SKU capability.
4887	Reason *string `json:"reason,omitempty"`
4888}
4889
4890// Certificate SSL certificate for an app.
4891type Certificate struct {
4892	autorest.Response `json:"-"`
4893	// CertificateProperties - Certificate resource specific properties
4894	*CertificateProperties `json:"properties,omitempty"`
4895	// ID - READ-ONLY; Resource Id.
4896	ID *string `json:"id,omitempty"`
4897	// Name - READ-ONLY; Resource Name.
4898	Name *string `json:"name,omitempty"`
4899	// Kind - Kind of resource.
4900	Kind *string `json:"kind,omitempty"`
4901	// Location - Resource Location.
4902	Location *string `json:"location,omitempty"`
4903	// Type - READ-ONLY; Resource type.
4904	Type *string `json:"type,omitempty"`
4905	// Tags - Resource tags.
4906	Tags map[string]*string `json:"tags"`
4907}
4908
4909// MarshalJSON is the custom marshaler for Certificate.
4910func (c Certificate) MarshalJSON() ([]byte, error) {
4911	objectMap := make(map[string]interface{})
4912	if c.CertificateProperties != nil {
4913		objectMap["properties"] = c.CertificateProperties
4914	}
4915	if c.Kind != nil {
4916		objectMap["kind"] = c.Kind
4917	}
4918	if c.Location != nil {
4919		objectMap["location"] = c.Location
4920	}
4921	if c.Tags != nil {
4922		objectMap["tags"] = c.Tags
4923	}
4924	return json.Marshal(objectMap)
4925}
4926
4927// UnmarshalJSON is the custom unmarshaler for Certificate struct.
4928func (c *Certificate) UnmarshalJSON(body []byte) error {
4929	var m map[string]*json.RawMessage
4930	err := json.Unmarshal(body, &m)
4931	if err != nil {
4932		return err
4933	}
4934	for k, v := range m {
4935		switch k {
4936		case "properties":
4937			if v != nil {
4938				var certificateProperties CertificateProperties
4939				err = json.Unmarshal(*v, &certificateProperties)
4940				if err != nil {
4941					return err
4942				}
4943				c.CertificateProperties = &certificateProperties
4944			}
4945		case "id":
4946			if v != nil {
4947				var ID string
4948				err = json.Unmarshal(*v, &ID)
4949				if err != nil {
4950					return err
4951				}
4952				c.ID = &ID
4953			}
4954		case "name":
4955			if v != nil {
4956				var name string
4957				err = json.Unmarshal(*v, &name)
4958				if err != nil {
4959					return err
4960				}
4961				c.Name = &name
4962			}
4963		case "kind":
4964			if v != nil {
4965				var kind string
4966				err = json.Unmarshal(*v, &kind)
4967				if err != nil {
4968					return err
4969				}
4970				c.Kind = &kind
4971			}
4972		case "location":
4973			if v != nil {
4974				var location string
4975				err = json.Unmarshal(*v, &location)
4976				if err != nil {
4977					return err
4978				}
4979				c.Location = &location
4980			}
4981		case "type":
4982			if v != nil {
4983				var typeVar string
4984				err = json.Unmarshal(*v, &typeVar)
4985				if err != nil {
4986					return err
4987				}
4988				c.Type = &typeVar
4989			}
4990		case "tags":
4991			if v != nil {
4992				var tags map[string]*string
4993				err = json.Unmarshal(*v, &tags)
4994				if err != nil {
4995					return err
4996				}
4997				c.Tags = tags
4998			}
4999		}
5000	}
5001
5002	return nil
5003}
5004
5005// CertificateCollection collection of certificates.
5006type CertificateCollection struct {
5007	autorest.Response `json:"-"`
5008	// Value - Collection of resources.
5009	Value *[]Certificate `json:"value,omitempty"`
5010	// NextLink - READ-ONLY; Link to next page of resources.
5011	NextLink *string `json:"nextLink,omitempty"`
5012}
5013
5014// MarshalJSON is the custom marshaler for CertificateCollection.
5015func (cc CertificateCollection) MarshalJSON() ([]byte, error) {
5016	objectMap := make(map[string]interface{})
5017	if cc.Value != nil {
5018		objectMap["value"] = cc.Value
5019	}
5020	return json.Marshal(objectMap)
5021}
5022
5023// CertificateCollectionIterator provides access to a complete listing of Certificate values.
5024type CertificateCollectionIterator struct {
5025	i    int
5026	page CertificateCollectionPage
5027}
5028
5029// NextWithContext advances to the next value.  If there was an error making
5030// the request the iterator does not advance and the error is returned.
5031func (iter *CertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
5032	if tracing.IsEnabled() {
5033		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionIterator.NextWithContext")
5034		defer func() {
5035			sc := -1
5036			if iter.Response().Response.Response != nil {
5037				sc = iter.Response().Response.Response.StatusCode
5038			}
5039			tracing.EndSpan(ctx, sc, err)
5040		}()
5041	}
5042	iter.i++
5043	if iter.i < len(iter.page.Values()) {
5044		return nil
5045	}
5046	err = iter.page.NextWithContext(ctx)
5047	if err != nil {
5048		iter.i--
5049		return err
5050	}
5051	iter.i = 0
5052	return nil
5053}
5054
5055// Next advances to the next value.  If there was an error making
5056// the request the iterator does not advance and the error is returned.
5057// Deprecated: Use NextWithContext() instead.
5058func (iter *CertificateCollectionIterator) Next() error {
5059	return iter.NextWithContext(context.Background())
5060}
5061
5062// NotDone returns true if the enumeration should be started or is not yet complete.
5063func (iter CertificateCollectionIterator) NotDone() bool {
5064	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5065}
5066
5067// Response returns the raw server response from the last page request.
5068func (iter CertificateCollectionIterator) Response() CertificateCollection {
5069	return iter.page.Response()
5070}
5071
5072// Value returns the current value or a zero-initialized value if the
5073// iterator has advanced beyond the end of the collection.
5074func (iter CertificateCollectionIterator) Value() Certificate {
5075	if !iter.page.NotDone() {
5076		return Certificate{}
5077	}
5078	return iter.page.Values()[iter.i]
5079}
5080
5081// Creates a new instance of the CertificateCollectionIterator type.
5082func NewCertificateCollectionIterator(page CertificateCollectionPage) CertificateCollectionIterator {
5083	return CertificateCollectionIterator{page: page}
5084}
5085
5086// IsEmpty returns true if the ListResult contains no values.
5087func (cc CertificateCollection) IsEmpty() bool {
5088	return cc.Value == nil || len(*cc.Value) == 0
5089}
5090
5091// hasNextLink returns true if the NextLink is not empty.
5092func (cc CertificateCollection) hasNextLink() bool {
5093	return cc.NextLink != nil && len(*cc.NextLink) != 0
5094}
5095
5096// certificateCollectionPreparer prepares a request to retrieve the next set of results.
5097// It returns nil if no more results exist.
5098func (cc CertificateCollection) certificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
5099	if !cc.hasNextLink() {
5100		return nil, nil
5101	}
5102	return autorest.Prepare((&http.Request{}).WithContext(ctx),
5103		autorest.AsJSON(),
5104		autorest.AsGet(),
5105		autorest.WithBaseURL(to.String(cc.NextLink)))
5106}
5107
5108// CertificateCollectionPage contains a page of Certificate values.
5109type CertificateCollectionPage struct {
5110	fn func(context.Context, CertificateCollection) (CertificateCollection, error)
5111	cc CertificateCollection
5112}
5113
5114// NextWithContext advances to the next page of values.  If there was an error making
5115// the request the page does not advance and the error is returned.
5116func (page *CertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
5117	if tracing.IsEnabled() {
5118		ctx = tracing.StartSpan(ctx, fqdn+"/CertificateCollectionPage.NextWithContext")
5119		defer func() {
5120			sc := -1
5121			if page.Response().Response.Response != nil {
5122				sc = page.Response().Response.Response.StatusCode
5123			}
5124			tracing.EndSpan(ctx, sc, err)
5125		}()
5126	}
5127	for {
5128		next, err := page.fn(ctx, page.cc)
5129		if err != nil {
5130			return err
5131		}
5132		page.cc = next
5133		if !next.hasNextLink() || !next.IsEmpty() {
5134			break
5135		}
5136	}
5137	return nil
5138}
5139
5140// Next advances to the next page of values.  If there was an error making
5141// the request the page does not advance and the error is returned.
5142// Deprecated: Use NextWithContext() instead.
5143func (page *CertificateCollectionPage) Next() error {
5144	return page.NextWithContext(context.Background())
5145}
5146
5147// NotDone returns true if the page enumeration should be started or is not yet complete.
5148func (page CertificateCollectionPage) NotDone() bool {
5149	return !page.cc.IsEmpty()
5150}
5151
5152// Response returns the raw server response from the last page request.
5153func (page CertificateCollectionPage) Response() CertificateCollection {
5154	return page.cc
5155}
5156
5157// Values returns the slice of values for the current page or nil if there are no values.
5158func (page CertificateCollectionPage) Values() []Certificate {
5159	if page.cc.IsEmpty() {
5160		return nil
5161	}
5162	return *page.cc.Value
5163}
5164
5165// Creates a new instance of the CertificateCollectionPage type.
5166func NewCertificateCollectionPage(cur CertificateCollection, getNextPage func(context.Context, CertificateCollection) (CertificateCollection, error)) CertificateCollectionPage {
5167	return CertificateCollectionPage{
5168		fn: getNextPage,
5169		cc: cur,
5170	}
5171}
5172
5173// CertificateDetails SSL certificate details.
5174type CertificateDetails struct {
5175	// Version - READ-ONLY; Certificate Version.
5176	Version *int32 `json:"version,omitempty"`
5177	// SerialNumber - READ-ONLY; Certificate Serial Number.
5178	SerialNumber *string `json:"serialNumber,omitempty"`
5179	// Thumbprint - READ-ONLY; Certificate Thumbprint.
5180	Thumbprint *string `json:"thumbprint,omitempty"`
5181	// Subject - READ-ONLY; Certificate Subject.
5182	Subject *string `json:"subject,omitempty"`
5183	// NotBefore - READ-ONLY; Date Certificate is valid from.
5184	NotBefore *date.Time `json:"notBefore,omitempty"`
5185	// NotAfter - READ-ONLY; Date Certificate is valid to.
5186	NotAfter *date.Time `json:"notAfter,omitempty"`
5187	// SignatureAlgorithm - READ-ONLY; Certificate Signature algorithm.
5188	SignatureAlgorithm *string `json:"signatureAlgorithm,omitempty"`
5189	// Issuer - READ-ONLY; Certificate Issuer.
5190	Issuer *string `json:"issuer,omitempty"`
5191	// RawData - READ-ONLY; Raw certificate data.
5192	RawData *string `json:"rawData,omitempty"`
5193}
5194
5195// CertificateEmail SSL certificate email.
5196type CertificateEmail struct {
5197	// CertificateEmailProperties - CertificateEmail resource specific properties
5198	*CertificateEmailProperties `json:"properties,omitempty"`
5199	// ID - READ-ONLY; Resource Id.
5200	ID *string `json:"id,omitempty"`
5201	// Name - READ-ONLY; Resource Name.
5202	Name *string `json:"name,omitempty"`
5203	// Kind - Kind of resource.
5204	Kind *string `json:"kind,omitempty"`
5205	// Type - READ-ONLY; Resource type.
5206	Type *string `json:"type,omitempty"`
5207}
5208
5209// MarshalJSON is the custom marshaler for CertificateEmail.
5210func (ce CertificateEmail) MarshalJSON() ([]byte, error) {
5211	objectMap := make(map[string]interface{})
5212	if ce.CertificateEmailProperties != nil {
5213		objectMap["properties"] = ce.CertificateEmailProperties
5214	}
5215	if ce.Kind != nil {
5216		objectMap["kind"] = ce.Kind
5217	}
5218	return json.Marshal(objectMap)
5219}
5220
5221// UnmarshalJSON is the custom unmarshaler for CertificateEmail struct.
5222func (ce *CertificateEmail) UnmarshalJSON(body []byte) error {
5223	var m map[string]*json.RawMessage
5224	err := json.Unmarshal(body, &m)
5225	if err != nil {
5226		return err
5227	}
5228	for k, v := range m {
5229		switch k {
5230		case "properties":
5231			if v != nil {
5232				var certificateEmailProperties CertificateEmailProperties
5233				err = json.Unmarshal(*v, &certificateEmailProperties)
5234				if err != nil {
5235					return err
5236				}
5237				ce.CertificateEmailProperties = &certificateEmailProperties
5238			}
5239		case "id":
5240			if v != nil {
5241				var ID string
5242				err = json.Unmarshal(*v, &ID)
5243				if err != nil {
5244					return err
5245				}
5246				ce.ID = &ID
5247			}
5248		case "name":
5249			if v != nil {
5250				var name string
5251				err = json.Unmarshal(*v, &name)
5252				if err != nil {
5253					return err
5254				}
5255				ce.Name = &name
5256			}
5257		case "kind":
5258			if v != nil {
5259				var kind string
5260				err = json.Unmarshal(*v, &kind)
5261				if err != nil {
5262					return err
5263				}
5264				ce.Kind = &kind
5265			}
5266		case "type":
5267			if v != nil {
5268				var typeVar string
5269				err = json.Unmarshal(*v, &typeVar)
5270				if err != nil {
5271					return err
5272				}
5273				ce.Type = &typeVar
5274			}
5275		}
5276	}
5277
5278	return nil
5279}
5280
5281// CertificateEmailProperties certificateEmail resource specific properties
5282type CertificateEmailProperties struct {
5283	// EmailID - Email id.
5284	EmailID *string `json:"emailId,omitempty"`
5285	// TimeStamp - Time stamp.
5286	TimeStamp *date.Time `json:"timeStamp,omitempty"`
5287}
5288
5289// CertificateOrderAction certificate order action.
5290type CertificateOrderAction struct {
5291	// CertificateOrderActionProperties - CertificateOrderAction resource specific properties
5292	*CertificateOrderActionProperties `json:"properties,omitempty"`
5293	// ID - READ-ONLY; Resource Id.
5294	ID *string `json:"id,omitempty"`
5295	// Name - READ-ONLY; Resource Name.
5296	Name *string `json:"name,omitempty"`
5297	// Kind - Kind of resource.
5298	Kind *string `json:"kind,omitempty"`
5299	// Type - READ-ONLY; Resource type.
5300	Type *string `json:"type,omitempty"`
5301}
5302
5303// MarshalJSON is the custom marshaler for CertificateOrderAction.
5304func (coa CertificateOrderAction) MarshalJSON() ([]byte, error) {
5305	objectMap := make(map[string]interface{})
5306	if coa.CertificateOrderActionProperties != nil {
5307		objectMap["properties"] = coa.CertificateOrderActionProperties
5308	}
5309	if coa.Kind != nil {
5310		objectMap["kind"] = coa.Kind
5311	}
5312	return json.Marshal(objectMap)
5313}
5314
5315// UnmarshalJSON is the custom unmarshaler for CertificateOrderAction struct.
5316func (coa *CertificateOrderAction) UnmarshalJSON(body []byte) error {
5317	var m map[string]*json.RawMessage
5318	err := json.Unmarshal(body, &m)
5319	if err != nil {
5320		return err
5321	}
5322	for k, v := range m {
5323		switch k {
5324		case "properties":
5325			if v != nil {
5326				var certificateOrderActionProperties CertificateOrderActionProperties
5327				err = json.Unmarshal(*v, &certificateOrderActionProperties)
5328				if err != nil {
5329					return err
5330				}
5331				coa.CertificateOrderActionProperties = &certificateOrderActionProperties
5332			}
5333		case "id":
5334			if v != nil {
5335				var ID string
5336				err = json.Unmarshal(*v, &ID)
5337				if err != nil {
5338					return err
5339				}
5340				coa.ID = &ID
5341			}
5342		case "name":
5343			if v != nil {
5344				var name string
5345				err = json.Unmarshal(*v, &name)
5346				if err != nil {
5347					return err
5348				}
5349				coa.Name = &name
5350			}
5351		case "kind":
5352			if v != nil {
5353				var kind string
5354				err = json.Unmarshal(*v, &kind)
5355				if err != nil {
5356					return err
5357				}
5358				coa.Kind = &kind
5359			}
5360		case "type":
5361			if v != nil {
5362				var typeVar string
5363				err = json.Unmarshal(*v, &typeVar)
5364				if err != nil {
5365					return err
5366				}
5367				coa.Type = &typeVar
5368			}
5369		}
5370	}
5371
5372	return nil
5373}
5374
5375// CertificateOrderActionProperties certificateOrderAction resource specific properties
5376type CertificateOrderActionProperties struct {
5377	// ActionType - READ-ONLY; Action type. Possible values include: 'CertificateIssued', 'CertificateOrderCanceled', 'CertificateOrderCreated', 'CertificateRevoked', 'DomainValidationComplete', 'FraudDetected', 'OrgNameChange', 'OrgValidationComplete', 'SanDrop', 'FraudCleared', 'CertificateExpired', 'CertificateExpirationWarning', 'FraudDocumentationRequired', 'Unknown'
5378	ActionType CertificateOrderActionType `json:"actionType,omitempty"`
5379	// CreatedAt - READ-ONLY; Time at which the certificate action was performed.
5380	CreatedAt *date.Time `json:"createdAt,omitempty"`
5381}
5382
5383// CertificatePatchResource ARM resource for a certificate.
5384type CertificatePatchResource struct {
5385	// CertificatePatchResourceProperties - CertificatePatchResource resource specific properties
5386	*CertificatePatchResourceProperties `json:"properties,omitempty"`
5387	// ID - READ-ONLY; Resource Id.
5388	ID *string `json:"id,omitempty"`
5389	// Name - READ-ONLY; Resource Name.
5390	Name *string `json:"name,omitempty"`
5391	// Kind - Kind of resource.
5392	Kind *string `json:"kind,omitempty"`
5393	// Type - READ-ONLY; Resource type.
5394	Type *string `json:"type,omitempty"`
5395}
5396
5397// MarshalJSON is the custom marshaler for CertificatePatchResource.
5398func (cpr CertificatePatchResource) MarshalJSON() ([]byte, error) {
5399	objectMap := make(map[string]interface{})
5400	if cpr.CertificatePatchResourceProperties != nil {
5401		objectMap["properties"] = cpr.CertificatePatchResourceProperties
5402	}
5403	if cpr.Kind != nil {
5404		objectMap["kind"] = cpr.Kind
5405	}
5406	return json.Marshal(objectMap)
5407}
5408
5409// UnmarshalJSON is the custom unmarshaler for CertificatePatchResource struct.
5410func (cpr *CertificatePatchResource) UnmarshalJSON(body []byte) error {
5411	var m map[string]*json.RawMessage
5412	err := json.Unmarshal(body, &m)
5413	if err != nil {
5414		return err
5415	}
5416	for k, v := range m {
5417		switch k {
5418		case "properties":
5419			if v != nil {
5420				var certificatePatchResourceProperties CertificatePatchResourceProperties
5421				err = json.Unmarshal(*v, &certificatePatchResourceProperties)
5422				if err != nil {
5423					return err
5424				}
5425				cpr.CertificatePatchResourceProperties = &certificatePatchResourceProperties
5426			}
5427		case "id":
5428			if v != nil {
5429				var ID string
5430				err = json.Unmarshal(*v, &ID)
5431				if err != nil {
5432					return err
5433				}
5434				cpr.ID = &ID
5435			}
5436		case "name":
5437			if v != nil {
5438				var name string
5439				err = json.Unmarshal(*v, &name)
5440				if err != nil {
5441					return err
5442				}
5443				cpr.Name = &name
5444			}
5445		case "kind":
5446			if v != nil {
5447				var kind string
5448				err = json.Unmarshal(*v, &kind)
5449				if err != nil {
5450					return err
5451				}
5452				cpr.Kind = &kind
5453			}
5454		case "type":
5455			if v != nil {
5456				var typeVar string
5457				err = json.Unmarshal(*v, &typeVar)
5458				if err != nil {
5459					return err
5460				}
5461				cpr.Type = &typeVar
5462			}
5463		}
5464	}
5465
5466	return nil
5467}
5468
5469// CertificatePatchResourceProperties certificatePatchResource resource specific properties
5470type CertificatePatchResourceProperties struct {
5471	// FriendlyName - READ-ONLY; Friendly name of the certificate.
5472	FriendlyName *string `json:"friendlyName,omitempty"`
5473	// SubjectName - READ-ONLY; Subject name of the certificate.
5474	SubjectName *string `json:"subjectName,omitempty"`
5475	// HostNames - Host names the certificate applies to.
5476	HostNames *[]string `json:"hostNames,omitempty"`
5477	// PfxBlob - Pfx blob.
5478	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
5479	// SiteName - READ-ONLY; App name.
5480	SiteName *string `json:"siteName,omitempty"`
5481	// SelfLink - READ-ONLY; Self link.
5482	SelfLink *string `json:"selfLink,omitempty"`
5483	// Issuer - READ-ONLY; Certificate issuer.
5484	Issuer *string `json:"issuer,omitempty"`
5485	// IssueDate - READ-ONLY; Certificate issue Date.
5486	IssueDate *date.Time `json:"issueDate,omitempty"`
5487	// ExpirationDate - READ-ONLY; Certificate expiration date.
5488	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
5489	// Password - Certificate password.
5490	Password *string `json:"password,omitempty"`
5491	// Thumbprint - READ-ONLY; Certificate thumbprint.
5492	Thumbprint *string `json:"thumbprint,omitempty"`
5493	// Valid - READ-ONLY; Is the certificate valid?.
5494	Valid *bool `json:"valid,omitempty"`
5495	// CerBlob - READ-ONLY; Raw bytes of .cer file
5496	CerBlob *[]byte `json:"cerBlob,omitempty"`
5497	// PublicKeyHash - READ-ONLY; Public key hash.
5498	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
5499	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
5500	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
5501	// KeyVaultID - Key Vault Csm resource Id.
5502	KeyVaultID *string `json:"keyVaultId,omitempty"`
5503	// KeyVaultSecretName - Key Vault secret name.
5504	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
5505	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
5506	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
5507	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
5508	ServerFarmID *string `json:"serverFarmId,omitempty"`
5509	// CanonicalName - CNAME of the certificate to be issued via free certificate
5510	CanonicalName *string `json:"canonicalName,omitempty"`
5511}
5512
5513// MarshalJSON is the custom marshaler for CertificatePatchResourceProperties.
5514func (cpr CertificatePatchResourceProperties) MarshalJSON() ([]byte, error) {
5515	objectMap := make(map[string]interface{})
5516	if cpr.HostNames != nil {
5517		objectMap["hostNames"] = cpr.HostNames
5518	}
5519	if cpr.PfxBlob != nil {
5520		objectMap["pfxBlob"] = cpr.PfxBlob
5521	}
5522	if cpr.Password != nil {
5523		objectMap["password"] = cpr.Password
5524	}
5525	if cpr.KeyVaultID != nil {
5526		objectMap["keyVaultId"] = cpr.KeyVaultID
5527	}
5528	if cpr.KeyVaultSecretName != nil {
5529		objectMap["keyVaultSecretName"] = cpr.KeyVaultSecretName
5530	}
5531	if cpr.ServerFarmID != nil {
5532		objectMap["serverFarmId"] = cpr.ServerFarmID
5533	}
5534	if cpr.CanonicalName != nil {
5535		objectMap["canonicalName"] = cpr.CanonicalName
5536	}
5537	return json.Marshal(objectMap)
5538}
5539
5540// CertificateProperties certificate resource specific properties
5541type CertificateProperties struct {
5542	// FriendlyName - READ-ONLY; Friendly name of the certificate.
5543	FriendlyName *string `json:"friendlyName,omitempty"`
5544	// SubjectName - READ-ONLY; Subject name of the certificate.
5545	SubjectName *string `json:"subjectName,omitempty"`
5546	// HostNames - Host names the certificate applies to.
5547	HostNames *[]string `json:"hostNames,omitempty"`
5548	// PfxBlob - Pfx blob.
5549	PfxBlob *[]byte `json:"pfxBlob,omitempty"`
5550	// SiteName - READ-ONLY; App name.
5551	SiteName *string `json:"siteName,omitempty"`
5552	// SelfLink - READ-ONLY; Self link.
5553	SelfLink *string `json:"selfLink,omitempty"`
5554	// Issuer - READ-ONLY; Certificate issuer.
5555	Issuer *string `json:"issuer,omitempty"`
5556	// IssueDate - READ-ONLY; Certificate issue Date.
5557	IssueDate *date.Time `json:"issueDate,omitempty"`
5558	// ExpirationDate - READ-ONLY; Certificate expiration date.
5559	ExpirationDate *date.Time `json:"expirationDate,omitempty"`
5560	// Password - Certificate password.
5561	Password *string `json:"password,omitempty"`
5562	// Thumbprint - READ-ONLY; Certificate thumbprint.
5563	Thumbprint *string `json:"thumbprint,omitempty"`
5564	// Valid - READ-ONLY; Is the certificate valid?.
5565	Valid *bool `json:"valid,omitempty"`
5566	// CerBlob - READ-ONLY; Raw bytes of .cer file
5567	CerBlob *[]byte `json:"cerBlob,omitempty"`
5568	// PublicKeyHash - READ-ONLY; Public key hash.
5569	PublicKeyHash *string `json:"publicKeyHash,omitempty"`
5570	// HostingEnvironmentProfile - READ-ONLY; Specification for the App Service Environment to use for the certificate.
5571	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
5572	// KeyVaultID - Key Vault Csm resource Id.
5573	KeyVaultID *string `json:"keyVaultId,omitempty"`
5574	// KeyVaultSecretName - Key Vault secret name.
5575	KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"`
5576	// KeyVaultSecretStatus - READ-ONLY; Status of the Key Vault secret. Possible values include: 'KeyVaultSecretStatusInitialized', 'KeyVaultSecretStatusWaitingOnCertificateOrder', 'KeyVaultSecretStatusSucceeded', 'KeyVaultSecretStatusCertificateOrderFailed', 'KeyVaultSecretStatusOperationNotPermittedOnKeyVault', 'KeyVaultSecretStatusAzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultSecretStatusKeyVaultDoesNotExist', 'KeyVaultSecretStatusKeyVaultSecretDoesNotExist', 'KeyVaultSecretStatusUnknownError', 'KeyVaultSecretStatusExternalPrivateKey', 'KeyVaultSecretStatusUnknown'
5577	KeyVaultSecretStatus KeyVaultSecretStatus `json:"keyVaultSecretStatus,omitempty"`
5578	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
5579	ServerFarmID *string `json:"serverFarmId,omitempty"`
5580	// CanonicalName - CNAME of the certificate to be issued via free certificate
5581	CanonicalName *string `json:"canonicalName,omitempty"`
5582}
5583
5584// MarshalJSON is the custom marshaler for CertificateProperties.
5585func (c CertificateProperties) MarshalJSON() ([]byte, error) {
5586	objectMap := make(map[string]interface{})
5587	if c.HostNames != nil {
5588		objectMap["hostNames"] = c.HostNames
5589	}
5590	if c.PfxBlob != nil {
5591		objectMap["pfxBlob"] = c.PfxBlob
5592	}
5593	if c.Password != nil {
5594		objectMap["password"] = c.Password
5595	}
5596	if c.KeyVaultID != nil {
5597		objectMap["keyVaultId"] = c.KeyVaultID
5598	}
5599	if c.KeyVaultSecretName != nil {
5600		objectMap["keyVaultSecretName"] = c.KeyVaultSecretName
5601	}
5602	if c.ServerFarmID != nil {
5603		objectMap["serverFarmId"] = c.ServerFarmID
5604	}
5605	if c.CanonicalName != nil {
5606		objectMap["canonicalName"] = c.CanonicalName
5607	}
5608	return json.Marshal(objectMap)
5609}
5610
5611// ClientRegistration ...
5612type ClientRegistration struct {
5613	// ClientRegistrationProperties - ClientRegistration resource specific properties
5614	*ClientRegistrationProperties `json:"properties,omitempty"`
5615	// ID - READ-ONLY; Resource Id.
5616	ID *string `json:"id,omitempty"`
5617	// Name - READ-ONLY; Resource Name.
5618	Name *string `json:"name,omitempty"`
5619	// Kind - Kind of resource.
5620	Kind *string `json:"kind,omitempty"`
5621	// Type - READ-ONLY; Resource type.
5622	Type *string `json:"type,omitempty"`
5623}
5624
5625// MarshalJSON is the custom marshaler for ClientRegistration.
5626func (cr ClientRegistration) MarshalJSON() ([]byte, error) {
5627	objectMap := make(map[string]interface{})
5628	if cr.ClientRegistrationProperties != nil {
5629		objectMap["properties"] = cr.ClientRegistrationProperties
5630	}
5631	if cr.Kind != nil {
5632		objectMap["kind"] = cr.Kind
5633	}
5634	return json.Marshal(objectMap)
5635}
5636
5637// UnmarshalJSON is the custom unmarshaler for ClientRegistration struct.
5638func (cr *ClientRegistration) UnmarshalJSON(body []byte) error {
5639	var m map[string]*json.RawMessage
5640	err := json.Unmarshal(body, &m)
5641	if err != nil {
5642		return err
5643	}
5644	for k, v := range m {
5645		switch k {
5646		case "properties":
5647			if v != nil {
5648				var clientRegistrationProperties ClientRegistrationProperties
5649				err = json.Unmarshal(*v, &clientRegistrationProperties)
5650				if err != nil {
5651					return err
5652				}
5653				cr.ClientRegistrationProperties = &clientRegistrationProperties
5654			}
5655		case "id":
5656			if v != nil {
5657				var ID string
5658				err = json.Unmarshal(*v, &ID)
5659				if err != nil {
5660					return err
5661				}
5662				cr.ID = &ID
5663			}
5664		case "name":
5665			if v != nil {
5666				var name string
5667				err = json.Unmarshal(*v, &name)
5668				if err != nil {
5669					return err
5670				}
5671				cr.Name = &name
5672			}
5673		case "kind":
5674			if v != nil {
5675				var kind string
5676				err = json.Unmarshal(*v, &kind)
5677				if err != nil {
5678					return err
5679				}
5680				cr.Kind = &kind
5681			}
5682		case "type":
5683			if v != nil {
5684				var typeVar string
5685				err = json.Unmarshal(*v, &typeVar)
5686				if err != nil {
5687					return err
5688				}
5689				cr.Type = &typeVar
5690			}
5691		}
5692	}
5693
5694	return nil
5695}
5696
5697// ClientRegistrationProperties clientRegistration resource specific properties
5698type ClientRegistrationProperties struct {
5699	ClientID                *string `json:"clientId,omitempty"`
5700	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
5701}
5702
5703// CloningInfo information needed for cloning operation.
5704type CloningInfo struct {
5705	// CorrelationID - Correlation ID of cloning operation. This ID ties multiple cloning operations
5706	// together to use the same snapshot.
5707	CorrelationID *uuid.UUID `json:"correlationId,omitempty"`
5708	// Overwrite - <code>true</code> to overwrite destination app; otherwise, <code>false</code>.
5709	Overwrite *bool `json:"overwrite,omitempty"`
5710	// CloneCustomHostNames - <code>true</code> to clone custom hostnames from source app; otherwise, <code>false</code>.
5711	CloneCustomHostNames *bool `json:"cloneCustomHostNames,omitempty"`
5712	// CloneSourceControl - <code>true</code> to clone source control from source app; otherwise, <code>false</code>.
5713	CloneSourceControl *bool `json:"cloneSourceControl,omitempty"`
5714	// SourceWebAppID - ARM resource ID of the source app. App resource ID is of the form
5715	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
5716	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
5717	SourceWebAppID *string `json:"sourceWebAppId,omitempty"`
5718	// SourceWebAppLocation - Location of source app ex: West US or North Europe
5719	SourceWebAppLocation *string `json:"sourceWebAppLocation,omitempty"`
5720	// HostingEnvironment - App Service Environment.
5721	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
5722	// AppSettingsOverrides - Application setting overrides for cloned app. If specified, these settings override the settings cloned
5723	// from source app. Otherwise, application settings from source app are retained.
5724	AppSettingsOverrides map[string]*string `json:"appSettingsOverrides"`
5725	// ConfigureLoadBalancing - <code>true</code> to configure load balancing for source and destination app.
5726	ConfigureLoadBalancing *bool `json:"configureLoadBalancing,omitempty"`
5727	// TrafficManagerProfileID - ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager resource ID is of the form
5728	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}.
5729	TrafficManagerProfileID *string `json:"trafficManagerProfileId,omitempty"`
5730	// TrafficManagerProfileName - Name of Traffic Manager profile to create. This is only needed if Traffic Manager profile does not already exist.
5731	TrafficManagerProfileName *string `json:"trafficManagerProfileName,omitempty"`
5732}
5733
5734// MarshalJSON is the custom marshaler for CloningInfo.
5735func (ci CloningInfo) MarshalJSON() ([]byte, error) {
5736	objectMap := make(map[string]interface{})
5737	if ci.CorrelationID != nil {
5738		objectMap["correlationId"] = ci.CorrelationID
5739	}
5740	if ci.Overwrite != nil {
5741		objectMap["overwrite"] = ci.Overwrite
5742	}
5743	if ci.CloneCustomHostNames != nil {
5744		objectMap["cloneCustomHostNames"] = ci.CloneCustomHostNames
5745	}
5746	if ci.CloneSourceControl != nil {
5747		objectMap["cloneSourceControl"] = ci.CloneSourceControl
5748	}
5749	if ci.SourceWebAppID != nil {
5750		objectMap["sourceWebAppId"] = ci.SourceWebAppID
5751	}
5752	if ci.SourceWebAppLocation != nil {
5753		objectMap["sourceWebAppLocation"] = ci.SourceWebAppLocation
5754	}
5755	if ci.HostingEnvironment != nil {
5756		objectMap["hostingEnvironment"] = ci.HostingEnvironment
5757	}
5758	if ci.AppSettingsOverrides != nil {
5759		objectMap["appSettingsOverrides"] = ci.AppSettingsOverrides
5760	}
5761	if ci.ConfigureLoadBalancing != nil {
5762		objectMap["configureLoadBalancing"] = ci.ConfigureLoadBalancing
5763	}
5764	if ci.TrafficManagerProfileID != nil {
5765		objectMap["trafficManagerProfileId"] = ci.TrafficManagerProfileID
5766	}
5767	if ci.TrafficManagerProfileName != nil {
5768		objectMap["trafficManagerProfileName"] = ci.TrafficManagerProfileName
5769	}
5770	return json.Marshal(objectMap)
5771}
5772
5773// ConnectionStringDictionary string dictionary resource.
5774type ConnectionStringDictionary struct {
5775	autorest.Response `json:"-"`
5776	// Properties - Connection strings.
5777	Properties map[string]*ConnStringValueTypePair `json:"properties"`
5778	// ID - READ-ONLY; Resource Id.
5779	ID *string `json:"id,omitempty"`
5780	// Name - READ-ONLY; Resource Name.
5781	Name *string `json:"name,omitempty"`
5782	// Kind - Kind of resource.
5783	Kind *string `json:"kind,omitempty"`
5784	// Type - READ-ONLY; Resource type.
5785	Type *string `json:"type,omitempty"`
5786}
5787
5788// MarshalJSON is the custom marshaler for ConnectionStringDictionary.
5789func (csd ConnectionStringDictionary) MarshalJSON() ([]byte, error) {
5790	objectMap := make(map[string]interface{})
5791	if csd.Properties != nil {
5792		objectMap["properties"] = csd.Properties
5793	}
5794	if csd.Kind != nil {
5795		objectMap["kind"] = csd.Kind
5796	}
5797	return json.Marshal(objectMap)
5798}
5799
5800// ConnStringInfo database connection string information.
5801type ConnStringInfo struct {
5802	// Name - Name of connection string.
5803	Name *string `json:"name,omitempty"`
5804	// ConnectionString - Connection string value.
5805	ConnectionString *string `json:"connectionString,omitempty"`
5806	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
5807	Type ConnectionStringType `json:"type,omitempty"`
5808}
5809
5810// ConnStringValueTypePair database connection string value to type pair.
5811type ConnStringValueTypePair struct {
5812	// Value - Value of pair.
5813	Value *string `json:"value,omitempty"`
5814	// Type - Type of database. Possible values include: 'MySQL', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', 'ServiceBus', 'EventHub', 'APIHub', 'DocDb', 'RedisCache', 'PostgreSQL'
5815	Type ConnectionStringType `json:"type,omitempty"`
5816}
5817
5818// Contact contact information for domain registration. If 'Domain Privacy' option is not selected then the
5819// contact information is made publicly available through the Whois
5820// directories as per ICANN requirements.
5821type Contact struct {
5822	// AddressMailing - Mailing address.
5823	AddressMailing *Address `json:"addressMailing,omitempty"`
5824	// Email - Email address.
5825	Email *string `json:"email,omitempty"`
5826	// Fax - Fax number.
5827	Fax *string `json:"fax,omitempty"`
5828	// JobTitle - Job title.
5829	JobTitle *string `json:"jobTitle,omitempty"`
5830	// NameFirst - First name.
5831	NameFirst *string `json:"nameFirst,omitempty"`
5832	// NameLast - Last name.
5833	NameLast *string `json:"nameLast,omitempty"`
5834	// NameMiddle - Middle name.
5835	NameMiddle *string `json:"nameMiddle,omitempty"`
5836	// Organization - Organization contact belongs to.
5837	Organization *string `json:"organization,omitempty"`
5838	// Phone - Phone number.
5839	Phone *string `json:"phone,omitempty"`
5840}
5841
5842// ContainerCPUStatistics ...
5843type ContainerCPUStatistics struct {
5844	CPUUsage       *ContainerCPUUsage       `json:"cpuUsage,omitempty"`
5845	SystemCPUUsage *int64                   `json:"systemCpuUsage,omitempty"`
5846	OnlineCPUCount *int32                   `json:"onlineCpuCount,omitempty"`
5847	ThrottlingData *ContainerThrottlingData `json:"throttlingData,omitempty"`
5848}
5849
5850// ContainerCPUUsage ...
5851type ContainerCPUUsage struct {
5852	TotalUsage      *int64   `json:"totalUsage,omitempty"`
5853	PerCPUUsage     *[]int64 `json:"perCpuUsage,omitempty"`
5854	KernelModeUsage *int64   `json:"kernelModeUsage,omitempty"`
5855	UserModeUsage   *int64   `json:"userModeUsage,omitempty"`
5856}
5857
5858// ContainerInfo ...
5859type ContainerInfo struct {
5860	CurrentTimeStamp  *date.Time                           `json:"currentTimeStamp,omitempty"`
5861	PreviousTimeStamp *date.Time                           `json:"previousTimeStamp,omitempty"`
5862	CurrentCPUStats   *ContainerCPUStatistics              `json:"currentCpuStats,omitempty"`
5863	PreviousCPUStats  *ContainerCPUStatistics              `json:"previousCpuStats,omitempty"`
5864	MemoryStats       *ContainerMemoryStatistics           `json:"memoryStats,omitempty"`
5865	Name              *string                              `json:"name,omitempty"`
5866	ID                *string                              `json:"id,omitempty"`
5867	Eth0              *ContainerNetworkInterfaceStatistics `json:"eth0,omitempty"`
5868}
5869
5870// ContainerMemoryStatistics ...
5871type ContainerMemoryStatistics struct {
5872	Usage    *int64 `json:"usage,omitempty"`
5873	MaxUsage *int64 `json:"maxUsage,omitempty"`
5874	Limit    *int64 `json:"limit,omitempty"`
5875}
5876
5877// ContainerNetworkInterfaceStatistics ...
5878type ContainerNetworkInterfaceStatistics struct {
5879	RxBytes   *int64 `json:"rxBytes,omitempty"`
5880	RxPackets *int64 `json:"rxPackets,omitempty"`
5881	RxErrors  *int64 `json:"rxErrors,omitempty"`
5882	RxDropped *int64 `json:"rxDropped,omitempty"`
5883	TxBytes   *int64 `json:"txBytes,omitempty"`
5884	TxPackets *int64 `json:"txPackets,omitempty"`
5885	TxErrors  *int64 `json:"txErrors,omitempty"`
5886	TxDropped *int64 `json:"txDropped,omitempty"`
5887}
5888
5889// ContainerThrottlingData ...
5890type ContainerThrottlingData struct {
5891	Periods          *int32 `json:"periods,omitempty"`
5892	ThrottledPeriods *int32 `json:"throttledPeriods,omitempty"`
5893	ThrottledTime    *int32 `json:"throttledTime,omitempty"`
5894}
5895
5896// ContinuousWebJob continuous Web Job Information.
5897type ContinuousWebJob struct {
5898	autorest.Response `json:"-"`
5899	// ContinuousWebJobProperties - ContinuousWebJob resource specific properties
5900	*ContinuousWebJobProperties `json:"properties,omitempty"`
5901	// ID - READ-ONLY; Resource Id.
5902	ID *string `json:"id,omitempty"`
5903	// Name - READ-ONLY; Resource Name.
5904	Name *string `json:"name,omitempty"`
5905	// Kind - Kind of resource.
5906	Kind *string `json:"kind,omitempty"`
5907	// Type - READ-ONLY; Resource type.
5908	Type *string `json:"type,omitempty"`
5909}
5910
5911// MarshalJSON is the custom marshaler for ContinuousWebJob.
5912func (cwj ContinuousWebJob) MarshalJSON() ([]byte, error) {
5913	objectMap := make(map[string]interface{})
5914	if cwj.ContinuousWebJobProperties != nil {
5915		objectMap["properties"] = cwj.ContinuousWebJobProperties
5916	}
5917	if cwj.Kind != nil {
5918		objectMap["kind"] = cwj.Kind
5919	}
5920	return json.Marshal(objectMap)
5921}
5922
5923// UnmarshalJSON is the custom unmarshaler for ContinuousWebJob struct.
5924func (cwj *ContinuousWebJob) UnmarshalJSON(body []byte) error {
5925	var m map[string]*json.RawMessage
5926	err := json.Unmarshal(body, &m)
5927	if err != nil {
5928		return err
5929	}
5930	for k, v := range m {
5931		switch k {
5932		case "properties":
5933			if v != nil {
5934				var continuousWebJobProperties ContinuousWebJobProperties
5935				err = json.Unmarshal(*v, &continuousWebJobProperties)
5936				if err != nil {
5937					return err
5938				}
5939				cwj.ContinuousWebJobProperties = &continuousWebJobProperties
5940			}
5941		case "id":
5942			if v != nil {
5943				var ID string
5944				err = json.Unmarshal(*v, &ID)
5945				if err != nil {
5946					return err
5947				}
5948				cwj.ID = &ID
5949			}
5950		case "name":
5951			if v != nil {
5952				var name string
5953				err = json.Unmarshal(*v, &name)
5954				if err != nil {
5955					return err
5956				}
5957				cwj.Name = &name
5958			}
5959		case "kind":
5960			if v != nil {
5961				var kind string
5962				err = json.Unmarshal(*v, &kind)
5963				if err != nil {
5964					return err
5965				}
5966				cwj.Kind = &kind
5967			}
5968		case "type":
5969			if v != nil {
5970				var typeVar string
5971				err = json.Unmarshal(*v, &typeVar)
5972				if err != nil {
5973					return err
5974				}
5975				cwj.Type = &typeVar
5976			}
5977		}
5978	}
5979
5980	return nil
5981}
5982
5983// ContinuousWebJobCollection collection of Kudu continuous web job information elements.
5984type ContinuousWebJobCollection struct {
5985	autorest.Response `json:"-"`
5986	// Value - Collection of resources.
5987	Value *[]ContinuousWebJob `json:"value,omitempty"`
5988	// NextLink - READ-ONLY; Link to next page of resources.
5989	NextLink *string `json:"nextLink,omitempty"`
5990}
5991
5992// MarshalJSON is the custom marshaler for ContinuousWebJobCollection.
5993func (cwjc ContinuousWebJobCollection) MarshalJSON() ([]byte, error) {
5994	objectMap := make(map[string]interface{})
5995	if cwjc.Value != nil {
5996		objectMap["value"] = cwjc.Value
5997	}
5998	return json.Marshal(objectMap)
5999}
6000
6001// ContinuousWebJobCollectionIterator provides access to a complete listing of ContinuousWebJob values.
6002type ContinuousWebJobCollectionIterator struct {
6003	i    int
6004	page ContinuousWebJobCollectionPage
6005}
6006
6007// NextWithContext advances to the next value.  If there was an error making
6008// the request the iterator does not advance and the error is returned.
6009func (iter *ContinuousWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6010	if tracing.IsEnabled() {
6011		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionIterator.NextWithContext")
6012		defer func() {
6013			sc := -1
6014			if iter.Response().Response.Response != nil {
6015				sc = iter.Response().Response.Response.StatusCode
6016			}
6017			tracing.EndSpan(ctx, sc, err)
6018		}()
6019	}
6020	iter.i++
6021	if iter.i < len(iter.page.Values()) {
6022		return nil
6023	}
6024	err = iter.page.NextWithContext(ctx)
6025	if err != nil {
6026		iter.i--
6027		return err
6028	}
6029	iter.i = 0
6030	return nil
6031}
6032
6033// Next advances to the next value.  If there was an error making
6034// the request the iterator does not advance and the error is returned.
6035// Deprecated: Use NextWithContext() instead.
6036func (iter *ContinuousWebJobCollectionIterator) Next() error {
6037	return iter.NextWithContext(context.Background())
6038}
6039
6040// NotDone returns true if the enumeration should be started or is not yet complete.
6041func (iter ContinuousWebJobCollectionIterator) NotDone() bool {
6042	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6043}
6044
6045// Response returns the raw server response from the last page request.
6046func (iter ContinuousWebJobCollectionIterator) Response() ContinuousWebJobCollection {
6047	return iter.page.Response()
6048}
6049
6050// Value returns the current value or a zero-initialized value if the
6051// iterator has advanced beyond the end of the collection.
6052func (iter ContinuousWebJobCollectionIterator) Value() ContinuousWebJob {
6053	if !iter.page.NotDone() {
6054		return ContinuousWebJob{}
6055	}
6056	return iter.page.Values()[iter.i]
6057}
6058
6059// Creates a new instance of the ContinuousWebJobCollectionIterator type.
6060func NewContinuousWebJobCollectionIterator(page ContinuousWebJobCollectionPage) ContinuousWebJobCollectionIterator {
6061	return ContinuousWebJobCollectionIterator{page: page}
6062}
6063
6064// IsEmpty returns true if the ListResult contains no values.
6065func (cwjc ContinuousWebJobCollection) IsEmpty() bool {
6066	return cwjc.Value == nil || len(*cwjc.Value) == 0
6067}
6068
6069// hasNextLink returns true if the NextLink is not empty.
6070func (cwjc ContinuousWebJobCollection) hasNextLink() bool {
6071	return cwjc.NextLink != nil && len(*cwjc.NextLink) != 0
6072}
6073
6074// continuousWebJobCollectionPreparer prepares a request to retrieve the next set of results.
6075// It returns nil if no more results exist.
6076func (cwjc ContinuousWebJobCollection) continuousWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
6077	if !cwjc.hasNextLink() {
6078		return nil, nil
6079	}
6080	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6081		autorest.AsJSON(),
6082		autorest.AsGet(),
6083		autorest.WithBaseURL(to.String(cwjc.NextLink)))
6084}
6085
6086// ContinuousWebJobCollectionPage contains a page of ContinuousWebJob values.
6087type ContinuousWebJobCollectionPage struct {
6088	fn   func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)
6089	cwjc ContinuousWebJobCollection
6090}
6091
6092// NextWithContext advances to the next page of values.  If there was an error making
6093// the request the page does not advance and the error is returned.
6094func (page *ContinuousWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
6095	if tracing.IsEnabled() {
6096		ctx = tracing.StartSpan(ctx, fqdn+"/ContinuousWebJobCollectionPage.NextWithContext")
6097		defer func() {
6098			sc := -1
6099			if page.Response().Response.Response != nil {
6100				sc = page.Response().Response.Response.StatusCode
6101			}
6102			tracing.EndSpan(ctx, sc, err)
6103		}()
6104	}
6105	for {
6106		next, err := page.fn(ctx, page.cwjc)
6107		if err != nil {
6108			return err
6109		}
6110		page.cwjc = next
6111		if !next.hasNextLink() || !next.IsEmpty() {
6112			break
6113		}
6114	}
6115	return nil
6116}
6117
6118// Next advances to the next page of values.  If there was an error making
6119// the request the page does not advance and the error is returned.
6120// Deprecated: Use NextWithContext() instead.
6121func (page *ContinuousWebJobCollectionPage) Next() error {
6122	return page.NextWithContext(context.Background())
6123}
6124
6125// NotDone returns true if the page enumeration should be started or is not yet complete.
6126func (page ContinuousWebJobCollectionPage) NotDone() bool {
6127	return !page.cwjc.IsEmpty()
6128}
6129
6130// Response returns the raw server response from the last page request.
6131func (page ContinuousWebJobCollectionPage) Response() ContinuousWebJobCollection {
6132	return page.cwjc
6133}
6134
6135// Values returns the slice of values for the current page or nil if there are no values.
6136func (page ContinuousWebJobCollectionPage) Values() []ContinuousWebJob {
6137	if page.cwjc.IsEmpty() {
6138		return nil
6139	}
6140	return *page.cwjc.Value
6141}
6142
6143// Creates a new instance of the ContinuousWebJobCollectionPage type.
6144func NewContinuousWebJobCollectionPage(cur ContinuousWebJobCollection, getNextPage func(context.Context, ContinuousWebJobCollection) (ContinuousWebJobCollection, error)) ContinuousWebJobCollectionPage {
6145	return ContinuousWebJobCollectionPage{
6146		fn:   getNextPage,
6147		cwjc: cur,
6148	}
6149}
6150
6151// ContinuousWebJobProperties continuousWebJob resource specific properties
6152type ContinuousWebJobProperties struct {
6153	// Status - Job status. Possible values include: 'Initializing', 'Starting', 'Running', 'PendingRestart', 'Stopped'
6154	Status ContinuousWebJobStatus `json:"status,omitempty"`
6155	// DetailedStatus - Detailed status.
6156	DetailedStatus *string `json:"detailed_status,omitempty"`
6157	// LogURL - Log URL.
6158	LogURL *string `json:"log_url,omitempty"`
6159	// RunCommand - Run command.
6160	RunCommand *string `json:"run_command,omitempty"`
6161	// URL - Job URL.
6162	URL *string `json:"url,omitempty"`
6163	// ExtraInfoURL - Extra Info URL.
6164	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
6165	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
6166	WebJobType JobType `json:"web_job_type,omitempty"`
6167	// Error - Error information.
6168	Error *string `json:"error,omitempty"`
6169	// UsingSdk - Using SDK?
6170	UsingSdk *bool `json:"using_sdk,omitempty"`
6171	// Settings - Job settings.
6172	Settings map[string]interface{} `json:"settings"`
6173}
6174
6175// MarshalJSON is the custom marshaler for ContinuousWebJobProperties.
6176func (cwj ContinuousWebJobProperties) MarshalJSON() ([]byte, error) {
6177	objectMap := make(map[string]interface{})
6178	if cwj.Status != "" {
6179		objectMap["status"] = cwj.Status
6180	}
6181	if cwj.DetailedStatus != nil {
6182		objectMap["detailed_status"] = cwj.DetailedStatus
6183	}
6184	if cwj.LogURL != nil {
6185		objectMap["log_url"] = cwj.LogURL
6186	}
6187	if cwj.RunCommand != nil {
6188		objectMap["run_command"] = cwj.RunCommand
6189	}
6190	if cwj.URL != nil {
6191		objectMap["url"] = cwj.URL
6192	}
6193	if cwj.ExtraInfoURL != nil {
6194		objectMap["extra_info_url"] = cwj.ExtraInfoURL
6195	}
6196	if cwj.WebJobType != "" {
6197		objectMap["web_job_type"] = cwj.WebJobType
6198	}
6199	if cwj.Error != nil {
6200		objectMap["error"] = cwj.Error
6201	}
6202	if cwj.UsingSdk != nil {
6203		objectMap["using_sdk"] = cwj.UsingSdk
6204	}
6205	if cwj.Settings != nil {
6206		objectMap["settings"] = cwj.Settings
6207	}
6208	return json.Marshal(objectMap)
6209}
6210
6211// CookieExpiration ...
6212type CookieExpiration struct {
6213	// CookieExpirationProperties - CookieExpiration resource specific properties
6214	*CookieExpirationProperties `json:"properties,omitempty"`
6215	// ID - READ-ONLY; Resource Id.
6216	ID *string `json:"id,omitempty"`
6217	// Name - READ-ONLY; Resource Name.
6218	Name *string `json:"name,omitempty"`
6219	// Kind - Kind of resource.
6220	Kind *string `json:"kind,omitempty"`
6221	// Type - READ-ONLY; Resource type.
6222	Type *string `json:"type,omitempty"`
6223}
6224
6225// MarshalJSON is the custom marshaler for CookieExpiration.
6226func (ce CookieExpiration) MarshalJSON() ([]byte, error) {
6227	objectMap := make(map[string]interface{})
6228	if ce.CookieExpirationProperties != nil {
6229		objectMap["properties"] = ce.CookieExpirationProperties
6230	}
6231	if ce.Kind != nil {
6232		objectMap["kind"] = ce.Kind
6233	}
6234	return json.Marshal(objectMap)
6235}
6236
6237// UnmarshalJSON is the custom unmarshaler for CookieExpiration struct.
6238func (ce *CookieExpiration) UnmarshalJSON(body []byte) error {
6239	var m map[string]*json.RawMessage
6240	err := json.Unmarshal(body, &m)
6241	if err != nil {
6242		return err
6243	}
6244	for k, v := range m {
6245		switch k {
6246		case "properties":
6247			if v != nil {
6248				var cookieExpirationProperties CookieExpirationProperties
6249				err = json.Unmarshal(*v, &cookieExpirationProperties)
6250				if err != nil {
6251					return err
6252				}
6253				ce.CookieExpirationProperties = &cookieExpirationProperties
6254			}
6255		case "id":
6256			if v != nil {
6257				var ID string
6258				err = json.Unmarshal(*v, &ID)
6259				if err != nil {
6260					return err
6261				}
6262				ce.ID = &ID
6263			}
6264		case "name":
6265			if v != nil {
6266				var name string
6267				err = json.Unmarshal(*v, &name)
6268				if err != nil {
6269					return err
6270				}
6271				ce.Name = &name
6272			}
6273		case "kind":
6274			if v != nil {
6275				var kind string
6276				err = json.Unmarshal(*v, &kind)
6277				if err != nil {
6278					return err
6279				}
6280				ce.Kind = &kind
6281			}
6282		case "type":
6283			if v != nil {
6284				var typeVar string
6285				err = json.Unmarshal(*v, &typeVar)
6286				if err != nil {
6287					return err
6288				}
6289				ce.Type = &typeVar
6290			}
6291		}
6292	}
6293
6294	return nil
6295}
6296
6297// CookieExpirationProperties cookieExpiration resource specific properties
6298type CookieExpirationProperties struct {
6299	// Convention - Possible values include: 'FixedTime', 'IdentityProviderDerived'
6300	Convention       CookieExpirationConvention `json:"convention,omitempty"`
6301	TimeToExpiration *string                    `json:"timeToExpiration,omitempty"`
6302}
6303
6304// CorsSettings cross-Origin Resource Sharing (CORS) settings for the app.
6305type CorsSettings struct {
6306	// AllowedOrigins - Gets or sets the list of origins that should be allowed to make cross-origin
6307	// calls (for example: http://example.com:12345). Use "*" to allow all.
6308	AllowedOrigins *[]string `json:"allowedOrigins,omitempty"`
6309	// SupportCredentials - Gets or sets whether CORS requests with credentials are allowed. See
6310	// https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials
6311	// for more details.
6312	SupportCredentials *bool `json:"supportCredentials,omitempty"`
6313}
6314
6315// CsmCopySlotEntity copy deployment slot parameters.
6316type CsmCopySlotEntity struct {
6317	// TargetSlot - Destination deployment slot during copy operation.
6318	TargetSlot *string `json:"targetSlot,omitempty"`
6319	// SiteConfig - The site object which will be merged with the source slot site
6320	// to produce new destination slot site object.
6321	// <code>null</code> to just copy source slot content. Otherwise a <code>Site</code>
6322	// object with properties to override source slot site.
6323	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
6324}
6325
6326// CsmMoveResourceEnvelope object with a list of the resources that need to be moved and the resource group
6327// they should be moved to.
6328type CsmMoveResourceEnvelope struct {
6329	TargetResourceGroup *string   `json:"targetResourceGroup,omitempty"`
6330	Resources           *[]string `json:"resources,omitempty"`
6331}
6332
6333// CsmOperationCollection collection of Azure resource manager operation metadata.
6334type CsmOperationCollection struct {
6335	autorest.Response `json:"-"`
6336	// Value - Collection of resources.
6337	Value *[]CsmOperationDescription `json:"value,omitempty"`
6338	// NextLink - READ-ONLY; Link to next page of resources.
6339	NextLink *string `json:"nextLink,omitempty"`
6340}
6341
6342// MarshalJSON is the custom marshaler for CsmOperationCollection.
6343func (coc CsmOperationCollection) MarshalJSON() ([]byte, error) {
6344	objectMap := make(map[string]interface{})
6345	if coc.Value != nil {
6346		objectMap["value"] = coc.Value
6347	}
6348	return json.Marshal(objectMap)
6349}
6350
6351// CsmOperationCollectionIterator provides access to a complete listing of CsmOperationDescription values.
6352type CsmOperationCollectionIterator struct {
6353	i    int
6354	page CsmOperationCollectionPage
6355}
6356
6357// NextWithContext advances to the next value.  If there was an error making
6358// the request the iterator does not advance and the error is returned.
6359func (iter *CsmOperationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6360	if tracing.IsEnabled() {
6361		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionIterator.NextWithContext")
6362		defer func() {
6363			sc := -1
6364			if iter.Response().Response.Response != nil {
6365				sc = iter.Response().Response.Response.StatusCode
6366			}
6367			tracing.EndSpan(ctx, sc, err)
6368		}()
6369	}
6370	iter.i++
6371	if iter.i < len(iter.page.Values()) {
6372		return nil
6373	}
6374	err = iter.page.NextWithContext(ctx)
6375	if err != nil {
6376		iter.i--
6377		return err
6378	}
6379	iter.i = 0
6380	return nil
6381}
6382
6383// Next advances to the next value.  If there was an error making
6384// the request the iterator does not advance and the error is returned.
6385// Deprecated: Use NextWithContext() instead.
6386func (iter *CsmOperationCollectionIterator) Next() error {
6387	return iter.NextWithContext(context.Background())
6388}
6389
6390// NotDone returns true if the enumeration should be started or is not yet complete.
6391func (iter CsmOperationCollectionIterator) NotDone() bool {
6392	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6393}
6394
6395// Response returns the raw server response from the last page request.
6396func (iter CsmOperationCollectionIterator) Response() CsmOperationCollection {
6397	return iter.page.Response()
6398}
6399
6400// Value returns the current value or a zero-initialized value if the
6401// iterator has advanced beyond the end of the collection.
6402func (iter CsmOperationCollectionIterator) Value() CsmOperationDescription {
6403	if !iter.page.NotDone() {
6404		return CsmOperationDescription{}
6405	}
6406	return iter.page.Values()[iter.i]
6407}
6408
6409// Creates a new instance of the CsmOperationCollectionIterator type.
6410func NewCsmOperationCollectionIterator(page CsmOperationCollectionPage) CsmOperationCollectionIterator {
6411	return CsmOperationCollectionIterator{page: page}
6412}
6413
6414// IsEmpty returns true if the ListResult contains no values.
6415func (coc CsmOperationCollection) IsEmpty() bool {
6416	return coc.Value == nil || len(*coc.Value) == 0
6417}
6418
6419// hasNextLink returns true if the NextLink is not empty.
6420func (coc CsmOperationCollection) hasNextLink() bool {
6421	return coc.NextLink != nil && len(*coc.NextLink) != 0
6422}
6423
6424// csmOperationCollectionPreparer prepares a request to retrieve the next set of results.
6425// It returns nil if no more results exist.
6426func (coc CsmOperationCollection) csmOperationCollectionPreparer(ctx context.Context) (*http.Request, error) {
6427	if !coc.hasNextLink() {
6428		return nil, nil
6429	}
6430	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6431		autorest.AsJSON(),
6432		autorest.AsGet(),
6433		autorest.WithBaseURL(to.String(coc.NextLink)))
6434}
6435
6436// CsmOperationCollectionPage contains a page of CsmOperationDescription values.
6437type CsmOperationCollectionPage struct {
6438	fn  func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)
6439	coc CsmOperationCollection
6440}
6441
6442// NextWithContext advances to the next page of values.  If there was an error making
6443// the request the page does not advance and the error is returned.
6444func (page *CsmOperationCollectionPage) NextWithContext(ctx context.Context) (err error) {
6445	if tracing.IsEnabled() {
6446		ctx = tracing.StartSpan(ctx, fqdn+"/CsmOperationCollectionPage.NextWithContext")
6447		defer func() {
6448			sc := -1
6449			if page.Response().Response.Response != nil {
6450				sc = page.Response().Response.Response.StatusCode
6451			}
6452			tracing.EndSpan(ctx, sc, err)
6453		}()
6454	}
6455	for {
6456		next, err := page.fn(ctx, page.coc)
6457		if err != nil {
6458			return err
6459		}
6460		page.coc = next
6461		if !next.hasNextLink() || !next.IsEmpty() {
6462			break
6463		}
6464	}
6465	return nil
6466}
6467
6468// Next advances to the next page of values.  If there was an error making
6469// the request the page does not advance and the error is returned.
6470// Deprecated: Use NextWithContext() instead.
6471func (page *CsmOperationCollectionPage) Next() error {
6472	return page.NextWithContext(context.Background())
6473}
6474
6475// NotDone returns true if the page enumeration should be started or is not yet complete.
6476func (page CsmOperationCollectionPage) NotDone() bool {
6477	return !page.coc.IsEmpty()
6478}
6479
6480// Response returns the raw server response from the last page request.
6481func (page CsmOperationCollectionPage) Response() CsmOperationCollection {
6482	return page.coc
6483}
6484
6485// Values returns the slice of values for the current page or nil if there are no values.
6486func (page CsmOperationCollectionPage) Values() []CsmOperationDescription {
6487	if page.coc.IsEmpty() {
6488		return nil
6489	}
6490	return *page.coc.Value
6491}
6492
6493// Creates a new instance of the CsmOperationCollectionPage type.
6494func NewCsmOperationCollectionPage(cur CsmOperationCollection, getNextPage func(context.Context, CsmOperationCollection) (CsmOperationCollection, error)) CsmOperationCollectionPage {
6495	return CsmOperationCollectionPage{
6496		fn:  getNextPage,
6497		coc: cur,
6498	}
6499}
6500
6501// CsmOperationDescription description of an operation available for Microsoft.Web resource provider.
6502type CsmOperationDescription struct {
6503	Name       *string                            `json:"name,omitempty"`
6504	Display    *CsmOperationDisplay               `json:"display,omitempty"`
6505	Origin     *string                            `json:"origin,omitempty"`
6506	Properties *CsmOperationDescriptionProperties `json:"properties,omitempty"`
6507}
6508
6509// CsmOperationDescriptionProperties properties available for a Microsoft.Web resource provider operation.
6510type CsmOperationDescriptionProperties struct {
6511	ServiceSpecification *ServiceSpecification `json:"serviceSpecification,omitempty"`
6512}
6513
6514// CsmOperationDisplay meta data about operation used for display in portal.
6515type CsmOperationDisplay struct {
6516	Provider    *string `json:"provider,omitempty"`
6517	Resource    *string `json:"resource,omitempty"`
6518	Operation   *string `json:"operation,omitempty"`
6519	Description *string `json:"description,omitempty"`
6520}
6521
6522// CsmPublishingCredentialsPoliciesCollection publishing Credentials Policies collection.
6523type CsmPublishingCredentialsPoliciesCollection struct {
6524	autorest.Response `json:"-"`
6525	// CsmPublishingCredentialsPoliciesCollectionProperties - CsmPublishingCredentialsPoliciesCollection resource specific properties
6526	*CsmPublishingCredentialsPoliciesCollectionProperties `json:"properties,omitempty"`
6527	// ID - READ-ONLY; Resource Id.
6528	ID *string `json:"id,omitempty"`
6529	// Name - READ-ONLY; Resource Name.
6530	Name *string `json:"name,omitempty"`
6531	// Kind - Kind of resource.
6532	Kind *string `json:"kind,omitempty"`
6533	// Type - READ-ONLY; Resource type.
6534	Type *string `json:"type,omitempty"`
6535}
6536
6537// MarshalJSON is the custom marshaler for CsmPublishingCredentialsPoliciesCollection.
6538func (cpcpc CsmPublishingCredentialsPoliciesCollection) MarshalJSON() ([]byte, error) {
6539	objectMap := make(map[string]interface{})
6540	if cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties != nil {
6541		objectMap["properties"] = cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties
6542	}
6543	if cpcpc.Kind != nil {
6544		objectMap["kind"] = cpcpc.Kind
6545	}
6546	return json.Marshal(objectMap)
6547}
6548
6549// UnmarshalJSON is the custom unmarshaler for CsmPublishingCredentialsPoliciesCollection struct.
6550func (cpcpc *CsmPublishingCredentialsPoliciesCollection) UnmarshalJSON(body []byte) error {
6551	var m map[string]*json.RawMessage
6552	err := json.Unmarshal(body, &m)
6553	if err != nil {
6554		return err
6555	}
6556	for k, v := range m {
6557		switch k {
6558		case "properties":
6559			if v != nil {
6560				var csmPublishingCredentialsPoliciesCollectionProperties CsmPublishingCredentialsPoliciesCollectionProperties
6561				err = json.Unmarshal(*v, &csmPublishingCredentialsPoliciesCollectionProperties)
6562				if err != nil {
6563					return err
6564				}
6565				cpcpc.CsmPublishingCredentialsPoliciesCollectionProperties = &csmPublishingCredentialsPoliciesCollectionProperties
6566			}
6567		case "id":
6568			if v != nil {
6569				var ID string
6570				err = json.Unmarshal(*v, &ID)
6571				if err != nil {
6572					return err
6573				}
6574				cpcpc.ID = &ID
6575			}
6576		case "name":
6577			if v != nil {
6578				var name string
6579				err = json.Unmarshal(*v, &name)
6580				if err != nil {
6581					return err
6582				}
6583				cpcpc.Name = &name
6584			}
6585		case "kind":
6586			if v != nil {
6587				var kind string
6588				err = json.Unmarshal(*v, &kind)
6589				if err != nil {
6590					return err
6591				}
6592				cpcpc.Kind = &kind
6593			}
6594		case "type":
6595			if v != nil {
6596				var typeVar string
6597				err = json.Unmarshal(*v, &typeVar)
6598				if err != nil {
6599					return err
6600				}
6601				cpcpc.Type = &typeVar
6602			}
6603		}
6604	}
6605
6606	return nil
6607}
6608
6609// CsmPublishingCredentialsPoliciesCollectionProperties csmPublishingCredentialsPoliciesCollection resource
6610// specific properties
6611type CsmPublishingCredentialsPoliciesCollectionProperties struct {
6612	// Ftp - Whether FTP is allowed.
6613	Ftp *CsmPublishingCredentialsPoliciesEntity `json:"ftp,omitempty"`
6614	// Scm - Whether Scm Basic Auth is allowed.
6615	Scm *CsmPublishingCredentialsPoliciesEntity `json:"scm,omitempty"`
6616}
6617
6618// CsmPublishingCredentialsPoliciesEntity publishing Credentials Policies parameters.
6619type CsmPublishingCredentialsPoliciesEntity struct {
6620	autorest.Response `json:"-"`
6621	// CsmPublishingCredentialsPoliciesEntityProperties - CsmPublishingCredentialsPoliciesEntity resource specific properties
6622	*CsmPublishingCredentialsPoliciesEntityProperties `json:"properties,omitempty"`
6623	// ID - READ-ONLY; Resource Id.
6624	ID *string `json:"id,omitempty"`
6625	// Name - READ-ONLY; Resource Name.
6626	Name *string `json:"name,omitempty"`
6627	// Kind - Kind of resource.
6628	Kind *string `json:"kind,omitempty"`
6629	// Type - READ-ONLY; Resource type.
6630	Type *string `json:"type,omitempty"`
6631}
6632
6633// MarshalJSON is the custom marshaler for CsmPublishingCredentialsPoliciesEntity.
6634func (cpcpe CsmPublishingCredentialsPoliciesEntity) MarshalJSON() ([]byte, error) {
6635	objectMap := make(map[string]interface{})
6636	if cpcpe.CsmPublishingCredentialsPoliciesEntityProperties != nil {
6637		objectMap["properties"] = cpcpe.CsmPublishingCredentialsPoliciesEntityProperties
6638	}
6639	if cpcpe.Kind != nil {
6640		objectMap["kind"] = cpcpe.Kind
6641	}
6642	return json.Marshal(objectMap)
6643}
6644
6645// UnmarshalJSON is the custom unmarshaler for CsmPublishingCredentialsPoliciesEntity struct.
6646func (cpcpe *CsmPublishingCredentialsPoliciesEntity) UnmarshalJSON(body []byte) error {
6647	var m map[string]*json.RawMessage
6648	err := json.Unmarshal(body, &m)
6649	if err != nil {
6650		return err
6651	}
6652	for k, v := range m {
6653		switch k {
6654		case "properties":
6655			if v != nil {
6656				var csmPublishingCredentialsPoliciesEntityProperties CsmPublishingCredentialsPoliciesEntityProperties
6657				err = json.Unmarshal(*v, &csmPublishingCredentialsPoliciesEntityProperties)
6658				if err != nil {
6659					return err
6660				}
6661				cpcpe.CsmPublishingCredentialsPoliciesEntityProperties = &csmPublishingCredentialsPoliciesEntityProperties
6662			}
6663		case "id":
6664			if v != nil {
6665				var ID string
6666				err = json.Unmarshal(*v, &ID)
6667				if err != nil {
6668					return err
6669				}
6670				cpcpe.ID = &ID
6671			}
6672		case "name":
6673			if v != nil {
6674				var name string
6675				err = json.Unmarshal(*v, &name)
6676				if err != nil {
6677					return err
6678				}
6679				cpcpe.Name = &name
6680			}
6681		case "kind":
6682			if v != nil {
6683				var kind string
6684				err = json.Unmarshal(*v, &kind)
6685				if err != nil {
6686					return err
6687				}
6688				cpcpe.Kind = &kind
6689			}
6690		case "type":
6691			if v != nil {
6692				var typeVar string
6693				err = json.Unmarshal(*v, &typeVar)
6694				if err != nil {
6695					return err
6696				}
6697				cpcpe.Type = &typeVar
6698			}
6699		}
6700	}
6701
6702	return nil
6703}
6704
6705// CsmPublishingCredentialsPoliciesEntityProperties csmPublishingCredentialsPoliciesEntity resource
6706// specific properties
6707type CsmPublishingCredentialsPoliciesEntityProperties struct {
6708	// Allow - <code>true</code> to allow access to a publishing method; otherwise, <code>false</code>.
6709	Allow *bool `json:"allow,omitempty"`
6710}
6711
6712// CsmPublishingProfileOptions publishing options for requested profile.
6713type CsmPublishingProfileOptions struct {
6714	// Format - Name of the format. Valid values are:
6715	// FileZilla3
6716	// WebDeploy -- default
6717	// Ftp. Possible values include: 'FileZilla3', 'WebDeploy', 'Ftp'
6718	Format PublishingProfileFormat `json:"format,omitempty"`
6719	// IncludeDisasterRecoveryEndpoints - Include the DisasterRecover endpoint if true
6720	IncludeDisasterRecoveryEndpoints *bool `json:"includeDisasterRecoveryEndpoints,omitempty"`
6721}
6722
6723// CsmSlotEntity deployment slot parameters.
6724type CsmSlotEntity struct {
6725	// TargetSlot - Destination deployment slot during swap operation.
6726	TargetSlot *string `json:"targetSlot,omitempty"`
6727	// PreserveVnet - <code>true</code> to preserve Virtual Network to the slot during swap; otherwise, <code>false</code>.
6728	PreserveVnet *bool `json:"preserveVnet,omitempty"`
6729}
6730
6731// CsmUsageQuota usage of the quota resource.
6732type CsmUsageQuota struct {
6733	// Unit - Units of measurement for the quota resource.
6734	Unit *string `json:"unit,omitempty"`
6735	// NextResetTime - Next reset time for the resource counter.
6736	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
6737	// CurrentValue - The current value of the resource counter.
6738	CurrentValue *int64 `json:"currentValue,omitempty"`
6739	// Limit - The resource limit.
6740	Limit *int64 `json:"limit,omitempty"`
6741	// Name - Quota name.
6742	Name *LocalizableString `json:"name,omitempty"`
6743}
6744
6745// CsmUsageQuotaCollection collection of CSM usage quotas.
6746type CsmUsageQuotaCollection struct {
6747	autorest.Response `json:"-"`
6748	// Value - Collection of resources.
6749	Value *[]CsmUsageQuota `json:"value,omitempty"`
6750	// NextLink - READ-ONLY; Link to next page of resources.
6751	NextLink *string `json:"nextLink,omitempty"`
6752}
6753
6754// MarshalJSON is the custom marshaler for CsmUsageQuotaCollection.
6755func (cuqc CsmUsageQuotaCollection) MarshalJSON() ([]byte, error) {
6756	objectMap := make(map[string]interface{})
6757	if cuqc.Value != nil {
6758		objectMap["value"] = cuqc.Value
6759	}
6760	return json.Marshal(objectMap)
6761}
6762
6763// CsmUsageQuotaCollectionIterator provides access to a complete listing of CsmUsageQuota values.
6764type CsmUsageQuotaCollectionIterator struct {
6765	i    int
6766	page CsmUsageQuotaCollectionPage
6767}
6768
6769// NextWithContext advances to the next value.  If there was an error making
6770// the request the iterator does not advance and the error is returned.
6771func (iter *CsmUsageQuotaCollectionIterator) NextWithContext(ctx context.Context) (err error) {
6772	if tracing.IsEnabled() {
6773		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionIterator.NextWithContext")
6774		defer func() {
6775			sc := -1
6776			if iter.Response().Response.Response != nil {
6777				sc = iter.Response().Response.Response.StatusCode
6778			}
6779			tracing.EndSpan(ctx, sc, err)
6780		}()
6781	}
6782	iter.i++
6783	if iter.i < len(iter.page.Values()) {
6784		return nil
6785	}
6786	err = iter.page.NextWithContext(ctx)
6787	if err != nil {
6788		iter.i--
6789		return err
6790	}
6791	iter.i = 0
6792	return nil
6793}
6794
6795// Next advances to the next value.  If there was an error making
6796// the request the iterator does not advance and the error is returned.
6797// Deprecated: Use NextWithContext() instead.
6798func (iter *CsmUsageQuotaCollectionIterator) Next() error {
6799	return iter.NextWithContext(context.Background())
6800}
6801
6802// NotDone returns true if the enumeration should be started or is not yet complete.
6803func (iter CsmUsageQuotaCollectionIterator) NotDone() bool {
6804	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6805}
6806
6807// Response returns the raw server response from the last page request.
6808func (iter CsmUsageQuotaCollectionIterator) Response() CsmUsageQuotaCollection {
6809	return iter.page.Response()
6810}
6811
6812// Value returns the current value or a zero-initialized value if the
6813// iterator has advanced beyond the end of the collection.
6814func (iter CsmUsageQuotaCollectionIterator) Value() CsmUsageQuota {
6815	if !iter.page.NotDone() {
6816		return CsmUsageQuota{}
6817	}
6818	return iter.page.Values()[iter.i]
6819}
6820
6821// Creates a new instance of the CsmUsageQuotaCollectionIterator type.
6822func NewCsmUsageQuotaCollectionIterator(page CsmUsageQuotaCollectionPage) CsmUsageQuotaCollectionIterator {
6823	return CsmUsageQuotaCollectionIterator{page: page}
6824}
6825
6826// IsEmpty returns true if the ListResult contains no values.
6827func (cuqc CsmUsageQuotaCollection) IsEmpty() bool {
6828	return cuqc.Value == nil || len(*cuqc.Value) == 0
6829}
6830
6831// hasNextLink returns true if the NextLink is not empty.
6832func (cuqc CsmUsageQuotaCollection) hasNextLink() bool {
6833	return cuqc.NextLink != nil && len(*cuqc.NextLink) != 0
6834}
6835
6836// csmUsageQuotaCollectionPreparer prepares a request to retrieve the next set of results.
6837// It returns nil if no more results exist.
6838func (cuqc CsmUsageQuotaCollection) csmUsageQuotaCollectionPreparer(ctx context.Context) (*http.Request, error) {
6839	if !cuqc.hasNextLink() {
6840		return nil, nil
6841	}
6842	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6843		autorest.AsJSON(),
6844		autorest.AsGet(),
6845		autorest.WithBaseURL(to.String(cuqc.NextLink)))
6846}
6847
6848// CsmUsageQuotaCollectionPage contains a page of CsmUsageQuota values.
6849type CsmUsageQuotaCollectionPage struct {
6850	fn   func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)
6851	cuqc CsmUsageQuotaCollection
6852}
6853
6854// NextWithContext advances to the next page of values.  If there was an error making
6855// the request the page does not advance and the error is returned.
6856func (page *CsmUsageQuotaCollectionPage) NextWithContext(ctx context.Context) (err error) {
6857	if tracing.IsEnabled() {
6858		ctx = tracing.StartSpan(ctx, fqdn+"/CsmUsageQuotaCollectionPage.NextWithContext")
6859		defer func() {
6860			sc := -1
6861			if page.Response().Response.Response != nil {
6862				sc = page.Response().Response.Response.StatusCode
6863			}
6864			tracing.EndSpan(ctx, sc, err)
6865		}()
6866	}
6867	for {
6868		next, err := page.fn(ctx, page.cuqc)
6869		if err != nil {
6870			return err
6871		}
6872		page.cuqc = next
6873		if !next.hasNextLink() || !next.IsEmpty() {
6874			break
6875		}
6876	}
6877	return nil
6878}
6879
6880// Next advances to the next page of values.  If there was an error making
6881// the request the page does not advance and the error is returned.
6882// Deprecated: Use NextWithContext() instead.
6883func (page *CsmUsageQuotaCollectionPage) Next() error {
6884	return page.NextWithContext(context.Background())
6885}
6886
6887// NotDone returns true if the page enumeration should be started or is not yet complete.
6888func (page CsmUsageQuotaCollectionPage) NotDone() bool {
6889	return !page.cuqc.IsEmpty()
6890}
6891
6892// Response returns the raw server response from the last page request.
6893func (page CsmUsageQuotaCollectionPage) Response() CsmUsageQuotaCollection {
6894	return page.cuqc
6895}
6896
6897// Values returns the slice of values for the current page or nil if there are no values.
6898func (page CsmUsageQuotaCollectionPage) Values() []CsmUsageQuota {
6899	if page.cuqc.IsEmpty() {
6900		return nil
6901	}
6902	return *page.cuqc.Value
6903}
6904
6905// Creates a new instance of the CsmUsageQuotaCollectionPage type.
6906func NewCsmUsageQuotaCollectionPage(cur CsmUsageQuotaCollection, getNextPage func(context.Context, CsmUsageQuotaCollection) (CsmUsageQuotaCollection, error)) CsmUsageQuotaCollectionPage {
6907	return CsmUsageQuotaCollectionPage{
6908		fn:   getNextPage,
6909		cuqc: cur,
6910	}
6911}
6912
6913// CustomHostnameAnalysisResult custom domain analysis.
6914type CustomHostnameAnalysisResult struct {
6915	autorest.Response `json:"-"`
6916	// CustomHostnameAnalysisResultProperties - CustomHostnameAnalysisResult resource specific properties
6917	*CustomHostnameAnalysisResultProperties `json:"properties,omitempty"`
6918	// ID - READ-ONLY; Resource Id.
6919	ID *string `json:"id,omitempty"`
6920	// Name - READ-ONLY; Resource Name.
6921	Name *string `json:"name,omitempty"`
6922	// Kind - Kind of resource.
6923	Kind *string `json:"kind,omitempty"`
6924	// Type - READ-ONLY; Resource type.
6925	Type *string `json:"type,omitempty"`
6926}
6927
6928// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResult.
6929func (char CustomHostnameAnalysisResult) MarshalJSON() ([]byte, error) {
6930	objectMap := make(map[string]interface{})
6931	if char.CustomHostnameAnalysisResultProperties != nil {
6932		objectMap["properties"] = char.CustomHostnameAnalysisResultProperties
6933	}
6934	if char.Kind != nil {
6935		objectMap["kind"] = char.Kind
6936	}
6937	return json.Marshal(objectMap)
6938}
6939
6940// UnmarshalJSON is the custom unmarshaler for CustomHostnameAnalysisResult struct.
6941func (char *CustomHostnameAnalysisResult) UnmarshalJSON(body []byte) error {
6942	var m map[string]*json.RawMessage
6943	err := json.Unmarshal(body, &m)
6944	if err != nil {
6945		return err
6946	}
6947	for k, v := range m {
6948		switch k {
6949		case "properties":
6950			if v != nil {
6951				var customHostnameAnalysisResultProperties CustomHostnameAnalysisResultProperties
6952				err = json.Unmarshal(*v, &customHostnameAnalysisResultProperties)
6953				if err != nil {
6954					return err
6955				}
6956				char.CustomHostnameAnalysisResultProperties = &customHostnameAnalysisResultProperties
6957			}
6958		case "id":
6959			if v != nil {
6960				var ID string
6961				err = json.Unmarshal(*v, &ID)
6962				if err != nil {
6963					return err
6964				}
6965				char.ID = &ID
6966			}
6967		case "name":
6968			if v != nil {
6969				var name string
6970				err = json.Unmarshal(*v, &name)
6971				if err != nil {
6972					return err
6973				}
6974				char.Name = &name
6975			}
6976		case "kind":
6977			if v != nil {
6978				var kind string
6979				err = json.Unmarshal(*v, &kind)
6980				if err != nil {
6981					return err
6982				}
6983				char.Kind = &kind
6984			}
6985		case "type":
6986			if v != nil {
6987				var typeVar string
6988				err = json.Unmarshal(*v, &typeVar)
6989				if err != nil {
6990					return err
6991				}
6992				char.Type = &typeVar
6993			}
6994		}
6995	}
6996
6997	return nil
6998}
6999
7000// CustomHostnameAnalysisResultProperties customHostnameAnalysisResult resource specific properties
7001type CustomHostnameAnalysisResultProperties struct {
7002	// IsHostnameAlreadyVerified - READ-ONLY; <code>true</code> if hostname is already verified; otherwise, <code>false</code>.
7003	IsHostnameAlreadyVerified *bool `json:"isHostnameAlreadyVerified,omitempty"`
7004	// CustomDomainVerificationTest - READ-ONLY; DNS verification test result. Possible values include: 'DNSVerificationTestResultPassed', 'DNSVerificationTestResultFailed', 'DNSVerificationTestResultSkipped'
7005	CustomDomainVerificationTest DNSVerificationTestResult `json:"customDomainVerificationTest,omitempty"`
7006	// CustomDomainVerificationFailureInfo - READ-ONLY; Raw failure information if DNS verification fails.
7007	CustomDomainVerificationFailureInfo *ErrorEntity `json:"customDomainVerificationFailureInfo,omitempty"`
7008	// HasConflictOnScaleUnit - READ-ONLY; <code>true</code> if there is a conflict on a scale unit; otherwise, <code>false</code>.
7009	HasConflictOnScaleUnit *bool `json:"hasConflictOnScaleUnit,omitempty"`
7010	// HasConflictAcrossSubscription - READ-ONLY; <code>true</code> if there is a conflict across subscriptions; otherwise, <code>false</code>.
7011	HasConflictAcrossSubscription *bool `json:"hasConflictAcrossSubscription,omitempty"`
7012	// ConflictingAppResourceID - READ-ONLY; Name of the conflicting app on scale unit if it's within the same subscription.
7013	ConflictingAppResourceID *string `json:"conflictingAppResourceId,omitempty"`
7014	// CNameRecords - CName records controller can see for this hostname.
7015	CNameRecords *[]string `json:"cNameRecords,omitempty"`
7016	// TxtRecords - TXT records controller can see for this hostname.
7017	TxtRecords *[]string `json:"txtRecords,omitempty"`
7018	// ARecords - A records controller can see for this hostname.
7019	ARecords *[]string `json:"aRecords,omitempty"`
7020	// AlternateCNameRecords - Alternate CName records controller can see for this hostname.
7021	AlternateCNameRecords *[]string `json:"alternateCNameRecords,omitempty"`
7022	// AlternateTxtRecords - Alternate TXT records controller can see for this hostname.
7023	AlternateTxtRecords *[]string `json:"alternateTxtRecords,omitempty"`
7024}
7025
7026// MarshalJSON is the custom marshaler for CustomHostnameAnalysisResultProperties.
7027func (char CustomHostnameAnalysisResultProperties) MarshalJSON() ([]byte, error) {
7028	objectMap := make(map[string]interface{})
7029	if char.CNameRecords != nil {
7030		objectMap["cNameRecords"] = char.CNameRecords
7031	}
7032	if char.TxtRecords != nil {
7033		objectMap["txtRecords"] = char.TxtRecords
7034	}
7035	if char.ARecords != nil {
7036		objectMap["aRecords"] = char.ARecords
7037	}
7038	if char.AlternateCNameRecords != nil {
7039		objectMap["alternateCNameRecords"] = char.AlternateCNameRecords
7040	}
7041	if char.AlternateTxtRecords != nil {
7042		objectMap["alternateTxtRecords"] = char.AlternateTxtRecords
7043	}
7044	return json.Marshal(objectMap)
7045}
7046
7047// CustomOpenIDConnectProvider ...
7048type CustomOpenIDConnectProvider struct {
7049	// CustomOpenIDConnectProviderProperties - CustomOpenIdConnectProvider resource specific properties
7050	*CustomOpenIDConnectProviderProperties `json:"properties,omitempty"`
7051	// ID - READ-ONLY; Resource Id.
7052	ID *string `json:"id,omitempty"`
7053	// Name - READ-ONLY; Resource Name.
7054	Name *string `json:"name,omitempty"`
7055	// Kind - Kind of resource.
7056	Kind *string `json:"kind,omitempty"`
7057	// Type - READ-ONLY; Resource type.
7058	Type *string `json:"type,omitempty"`
7059}
7060
7061// MarshalJSON is the custom marshaler for CustomOpenIDConnectProvider.
7062func (coicp CustomOpenIDConnectProvider) MarshalJSON() ([]byte, error) {
7063	objectMap := make(map[string]interface{})
7064	if coicp.CustomOpenIDConnectProviderProperties != nil {
7065		objectMap["properties"] = coicp.CustomOpenIDConnectProviderProperties
7066	}
7067	if coicp.Kind != nil {
7068		objectMap["kind"] = coicp.Kind
7069	}
7070	return json.Marshal(objectMap)
7071}
7072
7073// UnmarshalJSON is the custom unmarshaler for CustomOpenIDConnectProvider struct.
7074func (coicp *CustomOpenIDConnectProvider) UnmarshalJSON(body []byte) error {
7075	var m map[string]*json.RawMessage
7076	err := json.Unmarshal(body, &m)
7077	if err != nil {
7078		return err
7079	}
7080	for k, v := range m {
7081		switch k {
7082		case "properties":
7083			if v != nil {
7084				var customOpenIDConnectProviderProperties CustomOpenIDConnectProviderProperties
7085				err = json.Unmarshal(*v, &customOpenIDConnectProviderProperties)
7086				if err != nil {
7087					return err
7088				}
7089				coicp.CustomOpenIDConnectProviderProperties = &customOpenIDConnectProviderProperties
7090			}
7091		case "id":
7092			if v != nil {
7093				var ID string
7094				err = json.Unmarshal(*v, &ID)
7095				if err != nil {
7096					return err
7097				}
7098				coicp.ID = &ID
7099			}
7100		case "name":
7101			if v != nil {
7102				var name string
7103				err = json.Unmarshal(*v, &name)
7104				if err != nil {
7105					return err
7106				}
7107				coicp.Name = &name
7108			}
7109		case "kind":
7110			if v != nil {
7111				var kind string
7112				err = json.Unmarshal(*v, &kind)
7113				if err != nil {
7114					return err
7115				}
7116				coicp.Kind = &kind
7117			}
7118		case "type":
7119			if v != nil {
7120				var typeVar string
7121				err = json.Unmarshal(*v, &typeVar)
7122				if err != nil {
7123					return err
7124				}
7125				coicp.Type = &typeVar
7126			}
7127		}
7128	}
7129
7130	return nil
7131}
7132
7133// CustomOpenIDConnectProviderProperties customOpenIdConnectProvider resource specific properties
7134type CustomOpenIDConnectProviderProperties struct {
7135	Enabled      *bool                      `json:"enabled,omitempty"`
7136	Registration *OpenIDConnectRegistration `json:"registration,omitempty"`
7137	Login        *OpenIDConnectLogin        `json:"login,omitempty"`
7138}
7139
7140// DatabaseBackupSetting database backup settings.
7141type DatabaseBackupSetting struct {
7142	// DatabaseType - Database type (e.g. SqlAzure / MySql). Possible values include: 'DatabaseTypeSQLAzure', 'DatabaseTypeMySQL', 'DatabaseTypeLocalMySQL', 'DatabaseTypePostgreSQL'
7143	DatabaseType DatabaseType `json:"databaseType,omitempty"`
7144	Name         *string      `json:"name,omitempty"`
7145	// ConnectionStringName - Contains a connection string name that is linked to the SiteConfig.ConnectionStrings.
7146	// This is used during restore with overwrite connection strings options.
7147	ConnectionStringName *string `json:"connectionStringName,omitempty"`
7148	// 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.
7149	ConnectionString *string `json:"connectionString,omitempty"`
7150}
7151
7152// DataSource class representing data source used by the detectors
7153type DataSource struct {
7154	// Instructions - Instructions if any for the data source
7155	Instructions *[]string `json:"instructions,omitempty"`
7156	// DataSourceURI - Datasource Uri Links
7157	DataSourceURI *[]NameValuePair `json:"dataSourceUri,omitempty"`
7158}
7159
7160// DataTableResponseColumn column definition
7161type DataTableResponseColumn struct {
7162	// ColumnName - Name of the column
7163	ColumnName *string `json:"columnName,omitempty"`
7164	// DataType - Data type which looks like 'String' or 'Int32'.
7165	DataType *string `json:"dataType,omitempty"`
7166	// ColumnType - Column Type
7167	ColumnType *string `json:"columnType,omitempty"`
7168}
7169
7170// DataTableResponseObject data Table which defines columns and raw row values
7171type DataTableResponseObject struct {
7172	// TableName - Name of the table
7173	TableName *string `json:"tableName,omitempty"`
7174	// Columns - List of columns with data types
7175	Columns *[]DataTableResponseColumn `json:"columns,omitempty"`
7176	// Rows - Raw row values
7177	Rows *[][]string `json:"rows,omitempty"`
7178}
7179
7180// DefaultErrorResponse app Service error response.
7181type DefaultErrorResponse struct {
7182	// Error - READ-ONLY; Error model.
7183	Error *DefaultErrorResponseError `json:"error,omitempty"`
7184}
7185
7186// DefaultErrorResponseError error model.
7187type DefaultErrorResponseError struct {
7188	// Code - READ-ONLY; Standardized string to programmatically identify the error.
7189	Code *string `json:"code,omitempty"`
7190	// Message - READ-ONLY; Detailed error description and debugging information.
7191	Message *string `json:"message,omitempty"`
7192	// Target - READ-ONLY; Detailed error description and debugging information.
7193	Target  *string                                 `json:"target,omitempty"`
7194	Details *[]DefaultErrorResponseErrorDetailsItem `json:"details,omitempty"`
7195	// Innererror - READ-ONLY; More information to debug error.
7196	Innererror *string `json:"innererror,omitempty"`
7197}
7198
7199// MarshalJSON is the custom marshaler for DefaultErrorResponseError.
7200func (der DefaultErrorResponseError) MarshalJSON() ([]byte, error) {
7201	objectMap := make(map[string]interface{})
7202	if der.Details != nil {
7203		objectMap["details"] = der.Details
7204	}
7205	return json.Marshal(objectMap)
7206}
7207
7208// DefaultErrorResponseErrorDetailsItem detailed errors.
7209type DefaultErrorResponseErrorDetailsItem struct {
7210	// Code - READ-ONLY; Standardized string to programmatically identify the error.
7211	Code *string `json:"code,omitempty"`
7212	// Message - READ-ONLY; Detailed error description and debugging information.
7213	Message *string `json:"message,omitempty"`
7214	// Target - READ-ONLY; Detailed error description and debugging information.
7215	Target *string `json:"target,omitempty"`
7216}
7217
7218// DeletedAppRestoreRequest details about restoring a deleted app.
7219type DeletedAppRestoreRequest struct {
7220	// DeletedAppRestoreRequestProperties - DeletedAppRestoreRequest resource specific properties
7221	*DeletedAppRestoreRequestProperties `json:"properties,omitempty"`
7222	// ID - READ-ONLY; Resource Id.
7223	ID *string `json:"id,omitempty"`
7224	// Name - READ-ONLY; Resource Name.
7225	Name *string `json:"name,omitempty"`
7226	// Kind - Kind of resource.
7227	Kind *string `json:"kind,omitempty"`
7228	// Type - READ-ONLY; Resource type.
7229	Type *string `json:"type,omitempty"`
7230}
7231
7232// MarshalJSON is the custom marshaler for DeletedAppRestoreRequest.
7233func (darr DeletedAppRestoreRequest) MarshalJSON() ([]byte, error) {
7234	objectMap := make(map[string]interface{})
7235	if darr.DeletedAppRestoreRequestProperties != nil {
7236		objectMap["properties"] = darr.DeletedAppRestoreRequestProperties
7237	}
7238	if darr.Kind != nil {
7239		objectMap["kind"] = darr.Kind
7240	}
7241	return json.Marshal(objectMap)
7242}
7243
7244// UnmarshalJSON is the custom unmarshaler for DeletedAppRestoreRequest struct.
7245func (darr *DeletedAppRestoreRequest) UnmarshalJSON(body []byte) error {
7246	var m map[string]*json.RawMessage
7247	err := json.Unmarshal(body, &m)
7248	if err != nil {
7249		return err
7250	}
7251	for k, v := range m {
7252		switch k {
7253		case "properties":
7254			if v != nil {
7255				var deletedAppRestoreRequestProperties DeletedAppRestoreRequestProperties
7256				err = json.Unmarshal(*v, &deletedAppRestoreRequestProperties)
7257				if err != nil {
7258					return err
7259				}
7260				darr.DeletedAppRestoreRequestProperties = &deletedAppRestoreRequestProperties
7261			}
7262		case "id":
7263			if v != nil {
7264				var ID string
7265				err = json.Unmarshal(*v, &ID)
7266				if err != nil {
7267					return err
7268				}
7269				darr.ID = &ID
7270			}
7271		case "name":
7272			if v != nil {
7273				var name string
7274				err = json.Unmarshal(*v, &name)
7275				if err != nil {
7276					return err
7277				}
7278				darr.Name = &name
7279			}
7280		case "kind":
7281			if v != nil {
7282				var kind string
7283				err = json.Unmarshal(*v, &kind)
7284				if err != nil {
7285					return err
7286				}
7287				darr.Kind = &kind
7288			}
7289		case "type":
7290			if v != nil {
7291				var typeVar string
7292				err = json.Unmarshal(*v, &typeVar)
7293				if err != nil {
7294					return err
7295				}
7296				darr.Type = &typeVar
7297			}
7298		}
7299	}
7300
7301	return nil
7302}
7303
7304// DeletedAppRestoreRequestProperties deletedAppRestoreRequest resource specific properties
7305type DeletedAppRestoreRequestProperties struct {
7306	// DeletedSiteID - ARM resource ID of the deleted app. Example:
7307	// /subscriptions/{subId}/providers/Microsoft.Web/deletedSites/{deletedSiteId}
7308	DeletedSiteID *string `json:"deletedSiteId,omitempty"`
7309	// RecoverConfiguration - If true, deleted site configuration, in addition to content, will be restored.
7310	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
7311	// SnapshotTime - Point in time to restore the deleted app from, formatted as a DateTime string.
7312	// If unspecified, default value is the time that the app was deleted.
7313	SnapshotTime *string `json:"snapshotTime,omitempty"`
7314	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
7315	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
7316}
7317
7318// DeletedSite a deleted app.
7319type DeletedSite struct {
7320	autorest.Response `json:"-"`
7321	// DeletedSiteProperties - DeletedSite resource specific properties
7322	*DeletedSiteProperties `json:"properties,omitempty"`
7323	// ID - READ-ONLY; Resource Id.
7324	ID *string `json:"id,omitempty"`
7325	// Name - READ-ONLY; Resource Name.
7326	Name *string `json:"name,omitempty"`
7327	// Kind - Kind of resource.
7328	Kind *string `json:"kind,omitempty"`
7329	// Type - READ-ONLY; Resource type.
7330	Type *string `json:"type,omitempty"`
7331}
7332
7333// MarshalJSON is the custom marshaler for DeletedSite.
7334func (ds DeletedSite) MarshalJSON() ([]byte, error) {
7335	objectMap := make(map[string]interface{})
7336	if ds.DeletedSiteProperties != nil {
7337		objectMap["properties"] = ds.DeletedSiteProperties
7338	}
7339	if ds.Kind != nil {
7340		objectMap["kind"] = ds.Kind
7341	}
7342	return json.Marshal(objectMap)
7343}
7344
7345// UnmarshalJSON is the custom unmarshaler for DeletedSite struct.
7346func (ds *DeletedSite) UnmarshalJSON(body []byte) error {
7347	var m map[string]*json.RawMessage
7348	err := json.Unmarshal(body, &m)
7349	if err != nil {
7350		return err
7351	}
7352	for k, v := range m {
7353		switch k {
7354		case "properties":
7355			if v != nil {
7356				var deletedSiteProperties DeletedSiteProperties
7357				err = json.Unmarshal(*v, &deletedSiteProperties)
7358				if err != nil {
7359					return err
7360				}
7361				ds.DeletedSiteProperties = &deletedSiteProperties
7362			}
7363		case "id":
7364			if v != nil {
7365				var ID string
7366				err = json.Unmarshal(*v, &ID)
7367				if err != nil {
7368					return err
7369				}
7370				ds.ID = &ID
7371			}
7372		case "name":
7373			if v != nil {
7374				var name string
7375				err = json.Unmarshal(*v, &name)
7376				if err != nil {
7377					return err
7378				}
7379				ds.Name = &name
7380			}
7381		case "kind":
7382			if v != nil {
7383				var kind string
7384				err = json.Unmarshal(*v, &kind)
7385				if err != nil {
7386					return err
7387				}
7388				ds.Kind = &kind
7389			}
7390		case "type":
7391			if v != nil {
7392				var typeVar string
7393				err = json.Unmarshal(*v, &typeVar)
7394				if err != nil {
7395					return err
7396				}
7397				ds.Type = &typeVar
7398			}
7399		}
7400	}
7401
7402	return nil
7403}
7404
7405// DeletedSiteProperties deletedSite resource specific properties
7406type DeletedSiteProperties struct {
7407	// DeletedSiteID - READ-ONLY; Numeric id for the deleted site
7408	DeletedSiteID *int32 `json:"deletedSiteId,omitempty"`
7409	// DeletedTimestamp - READ-ONLY; Time in UTC when the app was deleted.
7410	DeletedTimestamp *string `json:"deletedTimestamp,omitempty"`
7411	// Subscription - READ-ONLY; Subscription containing the deleted site
7412	Subscription *string `json:"subscription,omitempty"`
7413	// ResourceGroup - READ-ONLY; ResourceGroup that contained the deleted site
7414	ResourceGroup *string `json:"resourceGroup,omitempty"`
7415	// DeletedSiteName - READ-ONLY; Name of the deleted site
7416	DeletedSiteName *string `json:"deletedSiteName,omitempty"`
7417	// Slot - READ-ONLY; Slot of the deleted site
7418	Slot *string `json:"slot,omitempty"`
7419	// Kind - READ-ONLY; Kind of site that was deleted
7420	Kind *string `json:"kind,omitempty"`
7421	// GeoRegionName - READ-ONLY; Geo Region of the deleted site
7422	GeoRegionName *string `json:"geoRegionName,omitempty"`
7423}
7424
7425// DeletedWebAppCollection collection of deleted apps.
7426type DeletedWebAppCollection struct {
7427	autorest.Response `json:"-"`
7428	// Value - Collection of resources.
7429	Value *[]DeletedSite `json:"value,omitempty"`
7430	// NextLink - READ-ONLY; Link to next page of resources.
7431	NextLink *string `json:"nextLink,omitempty"`
7432}
7433
7434// MarshalJSON is the custom marshaler for DeletedWebAppCollection.
7435func (dwac DeletedWebAppCollection) MarshalJSON() ([]byte, error) {
7436	objectMap := make(map[string]interface{})
7437	if dwac.Value != nil {
7438		objectMap["value"] = dwac.Value
7439	}
7440	return json.Marshal(objectMap)
7441}
7442
7443// DeletedWebAppCollectionIterator provides access to a complete listing of DeletedSite values.
7444type DeletedWebAppCollectionIterator struct {
7445	i    int
7446	page DeletedWebAppCollectionPage
7447}
7448
7449// NextWithContext advances to the next value.  If there was an error making
7450// the request the iterator does not advance and the error is returned.
7451func (iter *DeletedWebAppCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7452	if tracing.IsEnabled() {
7453		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionIterator.NextWithContext")
7454		defer func() {
7455			sc := -1
7456			if iter.Response().Response.Response != nil {
7457				sc = iter.Response().Response.Response.StatusCode
7458			}
7459			tracing.EndSpan(ctx, sc, err)
7460		}()
7461	}
7462	iter.i++
7463	if iter.i < len(iter.page.Values()) {
7464		return nil
7465	}
7466	err = iter.page.NextWithContext(ctx)
7467	if err != nil {
7468		iter.i--
7469		return err
7470	}
7471	iter.i = 0
7472	return nil
7473}
7474
7475// Next advances to the next value.  If there was an error making
7476// the request the iterator does not advance and the error is returned.
7477// Deprecated: Use NextWithContext() instead.
7478func (iter *DeletedWebAppCollectionIterator) Next() error {
7479	return iter.NextWithContext(context.Background())
7480}
7481
7482// NotDone returns true if the enumeration should be started or is not yet complete.
7483func (iter DeletedWebAppCollectionIterator) NotDone() bool {
7484	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7485}
7486
7487// Response returns the raw server response from the last page request.
7488func (iter DeletedWebAppCollectionIterator) Response() DeletedWebAppCollection {
7489	return iter.page.Response()
7490}
7491
7492// Value returns the current value or a zero-initialized value if the
7493// iterator has advanced beyond the end of the collection.
7494func (iter DeletedWebAppCollectionIterator) Value() DeletedSite {
7495	if !iter.page.NotDone() {
7496		return DeletedSite{}
7497	}
7498	return iter.page.Values()[iter.i]
7499}
7500
7501// Creates a new instance of the DeletedWebAppCollectionIterator type.
7502func NewDeletedWebAppCollectionIterator(page DeletedWebAppCollectionPage) DeletedWebAppCollectionIterator {
7503	return DeletedWebAppCollectionIterator{page: page}
7504}
7505
7506// IsEmpty returns true if the ListResult contains no values.
7507func (dwac DeletedWebAppCollection) IsEmpty() bool {
7508	return dwac.Value == nil || len(*dwac.Value) == 0
7509}
7510
7511// hasNextLink returns true if the NextLink is not empty.
7512func (dwac DeletedWebAppCollection) hasNextLink() bool {
7513	return dwac.NextLink != nil && len(*dwac.NextLink) != 0
7514}
7515
7516// deletedWebAppCollectionPreparer prepares a request to retrieve the next set of results.
7517// It returns nil if no more results exist.
7518func (dwac DeletedWebAppCollection) deletedWebAppCollectionPreparer(ctx context.Context) (*http.Request, error) {
7519	if !dwac.hasNextLink() {
7520		return nil, nil
7521	}
7522	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7523		autorest.AsJSON(),
7524		autorest.AsGet(),
7525		autorest.WithBaseURL(to.String(dwac.NextLink)))
7526}
7527
7528// DeletedWebAppCollectionPage contains a page of DeletedSite values.
7529type DeletedWebAppCollectionPage struct {
7530	fn   func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)
7531	dwac DeletedWebAppCollection
7532}
7533
7534// NextWithContext advances to the next page of values.  If there was an error making
7535// the request the page does not advance and the error is returned.
7536func (page *DeletedWebAppCollectionPage) NextWithContext(ctx context.Context) (err error) {
7537	if tracing.IsEnabled() {
7538		ctx = tracing.StartSpan(ctx, fqdn+"/DeletedWebAppCollectionPage.NextWithContext")
7539		defer func() {
7540			sc := -1
7541			if page.Response().Response.Response != nil {
7542				sc = page.Response().Response.Response.StatusCode
7543			}
7544			tracing.EndSpan(ctx, sc, err)
7545		}()
7546	}
7547	for {
7548		next, err := page.fn(ctx, page.dwac)
7549		if err != nil {
7550			return err
7551		}
7552		page.dwac = next
7553		if !next.hasNextLink() || !next.IsEmpty() {
7554			break
7555		}
7556	}
7557	return nil
7558}
7559
7560// Next advances to the next page of values.  If there was an error making
7561// the request the page does not advance and the error is returned.
7562// Deprecated: Use NextWithContext() instead.
7563func (page *DeletedWebAppCollectionPage) Next() error {
7564	return page.NextWithContext(context.Background())
7565}
7566
7567// NotDone returns true if the page enumeration should be started or is not yet complete.
7568func (page DeletedWebAppCollectionPage) NotDone() bool {
7569	return !page.dwac.IsEmpty()
7570}
7571
7572// Response returns the raw server response from the last page request.
7573func (page DeletedWebAppCollectionPage) Response() DeletedWebAppCollection {
7574	return page.dwac
7575}
7576
7577// Values returns the slice of values for the current page or nil if there are no values.
7578func (page DeletedWebAppCollectionPage) Values() []DeletedSite {
7579	if page.dwac.IsEmpty() {
7580		return nil
7581	}
7582	return *page.dwac.Value
7583}
7584
7585// Creates a new instance of the DeletedWebAppCollectionPage type.
7586func NewDeletedWebAppCollectionPage(cur DeletedWebAppCollection, getNextPage func(context.Context, DeletedWebAppCollection) (DeletedWebAppCollection, error)) DeletedWebAppCollectionPage {
7587	return DeletedWebAppCollectionPage{
7588		fn:   getNextPage,
7589		dwac: cur,
7590	}
7591}
7592
7593// Deployment user credentials used for publishing activity.
7594type Deployment struct {
7595	autorest.Response `json:"-"`
7596	// DeploymentProperties - Deployment resource specific properties
7597	*DeploymentProperties `json:"properties,omitempty"`
7598	// ID - READ-ONLY; Resource Id.
7599	ID *string `json:"id,omitempty"`
7600	// Name - READ-ONLY; Resource Name.
7601	Name *string `json:"name,omitempty"`
7602	// Kind - Kind of resource.
7603	Kind *string `json:"kind,omitempty"`
7604	// Type - READ-ONLY; Resource type.
7605	Type *string `json:"type,omitempty"`
7606}
7607
7608// MarshalJSON is the custom marshaler for Deployment.
7609func (d Deployment) MarshalJSON() ([]byte, error) {
7610	objectMap := make(map[string]interface{})
7611	if d.DeploymentProperties != nil {
7612		objectMap["properties"] = d.DeploymentProperties
7613	}
7614	if d.Kind != nil {
7615		objectMap["kind"] = d.Kind
7616	}
7617	return json.Marshal(objectMap)
7618}
7619
7620// UnmarshalJSON is the custom unmarshaler for Deployment struct.
7621func (d *Deployment) UnmarshalJSON(body []byte) error {
7622	var m map[string]*json.RawMessage
7623	err := json.Unmarshal(body, &m)
7624	if err != nil {
7625		return err
7626	}
7627	for k, v := range m {
7628		switch k {
7629		case "properties":
7630			if v != nil {
7631				var deploymentProperties DeploymentProperties
7632				err = json.Unmarshal(*v, &deploymentProperties)
7633				if err != nil {
7634					return err
7635				}
7636				d.DeploymentProperties = &deploymentProperties
7637			}
7638		case "id":
7639			if v != nil {
7640				var ID string
7641				err = json.Unmarshal(*v, &ID)
7642				if err != nil {
7643					return err
7644				}
7645				d.ID = &ID
7646			}
7647		case "name":
7648			if v != nil {
7649				var name string
7650				err = json.Unmarshal(*v, &name)
7651				if err != nil {
7652					return err
7653				}
7654				d.Name = &name
7655			}
7656		case "kind":
7657			if v != nil {
7658				var kind string
7659				err = json.Unmarshal(*v, &kind)
7660				if err != nil {
7661					return err
7662				}
7663				d.Kind = &kind
7664			}
7665		case "type":
7666			if v != nil {
7667				var typeVar string
7668				err = json.Unmarshal(*v, &typeVar)
7669				if err != nil {
7670					return err
7671				}
7672				d.Type = &typeVar
7673			}
7674		}
7675	}
7676
7677	return nil
7678}
7679
7680// DeploymentCollection collection of app deployments.
7681type DeploymentCollection struct {
7682	autorest.Response `json:"-"`
7683	// Value - Collection of resources.
7684	Value *[]Deployment `json:"value,omitempty"`
7685	// NextLink - READ-ONLY; Link to next page of resources.
7686	NextLink *string `json:"nextLink,omitempty"`
7687}
7688
7689// MarshalJSON is the custom marshaler for DeploymentCollection.
7690func (dc DeploymentCollection) MarshalJSON() ([]byte, error) {
7691	objectMap := make(map[string]interface{})
7692	if dc.Value != nil {
7693		objectMap["value"] = dc.Value
7694	}
7695	return json.Marshal(objectMap)
7696}
7697
7698// DeploymentCollectionIterator provides access to a complete listing of Deployment values.
7699type DeploymentCollectionIterator struct {
7700	i    int
7701	page DeploymentCollectionPage
7702}
7703
7704// NextWithContext advances to the next value.  If there was an error making
7705// the request the iterator does not advance and the error is returned.
7706func (iter *DeploymentCollectionIterator) NextWithContext(ctx context.Context) (err error) {
7707	if tracing.IsEnabled() {
7708		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionIterator.NextWithContext")
7709		defer func() {
7710			sc := -1
7711			if iter.Response().Response.Response != nil {
7712				sc = iter.Response().Response.Response.StatusCode
7713			}
7714			tracing.EndSpan(ctx, sc, err)
7715		}()
7716	}
7717	iter.i++
7718	if iter.i < len(iter.page.Values()) {
7719		return nil
7720	}
7721	err = iter.page.NextWithContext(ctx)
7722	if err != nil {
7723		iter.i--
7724		return err
7725	}
7726	iter.i = 0
7727	return nil
7728}
7729
7730// Next advances to the next value.  If there was an error making
7731// the request the iterator does not advance and the error is returned.
7732// Deprecated: Use NextWithContext() instead.
7733func (iter *DeploymentCollectionIterator) Next() error {
7734	return iter.NextWithContext(context.Background())
7735}
7736
7737// NotDone returns true if the enumeration should be started or is not yet complete.
7738func (iter DeploymentCollectionIterator) NotDone() bool {
7739	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7740}
7741
7742// Response returns the raw server response from the last page request.
7743func (iter DeploymentCollectionIterator) Response() DeploymentCollection {
7744	return iter.page.Response()
7745}
7746
7747// Value returns the current value or a zero-initialized value if the
7748// iterator has advanced beyond the end of the collection.
7749func (iter DeploymentCollectionIterator) Value() Deployment {
7750	if !iter.page.NotDone() {
7751		return Deployment{}
7752	}
7753	return iter.page.Values()[iter.i]
7754}
7755
7756// Creates a new instance of the DeploymentCollectionIterator type.
7757func NewDeploymentCollectionIterator(page DeploymentCollectionPage) DeploymentCollectionIterator {
7758	return DeploymentCollectionIterator{page: page}
7759}
7760
7761// IsEmpty returns true if the ListResult contains no values.
7762func (dc DeploymentCollection) IsEmpty() bool {
7763	return dc.Value == nil || len(*dc.Value) == 0
7764}
7765
7766// hasNextLink returns true if the NextLink is not empty.
7767func (dc DeploymentCollection) hasNextLink() bool {
7768	return dc.NextLink != nil && len(*dc.NextLink) != 0
7769}
7770
7771// deploymentCollectionPreparer prepares a request to retrieve the next set of results.
7772// It returns nil if no more results exist.
7773func (dc DeploymentCollection) deploymentCollectionPreparer(ctx context.Context) (*http.Request, error) {
7774	if !dc.hasNextLink() {
7775		return nil, nil
7776	}
7777	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7778		autorest.AsJSON(),
7779		autorest.AsGet(),
7780		autorest.WithBaseURL(to.String(dc.NextLink)))
7781}
7782
7783// DeploymentCollectionPage contains a page of Deployment values.
7784type DeploymentCollectionPage struct {
7785	fn func(context.Context, DeploymentCollection) (DeploymentCollection, error)
7786	dc DeploymentCollection
7787}
7788
7789// NextWithContext advances to the next page of values.  If there was an error making
7790// the request the page does not advance and the error is returned.
7791func (page *DeploymentCollectionPage) NextWithContext(ctx context.Context) (err error) {
7792	if tracing.IsEnabled() {
7793		ctx = tracing.StartSpan(ctx, fqdn+"/DeploymentCollectionPage.NextWithContext")
7794		defer func() {
7795			sc := -1
7796			if page.Response().Response.Response != nil {
7797				sc = page.Response().Response.Response.StatusCode
7798			}
7799			tracing.EndSpan(ctx, sc, err)
7800		}()
7801	}
7802	for {
7803		next, err := page.fn(ctx, page.dc)
7804		if err != nil {
7805			return err
7806		}
7807		page.dc = next
7808		if !next.hasNextLink() || !next.IsEmpty() {
7809			break
7810		}
7811	}
7812	return nil
7813}
7814
7815// Next advances to the next page of values.  If there was an error making
7816// the request the page does not advance and the error is returned.
7817// Deprecated: Use NextWithContext() instead.
7818func (page *DeploymentCollectionPage) Next() error {
7819	return page.NextWithContext(context.Background())
7820}
7821
7822// NotDone returns true if the page enumeration should be started or is not yet complete.
7823func (page DeploymentCollectionPage) NotDone() bool {
7824	return !page.dc.IsEmpty()
7825}
7826
7827// Response returns the raw server response from the last page request.
7828func (page DeploymentCollectionPage) Response() DeploymentCollection {
7829	return page.dc
7830}
7831
7832// Values returns the slice of values for the current page or nil if there are no values.
7833func (page DeploymentCollectionPage) Values() []Deployment {
7834	if page.dc.IsEmpty() {
7835		return nil
7836	}
7837	return *page.dc.Value
7838}
7839
7840// Creates a new instance of the DeploymentCollectionPage type.
7841func NewDeploymentCollectionPage(cur DeploymentCollection, getNextPage func(context.Context, DeploymentCollection) (DeploymentCollection, error)) DeploymentCollectionPage {
7842	return DeploymentCollectionPage{
7843		fn: getNextPage,
7844		dc: cur,
7845	}
7846}
7847
7848// DeploymentLocations list of available locations (regions or App Service Environments) for
7849// deployment of App Service resources.
7850type DeploymentLocations struct {
7851	autorest.Response `json:"-"`
7852	// Locations - Available regions.
7853	Locations *[]GeoRegion `json:"locations,omitempty"`
7854	// HostingEnvironments - Available App Service Environments with full descriptions of the environments.
7855	HostingEnvironments *[]AppServiceEnvironment `json:"hostingEnvironments,omitempty"`
7856	// HostingEnvironmentDeploymentInfos - Available App Service Environments with basic information.
7857	HostingEnvironmentDeploymentInfos *[]HostingEnvironmentDeploymentInfo `json:"hostingEnvironmentDeploymentInfos,omitempty"`
7858}
7859
7860// DeploymentProperties deployment resource specific properties
7861type DeploymentProperties struct {
7862	// Status - Deployment status.
7863	Status *int32 `json:"status,omitempty"`
7864	// Message - Details about deployment status.
7865	Message *string `json:"message,omitempty"`
7866	// Author - Who authored the deployment.
7867	Author *string `json:"author,omitempty"`
7868	// Deployer - Who performed the deployment.
7869	Deployer *string `json:"deployer,omitempty"`
7870	// AuthorEmail - Author email.
7871	AuthorEmail *string `json:"author_email,omitempty"`
7872	// StartTime - Start time.
7873	StartTime *date.Time `json:"start_time,omitempty"`
7874	// EndTime - End time.
7875	EndTime *date.Time `json:"end_time,omitempty"`
7876	// Active - True if deployment is currently active, false if completed and null if not started.
7877	Active *bool `json:"active,omitempty"`
7878	// Details - Details on deployment.
7879	Details *string `json:"details,omitempty"`
7880}
7881
7882// DetectorAbnormalTimePeriod class representing Abnormal Time Period detected.
7883type DetectorAbnormalTimePeriod struct {
7884	// StartTime - Start time of the correlated event
7885	StartTime *date.Time `json:"startTime,omitempty"`
7886	// EndTime - End time of the correlated event
7887	EndTime *date.Time `json:"endTime,omitempty"`
7888	// Message - Message describing the event
7889	Message *string `json:"message,omitempty"`
7890	// Source - Represents the name of the Detector
7891	Source *string `json:"source,omitempty"`
7892	// Priority - Represents the rank of the Detector
7893	Priority *float64 `json:"priority,omitempty"`
7894	// MetaData - Downtime metadata
7895	MetaData *[][]NameValuePair `json:"metaData,omitempty"`
7896	// Type - Represents the type of the Detector. Possible values include: 'ServiceIncident', 'AppDeployment', 'AppCrash', 'RuntimeIssueDetected', 'AseDeployment', 'UserIssue', 'PlatformIssue', 'Other'
7897	Type IssueType `json:"type,omitempty"`
7898	// Solutions - List of proposed solutions
7899	Solutions *[]Solution `json:"solutions,omitempty"`
7900}
7901
7902// DetectorDefinition class representing detector definition
7903type DetectorDefinition struct {
7904	autorest.Response `json:"-"`
7905	// DetectorDefinitionProperties - DetectorDefinition resource specific properties
7906	*DetectorDefinitionProperties `json:"properties,omitempty"`
7907	// ID - READ-ONLY; Resource Id.
7908	ID *string `json:"id,omitempty"`
7909	// Name - READ-ONLY; Resource Name.
7910	Name *string `json:"name,omitempty"`
7911	// Kind - Kind of resource.
7912	Kind *string `json:"kind,omitempty"`
7913	// Type - READ-ONLY; Resource type.
7914	Type *string `json:"type,omitempty"`
7915}
7916
7917// MarshalJSON is the custom marshaler for DetectorDefinition.
7918func (dd DetectorDefinition) MarshalJSON() ([]byte, error) {
7919	objectMap := make(map[string]interface{})
7920	if dd.DetectorDefinitionProperties != nil {
7921		objectMap["properties"] = dd.DetectorDefinitionProperties
7922	}
7923	if dd.Kind != nil {
7924		objectMap["kind"] = dd.Kind
7925	}
7926	return json.Marshal(objectMap)
7927}
7928
7929// UnmarshalJSON is the custom unmarshaler for DetectorDefinition struct.
7930func (dd *DetectorDefinition) UnmarshalJSON(body []byte) error {
7931	var m map[string]*json.RawMessage
7932	err := json.Unmarshal(body, &m)
7933	if err != nil {
7934		return err
7935	}
7936	for k, v := range m {
7937		switch k {
7938		case "properties":
7939			if v != nil {
7940				var detectorDefinitionProperties DetectorDefinitionProperties
7941				err = json.Unmarshal(*v, &detectorDefinitionProperties)
7942				if err != nil {
7943					return err
7944				}
7945				dd.DetectorDefinitionProperties = &detectorDefinitionProperties
7946			}
7947		case "id":
7948			if v != nil {
7949				var ID string
7950				err = json.Unmarshal(*v, &ID)
7951				if err != nil {
7952					return err
7953				}
7954				dd.ID = &ID
7955			}
7956		case "name":
7957			if v != nil {
7958				var name string
7959				err = json.Unmarshal(*v, &name)
7960				if err != nil {
7961					return err
7962				}
7963				dd.Name = &name
7964			}
7965		case "kind":
7966			if v != nil {
7967				var kind string
7968				err = json.Unmarshal(*v, &kind)
7969				if err != nil {
7970					return err
7971				}
7972				dd.Kind = &kind
7973			}
7974		case "type":
7975			if v != nil {
7976				var typeVar string
7977				err = json.Unmarshal(*v, &typeVar)
7978				if err != nil {
7979					return err
7980				}
7981				dd.Type = &typeVar
7982			}
7983		}
7984	}
7985
7986	return nil
7987}
7988
7989// DetectorDefinitionProperties detectorDefinition resource specific properties
7990type DetectorDefinitionProperties struct {
7991	// DisplayName - READ-ONLY; Display name of the detector
7992	DisplayName *string `json:"displayName,omitempty"`
7993	// Description - READ-ONLY; Description of the detector
7994	Description *string `json:"description,omitempty"`
7995	// Rank - READ-ONLY; Detector Rank
7996	Rank *float64 `json:"rank,omitempty"`
7997	// IsEnabled - READ-ONLY; Flag representing whether detector is enabled or not.
7998	IsEnabled *bool `json:"isEnabled,omitempty"`
7999}
8000
8001// DetectorInfo definition of Detector
8002type DetectorInfo struct {
8003	// Description - READ-ONLY; Short description of the detector and its purpose
8004	Description *string `json:"description,omitempty"`
8005	// Category - READ-ONLY; Support Category
8006	Category *string `json:"category,omitempty"`
8007	// SubCategory - READ-ONLY; Support Sub Category
8008	SubCategory *string `json:"subCategory,omitempty"`
8009	// SupportTopicID - READ-ONLY; Support Topic Id
8010	SupportTopicID *string `json:"supportTopicId,omitempty"`
8011}
8012
8013// DetectorResponse class representing Response from Detector
8014type DetectorResponse struct {
8015	autorest.Response `json:"-"`
8016	// DetectorResponseProperties - DetectorResponse resource specific properties
8017	*DetectorResponseProperties `json:"properties,omitempty"`
8018	// ID - READ-ONLY; Resource Id.
8019	ID *string `json:"id,omitempty"`
8020	// Name - READ-ONLY; Resource Name.
8021	Name *string `json:"name,omitempty"`
8022	// Kind - Kind of resource.
8023	Kind *string `json:"kind,omitempty"`
8024	// Type - READ-ONLY; Resource type.
8025	Type *string `json:"type,omitempty"`
8026}
8027
8028// MarshalJSON is the custom marshaler for DetectorResponse.
8029func (dr DetectorResponse) MarshalJSON() ([]byte, error) {
8030	objectMap := make(map[string]interface{})
8031	if dr.DetectorResponseProperties != nil {
8032		objectMap["properties"] = dr.DetectorResponseProperties
8033	}
8034	if dr.Kind != nil {
8035		objectMap["kind"] = dr.Kind
8036	}
8037	return json.Marshal(objectMap)
8038}
8039
8040// UnmarshalJSON is the custom unmarshaler for DetectorResponse struct.
8041func (dr *DetectorResponse) UnmarshalJSON(body []byte) error {
8042	var m map[string]*json.RawMessage
8043	err := json.Unmarshal(body, &m)
8044	if err != nil {
8045		return err
8046	}
8047	for k, v := range m {
8048		switch k {
8049		case "properties":
8050			if v != nil {
8051				var detectorResponseProperties DetectorResponseProperties
8052				err = json.Unmarshal(*v, &detectorResponseProperties)
8053				if err != nil {
8054					return err
8055				}
8056				dr.DetectorResponseProperties = &detectorResponseProperties
8057			}
8058		case "id":
8059			if v != nil {
8060				var ID string
8061				err = json.Unmarshal(*v, &ID)
8062				if err != nil {
8063					return err
8064				}
8065				dr.ID = &ID
8066			}
8067		case "name":
8068			if v != nil {
8069				var name string
8070				err = json.Unmarshal(*v, &name)
8071				if err != nil {
8072					return err
8073				}
8074				dr.Name = &name
8075			}
8076		case "kind":
8077			if v != nil {
8078				var kind string
8079				err = json.Unmarshal(*v, &kind)
8080				if err != nil {
8081					return err
8082				}
8083				dr.Kind = &kind
8084			}
8085		case "type":
8086			if v != nil {
8087				var typeVar string
8088				err = json.Unmarshal(*v, &typeVar)
8089				if err != nil {
8090					return err
8091				}
8092				dr.Type = &typeVar
8093			}
8094		}
8095	}
8096
8097	return nil
8098}
8099
8100// DetectorResponseCollection collection of detector responses
8101type DetectorResponseCollection struct {
8102	autorest.Response `json:"-"`
8103	// Value - Collection of resources.
8104	Value *[]DetectorResponse `json:"value,omitempty"`
8105	// NextLink - READ-ONLY; Link to next page of resources.
8106	NextLink *string `json:"nextLink,omitempty"`
8107}
8108
8109// MarshalJSON is the custom marshaler for DetectorResponseCollection.
8110func (drc DetectorResponseCollection) MarshalJSON() ([]byte, error) {
8111	objectMap := make(map[string]interface{})
8112	if drc.Value != nil {
8113		objectMap["value"] = drc.Value
8114	}
8115	return json.Marshal(objectMap)
8116}
8117
8118// DetectorResponseCollectionIterator provides access to a complete listing of DetectorResponse values.
8119type DetectorResponseCollectionIterator struct {
8120	i    int
8121	page DetectorResponseCollectionPage
8122}
8123
8124// NextWithContext advances to the next value.  If there was an error making
8125// the request the iterator does not advance and the error is returned.
8126func (iter *DetectorResponseCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8127	if tracing.IsEnabled() {
8128		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionIterator.NextWithContext")
8129		defer func() {
8130			sc := -1
8131			if iter.Response().Response.Response != nil {
8132				sc = iter.Response().Response.Response.StatusCode
8133			}
8134			tracing.EndSpan(ctx, sc, err)
8135		}()
8136	}
8137	iter.i++
8138	if iter.i < len(iter.page.Values()) {
8139		return nil
8140	}
8141	err = iter.page.NextWithContext(ctx)
8142	if err != nil {
8143		iter.i--
8144		return err
8145	}
8146	iter.i = 0
8147	return nil
8148}
8149
8150// Next advances to the next value.  If there was an error making
8151// the request the iterator does not advance and the error is returned.
8152// Deprecated: Use NextWithContext() instead.
8153func (iter *DetectorResponseCollectionIterator) Next() error {
8154	return iter.NextWithContext(context.Background())
8155}
8156
8157// NotDone returns true if the enumeration should be started or is not yet complete.
8158func (iter DetectorResponseCollectionIterator) NotDone() bool {
8159	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8160}
8161
8162// Response returns the raw server response from the last page request.
8163func (iter DetectorResponseCollectionIterator) Response() DetectorResponseCollection {
8164	return iter.page.Response()
8165}
8166
8167// Value returns the current value or a zero-initialized value if the
8168// iterator has advanced beyond the end of the collection.
8169func (iter DetectorResponseCollectionIterator) Value() DetectorResponse {
8170	if !iter.page.NotDone() {
8171		return DetectorResponse{}
8172	}
8173	return iter.page.Values()[iter.i]
8174}
8175
8176// Creates a new instance of the DetectorResponseCollectionIterator type.
8177func NewDetectorResponseCollectionIterator(page DetectorResponseCollectionPage) DetectorResponseCollectionIterator {
8178	return DetectorResponseCollectionIterator{page: page}
8179}
8180
8181// IsEmpty returns true if the ListResult contains no values.
8182func (drc DetectorResponseCollection) IsEmpty() bool {
8183	return drc.Value == nil || len(*drc.Value) == 0
8184}
8185
8186// hasNextLink returns true if the NextLink is not empty.
8187func (drc DetectorResponseCollection) hasNextLink() bool {
8188	return drc.NextLink != nil && len(*drc.NextLink) != 0
8189}
8190
8191// detectorResponseCollectionPreparer prepares a request to retrieve the next set of results.
8192// It returns nil if no more results exist.
8193func (drc DetectorResponseCollection) detectorResponseCollectionPreparer(ctx context.Context) (*http.Request, error) {
8194	if !drc.hasNextLink() {
8195		return nil, nil
8196	}
8197	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8198		autorest.AsJSON(),
8199		autorest.AsGet(),
8200		autorest.WithBaseURL(to.String(drc.NextLink)))
8201}
8202
8203// DetectorResponseCollectionPage contains a page of DetectorResponse values.
8204type DetectorResponseCollectionPage struct {
8205	fn  func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)
8206	drc DetectorResponseCollection
8207}
8208
8209// NextWithContext advances to the next page of values.  If there was an error making
8210// the request the page does not advance and the error is returned.
8211func (page *DetectorResponseCollectionPage) NextWithContext(ctx context.Context) (err error) {
8212	if tracing.IsEnabled() {
8213		ctx = tracing.StartSpan(ctx, fqdn+"/DetectorResponseCollectionPage.NextWithContext")
8214		defer func() {
8215			sc := -1
8216			if page.Response().Response.Response != nil {
8217				sc = page.Response().Response.Response.StatusCode
8218			}
8219			tracing.EndSpan(ctx, sc, err)
8220		}()
8221	}
8222	for {
8223		next, err := page.fn(ctx, page.drc)
8224		if err != nil {
8225			return err
8226		}
8227		page.drc = next
8228		if !next.hasNextLink() || !next.IsEmpty() {
8229			break
8230		}
8231	}
8232	return nil
8233}
8234
8235// Next advances to the next page of values.  If there was an error making
8236// the request the page does not advance and the error is returned.
8237// Deprecated: Use NextWithContext() instead.
8238func (page *DetectorResponseCollectionPage) Next() error {
8239	return page.NextWithContext(context.Background())
8240}
8241
8242// NotDone returns true if the page enumeration should be started or is not yet complete.
8243func (page DetectorResponseCollectionPage) NotDone() bool {
8244	return !page.drc.IsEmpty()
8245}
8246
8247// Response returns the raw server response from the last page request.
8248func (page DetectorResponseCollectionPage) Response() DetectorResponseCollection {
8249	return page.drc
8250}
8251
8252// Values returns the slice of values for the current page or nil if there are no values.
8253func (page DetectorResponseCollectionPage) Values() []DetectorResponse {
8254	if page.drc.IsEmpty() {
8255		return nil
8256	}
8257	return *page.drc.Value
8258}
8259
8260// Creates a new instance of the DetectorResponseCollectionPage type.
8261func NewDetectorResponseCollectionPage(cur DetectorResponseCollection, getNextPage func(context.Context, DetectorResponseCollection) (DetectorResponseCollection, error)) DetectorResponseCollectionPage {
8262	return DetectorResponseCollectionPage{
8263		fn:  getNextPage,
8264		drc: cur,
8265	}
8266}
8267
8268// DetectorResponseProperties detectorResponse resource specific properties
8269type DetectorResponseProperties struct {
8270	// Metadata - metadata for the detector
8271	Metadata *DetectorInfo `json:"metadata,omitempty"`
8272	// Dataset - Data Set
8273	Dataset *[]DiagnosticData `json:"dataset,omitempty"`
8274}
8275
8276// DiagnosticAnalysis class representing a diagnostic analysis done on an application
8277type DiagnosticAnalysis struct {
8278	autorest.Response `json:"-"`
8279	// DiagnosticAnalysisProperties - DiagnosticAnalysis resource specific properties
8280	*DiagnosticAnalysisProperties `json:"properties,omitempty"`
8281	// ID - READ-ONLY; Resource Id.
8282	ID *string `json:"id,omitempty"`
8283	// Name - READ-ONLY; Resource Name.
8284	Name *string `json:"name,omitempty"`
8285	// Kind - Kind of resource.
8286	Kind *string `json:"kind,omitempty"`
8287	// Type - READ-ONLY; Resource type.
8288	Type *string `json:"type,omitempty"`
8289}
8290
8291// MarshalJSON is the custom marshaler for DiagnosticAnalysis.
8292func (da DiagnosticAnalysis) MarshalJSON() ([]byte, error) {
8293	objectMap := make(map[string]interface{})
8294	if da.DiagnosticAnalysisProperties != nil {
8295		objectMap["properties"] = da.DiagnosticAnalysisProperties
8296	}
8297	if da.Kind != nil {
8298		objectMap["kind"] = da.Kind
8299	}
8300	return json.Marshal(objectMap)
8301}
8302
8303// UnmarshalJSON is the custom unmarshaler for DiagnosticAnalysis struct.
8304func (da *DiagnosticAnalysis) UnmarshalJSON(body []byte) error {
8305	var m map[string]*json.RawMessage
8306	err := json.Unmarshal(body, &m)
8307	if err != nil {
8308		return err
8309	}
8310	for k, v := range m {
8311		switch k {
8312		case "properties":
8313			if v != nil {
8314				var diagnosticAnalysisProperties DiagnosticAnalysisProperties
8315				err = json.Unmarshal(*v, &diagnosticAnalysisProperties)
8316				if err != nil {
8317					return err
8318				}
8319				da.DiagnosticAnalysisProperties = &diagnosticAnalysisProperties
8320			}
8321		case "id":
8322			if v != nil {
8323				var ID string
8324				err = json.Unmarshal(*v, &ID)
8325				if err != nil {
8326					return err
8327				}
8328				da.ID = &ID
8329			}
8330		case "name":
8331			if v != nil {
8332				var name string
8333				err = json.Unmarshal(*v, &name)
8334				if err != nil {
8335					return err
8336				}
8337				da.Name = &name
8338			}
8339		case "kind":
8340			if v != nil {
8341				var kind string
8342				err = json.Unmarshal(*v, &kind)
8343				if err != nil {
8344					return err
8345				}
8346				da.Kind = &kind
8347			}
8348		case "type":
8349			if v != nil {
8350				var typeVar string
8351				err = json.Unmarshal(*v, &typeVar)
8352				if err != nil {
8353					return err
8354				}
8355				da.Type = &typeVar
8356			}
8357		}
8358	}
8359
8360	return nil
8361}
8362
8363// DiagnosticAnalysisCollection collection of Diagnostic Analyses
8364type DiagnosticAnalysisCollection struct {
8365	autorest.Response `json:"-"`
8366	// Value - Collection of resources.
8367	Value *[]AnalysisDefinition `json:"value,omitempty"`
8368	// NextLink - READ-ONLY; Link to next page of resources.
8369	NextLink *string `json:"nextLink,omitempty"`
8370}
8371
8372// MarshalJSON is the custom marshaler for DiagnosticAnalysisCollection.
8373func (dac DiagnosticAnalysisCollection) MarshalJSON() ([]byte, error) {
8374	objectMap := make(map[string]interface{})
8375	if dac.Value != nil {
8376		objectMap["value"] = dac.Value
8377	}
8378	return json.Marshal(objectMap)
8379}
8380
8381// DiagnosticAnalysisCollectionIterator provides access to a complete listing of AnalysisDefinition values.
8382type DiagnosticAnalysisCollectionIterator struct {
8383	i    int
8384	page DiagnosticAnalysisCollectionPage
8385}
8386
8387// NextWithContext advances to the next value.  If there was an error making
8388// the request the iterator does not advance and the error is returned.
8389func (iter *DiagnosticAnalysisCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8390	if tracing.IsEnabled() {
8391		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionIterator.NextWithContext")
8392		defer func() {
8393			sc := -1
8394			if iter.Response().Response.Response != nil {
8395				sc = iter.Response().Response.Response.StatusCode
8396			}
8397			tracing.EndSpan(ctx, sc, err)
8398		}()
8399	}
8400	iter.i++
8401	if iter.i < len(iter.page.Values()) {
8402		return nil
8403	}
8404	err = iter.page.NextWithContext(ctx)
8405	if err != nil {
8406		iter.i--
8407		return err
8408	}
8409	iter.i = 0
8410	return nil
8411}
8412
8413// Next advances to the next value.  If there was an error making
8414// the request the iterator does not advance and the error is returned.
8415// Deprecated: Use NextWithContext() instead.
8416func (iter *DiagnosticAnalysisCollectionIterator) Next() error {
8417	return iter.NextWithContext(context.Background())
8418}
8419
8420// NotDone returns true if the enumeration should be started or is not yet complete.
8421func (iter DiagnosticAnalysisCollectionIterator) NotDone() bool {
8422	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8423}
8424
8425// Response returns the raw server response from the last page request.
8426func (iter DiagnosticAnalysisCollectionIterator) Response() DiagnosticAnalysisCollection {
8427	return iter.page.Response()
8428}
8429
8430// Value returns the current value or a zero-initialized value if the
8431// iterator has advanced beyond the end of the collection.
8432func (iter DiagnosticAnalysisCollectionIterator) Value() AnalysisDefinition {
8433	if !iter.page.NotDone() {
8434		return AnalysisDefinition{}
8435	}
8436	return iter.page.Values()[iter.i]
8437}
8438
8439// Creates a new instance of the DiagnosticAnalysisCollectionIterator type.
8440func NewDiagnosticAnalysisCollectionIterator(page DiagnosticAnalysisCollectionPage) DiagnosticAnalysisCollectionIterator {
8441	return DiagnosticAnalysisCollectionIterator{page: page}
8442}
8443
8444// IsEmpty returns true if the ListResult contains no values.
8445func (dac DiagnosticAnalysisCollection) IsEmpty() bool {
8446	return dac.Value == nil || len(*dac.Value) == 0
8447}
8448
8449// hasNextLink returns true if the NextLink is not empty.
8450func (dac DiagnosticAnalysisCollection) hasNextLink() bool {
8451	return dac.NextLink != nil && len(*dac.NextLink) != 0
8452}
8453
8454// diagnosticAnalysisCollectionPreparer prepares a request to retrieve the next set of results.
8455// It returns nil if no more results exist.
8456func (dac DiagnosticAnalysisCollection) diagnosticAnalysisCollectionPreparer(ctx context.Context) (*http.Request, error) {
8457	if !dac.hasNextLink() {
8458		return nil, nil
8459	}
8460	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8461		autorest.AsJSON(),
8462		autorest.AsGet(),
8463		autorest.WithBaseURL(to.String(dac.NextLink)))
8464}
8465
8466// DiagnosticAnalysisCollectionPage contains a page of AnalysisDefinition values.
8467type DiagnosticAnalysisCollectionPage struct {
8468	fn  func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)
8469	dac DiagnosticAnalysisCollection
8470}
8471
8472// NextWithContext advances to the next page of values.  If there was an error making
8473// the request the page does not advance and the error is returned.
8474func (page *DiagnosticAnalysisCollectionPage) NextWithContext(ctx context.Context) (err error) {
8475	if tracing.IsEnabled() {
8476		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticAnalysisCollectionPage.NextWithContext")
8477		defer func() {
8478			sc := -1
8479			if page.Response().Response.Response != nil {
8480				sc = page.Response().Response.Response.StatusCode
8481			}
8482			tracing.EndSpan(ctx, sc, err)
8483		}()
8484	}
8485	for {
8486		next, err := page.fn(ctx, page.dac)
8487		if err != nil {
8488			return err
8489		}
8490		page.dac = next
8491		if !next.hasNextLink() || !next.IsEmpty() {
8492			break
8493		}
8494	}
8495	return nil
8496}
8497
8498// Next advances to the next page of values.  If there was an error making
8499// the request the page does not advance and the error is returned.
8500// Deprecated: Use NextWithContext() instead.
8501func (page *DiagnosticAnalysisCollectionPage) Next() error {
8502	return page.NextWithContext(context.Background())
8503}
8504
8505// NotDone returns true if the page enumeration should be started or is not yet complete.
8506func (page DiagnosticAnalysisCollectionPage) NotDone() bool {
8507	return !page.dac.IsEmpty()
8508}
8509
8510// Response returns the raw server response from the last page request.
8511func (page DiagnosticAnalysisCollectionPage) Response() DiagnosticAnalysisCollection {
8512	return page.dac
8513}
8514
8515// Values returns the slice of values for the current page or nil if there are no values.
8516func (page DiagnosticAnalysisCollectionPage) Values() []AnalysisDefinition {
8517	if page.dac.IsEmpty() {
8518		return nil
8519	}
8520	return *page.dac.Value
8521}
8522
8523// Creates a new instance of the DiagnosticAnalysisCollectionPage type.
8524func NewDiagnosticAnalysisCollectionPage(cur DiagnosticAnalysisCollection, getNextPage func(context.Context, DiagnosticAnalysisCollection) (DiagnosticAnalysisCollection, error)) DiagnosticAnalysisCollectionPage {
8525	return DiagnosticAnalysisCollectionPage{
8526		fn:  getNextPage,
8527		dac: cur,
8528	}
8529}
8530
8531// DiagnosticAnalysisProperties diagnosticAnalysis resource specific properties
8532type DiagnosticAnalysisProperties struct {
8533	// StartTime - Start time of the period
8534	StartTime *date.Time `json:"startTime,omitempty"`
8535	// EndTime - End time of the period
8536	EndTime *date.Time `json:"endTime,omitempty"`
8537	// AbnormalTimePeriods - List of time periods.
8538	AbnormalTimePeriods *[]AbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
8539	// Payload - Data by each detector
8540	Payload *[]AnalysisData `json:"payload,omitempty"`
8541	// NonCorrelatedDetectors - Data by each detector for detectors that did not corelate
8542	NonCorrelatedDetectors *[]DetectorDefinition `json:"nonCorrelatedDetectors,omitempty"`
8543}
8544
8545// DiagnosticCategory class representing detector definition
8546type DiagnosticCategory struct {
8547	autorest.Response `json:"-"`
8548	// DiagnosticCategoryProperties - DiagnosticCategory resource specific properties
8549	*DiagnosticCategoryProperties `json:"properties,omitempty"`
8550	// ID - READ-ONLY; Resource Id.
8551	ID *string `json:"id,omitempty"`
8552	// Name - READ-ONLY; Resource Name.
8553	Name *string `json:"name,omitempty"`
8554	// Kind - Kind of resource.
8555	Kind *string `json:"kind,omitempty"`
8556	// Type - READ-ONLY; Resource type.
8557	Type *string `json:"type,omitempty"`
8558}
8559
8560// MarshalJSON is the custom marshaler for DiagnosticCategory.
8561func (dc DiagnosticCategory) MarshalJSON() ([]byte, error) {
8562	objectMap := make(map[string]interface{})
8563	if dc.DiagnosticCategoryProperties != nil {
8564		objectMap["properties"] = dc.DiagnosticCategoryProperties
8565	}
8566	if dc.Kind != nil {
8567		objectMap["kind"] = dc.Kind
8568	}
8569	return json.Marshal(objectMap)
8570}
8571
8572// UnmarshalJSON is the custom unmarshaler for DiagnosticCategory struct.
8573func (dc *DiagnosticCategory) UnmarshalJSON(body []byte) error {
8574	var m map[string]*json.RawMessage
8575	err := json.Unmarshal(body, &m)
8576	if err != nil {
8577		return err
8578	}
8579	for k, v := range m {
8580		switch k {
8581		case "properties":
8582			if v != nil {
8583				var diagnosticCategoryProperties DiagnosticCategoryProperties
8584				err = json.Unmarshal(*v, &diagnosticCategoryProperties)
8585				if err != nil {
8586					return err
8587				}
8588				dc.DiagnosticCategoryProperties = &diagnosticCategoryProperties
8589			}
8590		case "id":
8591			if v != nil {
8592				var ID string
8593				err = json.Unmarshal(*v, &ID)
8594				if err != nil {
8595					return err
8596				}
8597				dc.ID = &ID
8598			}
8599		case "name":
8600			if v != nil {
8601				var name string
8602				err = json.Unmarshal(*v, &name)
8603				if err != nil {
8604					return err
8605				}
8606				dc.Name = &name
8607			}
8608		case "kind":
8609			if v != nil {
8610				var kind string
8611				err = json.Unmarshal(*v, &kind)
8612				if err != nil {
8613					return err
8614				}
8615				dc.Kind = &kind
8616			}
8617		case "type":
8618			if v != nil {
8619				var typeVar string
8620				err = json.Unmarshal(*v, &typeVar)
8621				if err != nil {
8622					return err
8623				}
8624				dc.Type = &typeVar
8625			}
8626		}
8627	}
8628
8629	return nil
8630}
8631
8632// DiagnosticCategoryCollection collection of Diagnostic Categories
8633type DiagnosticCategoryCollection struct {
8634	autorest.Response `json:"-"`
8635	// Value - Collection of resources.
8636	Value *[]DiagnosticCategory `json:"value,omitempty"`
8637	// NextLink - READ-ONLY; Link to next page of resources.
8638	NextLink *string `json:"nextLink,omitempty"`
8639}
8640
8641// MarshalJSON is the custom marshaler for DiagnosticCategoryCollection.
8642func (dcc DiagnosticCategoryCollection) MarshalJSON() ([]byte, error) {
8643	objectMap := make(map[string]interface{})
8644	if dcc.Value != nil {
8645		objectMap["value"] = dcc.Value
8646	}
8647	return json.Marshal(objectMap)
8648}
8649
8650// DiagnosticCategoryCollectionIterator provides access to a complete listing of DiagnosticCategory values.
8651type DiagnosticCategoryCollectionIterator struct {
8652	i    int
8653	page DiagnosticCategoryCollectionPage
8654}
8655
8656// NextWithContext advances to the next value.  If there was an error making
8657// the request the iterator does not advance and the error is returned.
8658func (iter *DiagnosticCategoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8659	if tracing.IsEnabled() {
8660		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionIterator.NextWithContext")
8661		defer func() {
8662			sc := -1
8663			if iter.Response().Response.Response != nil {
8664				sc = iter.Response().Response.Response.StatusCode
8665			}
8666			tracing.EndSpan(ctx, sc, err)
8667		}()
8668	}
8669	iter.i++
8670	if iter.i < len(iter.page.Values()) {
8671		return nil
8672	}
8673	err = iter.page.NextWithContext(ctx)
8674	if err != nil {
8675		iter.i--
8676		return err
8677	}
8678	iter.i = 0
8679	return nil
8680}
8681
8682// Next advances to the next value.  If there was an error making
8683// the request the iterator does not advance and the error is returned.
8684// Deprecated: Use NextWithContext() instead.
8685func (iter *DiagnosticCategoryCollectionIterator) Next() error {
8686	return iter.NextWithContext(context.Background())
8687}
8688
8689// NotDone returns true if the enumeration should be started or is not yet complete.
8690func (iter DiagnosticCategoryCollectionIterator) NotDone() bool {
8691	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8692}
8693
8694// Response returns the raw server response from the last page request.
8695func (iter DiagnosticCategoryCollectionIterator) Response() DiagnosticCategoryCollection {
8696	return iter.page.Response()
8697}
8698
8699// Value returns the current value or a zero-initialized value if the
8700// iterator has advanced beyond the end of the collection.
8701func (iter DiagnosticCategoryCollectionIterator) Value() DiagnosticCategory {
8702	if !iter.page.NotDone() {
8703		return DiagnosticCategory{}
8704	}
8705	return iter.page.Values()[iter.i]
8706}
8707
8708// Creates a new instance of the DiagnosticCategoryCollectionIterator type.
8709func NewDiagnosticCategoryCollectionIterator(page DiagnosticCategoryCollectionPage) DiagnosticCategoryCollectionIterator {
8710	return DiagnosticCategoryCollectionIterator{page: page}
8711}
8712
8713// IsEmpty returns true if the ListResult contains no values.
8714func (dcc DiagnosticCategoryCollection) IsEmpty() bool {
8715	return dcc.Value == nil || len(*dcc.Value) == 0
8716}
8717
8718// hasNextLink returns true if the NextLink is not empty.
8719func (dcc DiagnosticCategoryCollection) hasNextLink() bool {
8720	return dcc.NextLink != nil && len(*dcc.NextLink) != 0
8721}
8722
8723// diagnosticCategoryCollectionPreparer prepares a request to retrieve the next set of results.
8724// It returns nil if no more results exist.
8725func (dcc DiagnosticCategoryCollection) diagnosticCategoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
8726	if !dcc.hasNextLink() {
8727		return nil, nil
8728	}
8729	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8730		autorest.AsJSON(),
8731		autorest.AsGet(),
8732		autorest.WithBaseURL(to.String(dcc.NextLink)))
8733}
8734
8735// DiagnosticCategoryCollectionPage contains a page of DiagnosticCategory values.
8736type DiagnosticCategoryCollectionPage struct {
8737	fn  func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)
8738	dcc DiagnosticCategoryCollection
8739}
8740
8741// NextWithContext advances to the next page of values.  If there was an error making
8742// the request the page does not advance and the error is returned.
8743func (page *DiagnosticCategoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
8744	if tracing.IsEnabled() {
8745		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticCategoryCollectionPage.NextWithContext")
8746		defer func() {
8747			sc := -1
8748			if page.Response().Response.Response != nil {
8749				sc = page.Response().Response.Response.StatusCode
8750			}
8751			tracing.EndSpan(ctx, sc, err)
8752		}()
8753	}
8754	for {
8755		next, err := page.fn(ctx, page.dcc)
8756		if err != nil {
8757			return err
8758		}
8759		page.dcc = next
8760		if !next.hasNextLink() || !next.IsEmpty() {
8761			break
8762		}
8763	}
8764	return nil
8765}
8766
8767// Next advances to the next page of values.  If there was an error making
8768// the request the page does not advance and the error is returned.
8769// Deprecated: Use NextWithContext() instead.
8770func (page *DiagnosticCategoryCollectionPage) Next() error {
8771	return page.NextWithContext(context.Background())
8772}
8773
8774// NotDone returns true if the page enumeration should be started or is not yet complete.
8775func (page DiagnosticCategoryCollectionPage) NotDone() bool {
8776	return !page.dcc.IsEmpty()
8777}
8778
8779// Response returns the raw server response from the last page request.
8780func (page DiagnosticCategoryCollectionPage) Response() DiagnosticCategoryCollection {
8781	return page.dcc
8782}
8783
8784// Values returns the slice of values for the current page or nil if there are no values.
8785func (page DiagnosticCategoryCollectionPage) Values() []DiagnosticCategory {
8786	if page.dcc.IsEmpty() {
8787		return nil
8788	}
8789	return *page.dcc.Value
8790}
8791
8792// Creates a new instance of the DiagnosticCategoryCollectionPage type.
8793func NewDiagnosticCategoryCollectionPage(cur DiagnosticCategoryCollection, getNextPage func(context.Context, DiagnosticCategoryCollection) (DiagnosticCategoryCollection, error)) DiagnosticCategoryCollectionPage {
8794	return DiagnosticCategoryCollectionPage{
8795		fn:  getNextPage,
8796		dcc: cur,
8797	}
8798}
8799
8800// DiagnosticCategoryProperties diagnosticCategory resource specific properties
8801type DiagnosticCategoryProperties struct {
8802	// Description - READ-ONLY; Description of the diagnostic category
8803	Description *string `json:"description,omitempty"`
8804}
8805
8806// DiagnosticData set of data with rendering instructions
8807type DiagnosticData struct {
8808	// Table - Data in table form
8809	Table *DataTableResponseObject `json:"table,omitempty"`
8810	// RenderingProperties - Properties that describe how the table should be rendered
8811	RenderingProperties *Rendering `json:"renderingProperties,omitempty"`
8812}
8813
8814// DiagnosticDetectorCollection collection of Diagnostic Detectors
8815type DiagnosticDetectorCollection struct {
8816	autorest.Response `json:"-"`
8817	// Value - Collection of resources.
8818	Value *[]DetectorDefinition `json:"value,omitempty"`
8819	// NextLink - READ-ONLY; Link to next page of resources.
8820	NextLink *string `json:"nextLink,omitempty"`
8821}
8822
8823// MarshalJSON is the custom marshaler for DiagnosticDetectorCollection.
8824func (ddc DiagnosticDetectorCollection) MarshalJSON() ([]byte, error) {
8825	objectMap := make(map[string]interface{})
8826	if ddc.Value != nil {
8827		objectMap["value"] = ddc.Value
8828	}
8829	return json.Marshal(objectMap)
8830}
8831
8832// DiagnosticDetectorCollectionIterator provides access to a complete listing of DetectorDefinition values.
8833type DiagnosticDetectorCollectionIterator struct {
8834	i    int
8835	page DiagnosticDetectorCollectionPage
8836}
8837
8838// NextWithContext advances to the next value.  If there was an error making
8839// the request the iterator does not advance and the error is returned.
8840func (iter *DiagnosticDetectorCollectionIterator) NextWithContext(ctx context.Context) (err error) {
8841	if tracing.IsEnabled() {
8842		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionIterator.NextWithContext")
8843		defer func() {
8844			sc := -1
8845			if iter.Response().Response.Response != nil {
8846				sc = iter.Response().Response.Response.StatusCode
8847			}
8848			tracing.EndSpan(ctx, sc, err)
8849		}()
8850	}
8851	iter.i++
8852	if iter.i < len(iter.page.Values()) {
8853		return nil
8854	}
8855	err = iter.page.NextWithContext(ctx)
8856	if err != nil {
8857		iter.i--
8858		return err
8859	}
8860	iter.i = 0
8861	return nil
8862}
8863
8864// Next advances to the next value.  If there was an error making
8865// the request the iterator does not advance and the error is returned.
8866// Deprecated: Use NextWithContext() instead.
8867func (iter *DiagnosticDetectorCollectionIterator) Next() error {
8868	return iter.NextWithContext(context.Background())
8869}
8870
8871// NotDone returns true if the enumeration should be started or is not yet complete.
8872func (iter DiagnosticDetectorCollectionIterator) NotDone() bool {
8873	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8874}
8875
8876// Response returns the raw server response from the last page request.
8877func (iter DiagnosticDetectorCollectionIterator) Response() DiagnosticDetectorCollection {
8878	return iter.page.Response()
8879}
8880
8881// Value returns the current value or a zero-initialized value if the
8882// iterator has advanced beyond the end of the collection.
8883func (iter DiagnosticDetectorCollectionIterator) Value() DetectorDefinition {
8884	if !iter.page.NotDone() {
8885		return DetectorDefinition{}
8886	}
8887	return iter.page.Values()[iter.i]
8888}
8889
8890// Creates a new instance of the DiagnosticDetectorCollectionIterator type.
8891func NewDiagnosticDetectorCollectionIterator(page DiagnosticDetectorCollectionPage) DiagnosticDetectorCollectionIterator {
8892	return DiagnosticDetectorCollectionIterator{page: page}
8893}
8894
8895// IsEmpty returns true if the ListResult contains no values.
8896func (ddc DiagnosticDetectorCollection) IsEmpty() bool {
8897	return ddc.Value == nil || len(*ddc.Value) == 0
8898}
8899
8900// hasNextLink returns true if the NextLink is not empty.
8901func (ddc DiagnosticDetectorCollection) hasNextLink() bool {
8902	return ddc.NextLink != nil && len(*ddc.NextLink) != 0
8903}
8904
8905// diagnosticDetectorCollectionPreparer prepares a request to retrieve the next set of results.
8906// It returns nil if no more results exist.
8907func (ddc DiagnosticDetectorCollection) diagnosticDetectorCollectionPreparer(ctx context.Context) (*http.Request, error) {
8908	if !ddc.hasNextLink() {
8909		return nil, nil
8910	}
8911	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8912		autorest.AsJSON(),
8913		autorest.AsGet(),
8914		autorest.WithBaseURL(to.String(ddc.NextLink)))
8915}
8916
8917// DiagnosticDetectorCollectionPage contains a page of DetectorDefinition values.
8918type DiagnosticDetectorCollectionPage struct {
8919	fn  func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)
8920	ddc DiagnosticDetectorCollection
8921}
8922
8923// NextWithContext advances to the next page of values.  If there was an error making
8924// the request the page does not advance and the error is returned.
8925func (page *DiagnosticDetectorCollectionPage) NextWithContext(ctx context.Context) (err error) {
8926	if tracing.IsEnabled() {
8927		ctx = tracing.StartSpan(ctx, fqdn+"/DiagnosticDetectorCollectionPage.NextWithContext")
8928		defer func() {
8929			sc := -1
8930			if page.Response().Response.Response != nil {
8931				sc = page.Response().Response.Response.StatusCode
8932			}
8933			tracing.EndSpan(ctx, sc, err)
8934		}()
8935	}
8936	for {
8937		next, err := page.fn(ctx, page.ddc)
8938		if err != nil {
8939			return err
8940		}
8941		page.ddc = next
8942		if !next.hasNextLink() || !next.IsEmpty() {
8943			break
8944		}
8945	}
8946	return nil
8947}
8948
8949// Next advances to the next page of values.  If there was an error making
8950// the request the page does not advance and the error is returned.
8951// Deprecated: Use NextWithContext() instead.
8952func (page *DiagnosticDetectorCollectionPage) Next() error {
8953	return page.NextWithContext(context.Background())
8954}
8955
8956// NotDone returns true if the page enumeration should be started or is not yet complete.
8957func (page DiagnosticDetectorCollectionPage) NotDone() bool {
8958	return !page.ddc.IsEmpty()
8959}
8960
8961// Response returns the raw server response from the last page request.
8962func (page DiagnosticDetectorCollectionPage) Response() DiagnosticDetectorCollection {
8963	return page.ddc
8964}
8965
8966// Values returns the slice of values for the current page or nil if there are no values.
8967func (page DiagnosticDetectorCollectionPage) Values() []DetectorDefinition {
8968	if page.ddc.IsEmpty() {
8969		return nil
8970	}
8971	return *page.ddc.Value
8972}
8973
8974// Creates a new instance of the DiagnosticDetectorCollectionPage type.
8975func NewDiagnosticDetectorCollectionPage(cur DiagnosticDetectorCollection, getNextPage func(context.Context, DiagnosticDetectorCollection) (DiagnosticDetectorCollection, error)) DiagnosticDetectorCollectionPage {
8976	return DiagnosticDetectorCollectionPage{
8977		fn:  getNextPage,
8978		ddc: cur,
8979	}
8980}
8981
8982// DiagnosticDetectorResponse class representing Response from Diagnostic Detectors
8983type DiagnosticDetectorResponse struct {
8984	autorest.Response `json:"-"`
8985	// DiagnosticDetectorResponseProperties - DiagnosticDetectorResponse resource specific properties
8986	*DiagnosticDetectorResponseProperties `json:"properties,omitempty"`
8987	// ID - READ-ONLY; Resource Id.
8988	ID *string `json:"id,omitempty"`
8989	// Name - READ-ONLY; Resource Name.
8990	Name *string `json:"name,omitempty"`
8991	// Kind - Kind of resource.
8992	Kind *string `json:"kind,omitempty"`
8993	// Type - READ-ONLY; Resource type.
8994	Type *string `json:"type,omitempty"`
8995}
8996
8997// MarshalJSON is the custom marshaler for DiagnosticDetectorResponse.
8998func (ddr DiagnosticDetectorResponse) MarshalJSON() ([]byte, error) {
8999	objectMap := make(map[string]interface{})
9000	if ddr.DiagnosticDetectorResponseProperties != nil {
9001		objectMap["properties"] = ddr.DiagnosticDetectorResponseProperties
9002	}
9003	if ddr.Kind != nil {
9004		objectMap["kind"] = ddr.Kind
9005	}
9006	return json.Marshal(objectMap)
9007}
9008
9009// UnmarshalJSON is the custom unmarshaler for DiagnosticDetectorResponse struct.
9010func (ddr *DiagnosticDetectorResponse) UnmarshalJSON(body []byte) error {
9011	var m map[string]*json.RawMessage
9012	err := json.Unmarshal(body, &m)
9013	if err != nil {
9014		return err
9015	}
9016	for k, v := range m {
9017		switch k {
9018		case "properties":
9019			if v != nil {
9020				var diagnosticDetectorResponseProperties DiagnosticDetectorResponseProperties
9021				err = json.Unmarshal(*v, &diagnosticDetectorResponseProperties)
9022				if err != nil {
9023					return err
9024				}
9025				ddr.DiagnosticDetectorResponseProperties = &diagnosticDetectorResponseProperties
9026			}
9027		case "id":
9028			if v != nil {
9029				var ID string
9030				err = json.Unmarshal(*v, &ID)
9031				if err != nil {
9032					return err
9033				}
9034				ddr.ID = &ID
9035			}
9036		case "name":
9037			if v != nil {
9038				var name string
9039				err = json.Unmarshal(*v, &name)
9040				if err != nil {
9041					return err
9042				}
9043				ddr.Name = &name
9044			}
9045		case "kind":
9046			if v != nil {
9047				var kind string
9048				err = json.Unmarshal(*v, &kind)
9049				if err != nil {
9050					return err
9051				}
9052				ddr.Kind = &kind
9053			}
9054		case "type":
9055			if v != nil {
9056				var typeVar string
9057				err = json.Unmarshal(*v, &typeVar)
9058				if err != nil {
9059					return err
9060				}
9061				ddr.Type = &typeVar
9062			}
9063		}
9064	}
9065
9066	return nil
9067}
9068
9069// DiagnosticDetectorResponseProperties diagnosticDetectorResponse resource specific properties
9070type DiagnosticDetectorResponseProperties struct {
9071	// StartTime - Start time of the period
9072	StartTime *date.Time `json:"startTime,omitempty"`
9073	// EndTime - End time of the period
9074	EndTime *date.Time `json:"endTime,omitempty"`
9075	// IssueDetected - Flag representing Issue was detected.
9076	IssueDetected *bool `json:"issueDetected,omitempty"`
9077	// DetectorDefinition - Detector's definition
9078	DetectorDefinition *DetectorDefinition `json:"detectorDefinition,omitempty"`
9079	// Metrics - Metrics provided by the detector
9080	Metrics *[]DiagnosticMetricSet `json:"metrics,omitempty"`
9081	// AbnormalTimePeriods - List of Correlated events found by the detector
9082	AbnormalTimePeriods *[]DetectorAbnormalTimePeriod `json:"abnormalTimePeriods,omitempty"`
9083	// Data - Additional Data that detector wants to send.
9084	Data *[][]NameValuePair `json:"data,omitempty"`
9085	// ResponseMetaData - Meta Data
9086	ResponseMetaData *ResponseMetaData `json:"responseMetaData,omitempty"`
9087}
9088
9089// DiagnosticMetricSample class representing Diagnostic Metric
9090type DiagnosticMetricSample struct {
9091	// Timestamp - Time at which metric is measured
9092	Timestamp *date.Time `json:"timestamp,omitempty"`
9093	// RoleInstance - Role Instance. Null if this counter is not per instance
9094	// This is returned and should be whichever instance name we desire to be returned
9095	// i.e. CPU and Memory return RDWORKERNAME (LargeDed..._IN_0)
9096	// where RDWORKERNAME is Machine name below and RoleInstance name in parenthesis
9097	RoleInstance *string `json:"roleInstance,omitempty"`
9098	// Total - Total value of the metric. If multiple measurements are made this will have sum of all.
9099	Total *float64 `json:"total,omitempty"`
9100	// Maximum - Maximum of the metric sampled during the time period
9101	Maximum *float64 `json:"maximum,omitempty"`
9102	// Minimum - Minimum of the metric sampled during the time period
9103	Minimum *float64 `json:"minimum,omitempty"`
9104	// IsAggregated - Whether the values are aggregates across all workers or not
9105	IsAggregated *bool `json:"isAggregated,omitempty"`
9106}
9107
9108// DiagnosticMetricSet class representing Diagnostic Metric information
9109type DiagnosticMetricSet struct {
9110	// Name - Name of the metric
9111	Name *string `json:"name,omitempty"`
9112	// Unit - Metric's unit
9113	Unit *string `json:"unit,omitempty"`
9114	// StartTime - Start time of the period
9115	StartTime *date.Time `json:"startTime,omitempty"`
9116	// EndTime - End time of the period
9117	EndTime *date.Time `json:"endTime,omitempty"`
9118	// TimeGrain - Presented time grain. Supported grains at the moment are PT1M, PT1H, P1D
9119	TimeGrain *string `json:"timeGrain,omitempty"`
9120	// Values - Collection of metric values for the selected period based on the {Microsoft.Web.Hosting.Administration.DiagnosticMetricSet.TimeGrain}
9121	Values *[]DiagnosticMetricSample `json:"values,omitempty"`
9122}
9123
9124// Dimension dimension of a resource metric. For e.g. instance specific HTTP requests for a web app,
9125// where instance name is dimension of the metric HTTP request
9126type Dimension struct {
9127	Name                   *string `json:"name,omitempty"`
9128	DisplayName            *string `json:"displayName,omitempty"`
9129	InternalName           *string `json:"internalName,omitempty"`
9130	ToBeExportedForShoebox *bool   `json:"toBeExportedForShoebox,omitempty"`
9131}
9132
9133// Domain information about a domain.
9134type Domain struct {
9135	autorest.Response `json:"-"`
9136	// DomainProperties - Domain resource specific properties
9137	*DomainProperties `json:"properties,omitempty"`
9138	// ID - READ-ONLY; Resource Id.
9139	ID *string `json:"id,omitempty"`
9140	// Name - READ-ONLY; Resource Name.
9141	Name *string `json:"name,omitempty"`
9142	// Kind - Kind of resource.
9143	Kind *string `json:"kind,omitempty"`
9144	// Location - Resource Location.
9145	Location *string `json:"location,omitempty"`
9146	// Type - READ-ONLY; Resource type.
9147	Type *string `json:"type,omitempty"`
9148	// Tags - Resource tags.
9149	Tags map[string]*string `json:"tags"`
9150}
9151
9152// MarshalJSON is the custom marshaler for Domain.
9153func (d Domain) MarshalJSON() ([]byte, error) {
9154	objectMap := make(map[string]interface{})
9155	if d.DomainProperties != nil {
9156		objectMap["properties"] = d.DomainProperties
9157	}
9158	if d.Kind != nil {
9159		objectMap["kind"] = d.Kind
9160	}
9161	if d.Location != nil {
9162		objectMap["location"] = d.Location
9163	}
9164	if d.Tags != nil {
9165		objectMap["tags"] = d.Tags
9166	}
9167	return json.Marshal(objectMap)
9168}
9169
9170// UnmarshalJSON is the custom unmarshaler for Domain struct.
9171func (d *Domain) UnmarshalJSON(body []byte) error {
9172	var m map[string]*json.RawMessage
9173	err := json.Unmarshal(body, &m)
9174	if err != nil {
9175		return err
9176	}
9177	for k, v := range m {
9178		switch k {
9179		case "properties":
9180			if v != nil {
9181				var domainProperties DomainProperties
9182				err = json.Unmarshal(*v, &domainProperties)
9183				if err != nil {
9184					return err
9185				}
9186				d.DomainProperties = &domainProperties
9187			}
9188		case "id":
9189			if v != nil {
9190				var ID string
9191				err = json.Unmarshal(*v, &ID)
9192				if err != nil {
9193					return err
9194				}
9195				d.ID = &ID
9196			}
9197		case "name":
9198			if v != nil {
9199				var name string
9200				err = json.Unmarshal(*v, &name)
9201				if err != nil {
9202					return err
9203				}
9204				d.Name = &name
9205			}
9206		case "kind":
9207			if v != nil {
9208				var kind string
9209				err = json.Unmarshal(*v, &kind)
9210				if err != nil {
9211					return err
9212				}
9213				d.Kind = &kind
9214			}
9215		case "location":
9216			if v != nil {
9217				var location string
9218				err = json.Unmarshal(*v, &location)
9219				if err != nil {
9220					return err
9221				}
9222				d.Location = &location
9223			}
9224		case "type":
9225			if v != nil {
9226				var typeVar string
9227				err = json.Unmarshal(*v, &typeVar)
9228				if err != nil {
9229					return err
9230				}
9231				d.Type = &typeVar
9232			}
9233		case "tags":
9234			if v != nil {
9235				var tags map[string]*string
9236				err = json.Unmarshal(*v, &tags)
9237				if err != nil {
9238					return err
9239				}
9240				d.Tags = tags
9241			}
9242		}
9243	}
9244
9245	return nil
9246}
9247
9248// DomainAvailabilityCheckResult domain availability check result.
9249type DomainAvailabilityCheckResult struct {
9250	autorest.Response `json:"-"`
9251	// Name - Name of the domain.
9252	Name *string `json:"name,omitempty"`
9253	// Available - <code>true</code> if domain can be purchased using CreateDomain API; otherwise, <code>false</code>.
9254	Available *bool `json:"available,omitempty"`
9255	// 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'
9256	DomainType DomainType `json:"domainType,omitempty"`
9257}
9258
9259// DomainCollection collection of domains.
9260type DomainCollection struct {
9261	autorest.Response `json:"-"`
9262	// Value - Collection of resources.
9263	Value *[]Domain `json:"value,omitempty"`
9264	// NextLink - READ-ONLY; Link to next page of resources.
9265	NextLink *string `json:"nextLink,omitempty"`
9266}
9267
9268// MarshalJSON is the custom marshaler for DomainCollection.
9269func (dc DomainCollection) MarshalJSON() ([]byte, error) {
9270	objectMap := make(map[string]interface{})
9271	if dc.Value != nil {
9272		objectMap["value"] = dc.Value
9273	}
9274	return json.Marshal(objectMap)
9275}
9276
9277// DomainCollectionIterator provides access to a complete listing of Domain values.
9278type DomainCollectionIterator struct {
9279	i    int
9280	page DomainCollectionPage
9281}
9282
9283// NextWithContext advances to the next value.  If there was an error making
9284// the request the iterator does not advance and the error is returned.
9285func (iter *DomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9286	if tracing.IsEnabled() {
9287		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionIterator.NextWithContext")
9288		defer func() {
9289			sc := -1
9290			if iter.Response().Response.Response != nil {
9291				sc = iter.Response().Response.Response.StatusCode
9292			}
9293			tracing.EndSpan(ctx, sc, err)
9294		}()
9295	}
9296	iter.i++
9297	if iter.i < len(iter.page.Values()) {
9298		return nil
9299	}
9300	err = iter.page.NextWithContext(ctx)
9301	if err != nil {
9302		iter.i--
9303		return err
9304	}
9305	iter.i = 0
9306	return nil
9307}
9308
9309// Next advances to the next value.  If there was an error making
9310// the request the iterator does not advance and the error is returned.
9311// Deprecated: Use NextWithContext() instead.
9312func (iter *DomainCollectionIterator) Next() error {
9313	return iter.NextWithContext(context.Background())
9314}
9315
9316// NotDone returns true if the enumeration should be started or is not yet complete.
9317func (iter DomainCollectionIterator) NotDone() bool {
9318	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9319}
9320
9321// Response returns the raw server response from the last page request.
9322func (iter DomainCollectionIterator) Response() DomainCollection {
9323	return iter.page.Response()
9324}
9325
9326// Value returns the current value or a zero-initialized value if the
9327// iterator has advanced beyond the end of the collection.
9328func (iter DomainCollectionIterator) Value() Domain {
9329	if !iter.page.NotDone() {
9330		return Domain{}
9331	}
9332	return iter.page.Values()[iter.i]
9333}
9334
9335// Creates a new instance of the DomainCollectionIterator type.
9336func NewDomainCollectionIterator(page DomainCollectionPage) DomainCollectionIterator {
9337	return DomainCollectionIterator{page: page}
9338}
9339
9340// IsEmpty returns true if the ListResult contains no values.
9341func (dc DomainCollection) IsEmpty() bool {
9342	return dc.Value == nil || len(*dc.Value) == 0
9343}
9344
9345// hasNextLink returns true if the NextLink is not empty.
9346func (dc DomainCollection) hasNextLink() bool {
9347	return dc.NextLink != nil && len(*dc.NextLink) != 0
9348}
9349
9350// domainCollectionPreparer prepares a request to retrieve the next set of results.
9351// It returns nil if no more results exist.
9352func (dc DomainCollection) domainCollectionPreparer(ctx context.Context) (*http.Request, error) {
9353	if !dc.hasNextLink() {
9354		return nil, nil
9355	}
9356	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9357		autorest.AsJSON(),
9358		autorest.AsGet(),
9359		autorest.WithBaseURL(to.String(dc.NextLink)))
9360}
9361
9362// DomainCollectionPage contains a page of Domain values.
9363type DomainCollectionPage struct {
9364	fn func(context.Context, DomainCollection) (DomainCollection, error)
9365	dc DomainCollection
9366}
9367
9368// NextWithContext advances to the next page of values.  If there was an error making
9369// the request the page does not advance and the error is returned.
9370func (page *DomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
9371	if tracing.IsEnabled() {
9372		ctx = tracing.StartSpan(ctx, fqdn+"/DomainCollectionPage.NextWithContext")
9373		defer func() {
9374			sc := -1
9375			if page.Response().Response.Response != nil {
9376				sc = page.Response().Response.Response.StatusCode
9377			}
9378			tracing.EndSpan(ctx, sc, err)
9379		}()
9380	}
9381	for {
9382		next, err := page.fn(ctx, page.dc)
9383		if err != nil {
9384			return err
9385		}
9386		page.dc = next
9387		if !next.hasNextLink() || !next.IsEmpty() {
9388			break
9389		}
9390	}
9391	return nil
9392}
9393
9394// Next advances to the next page of values.  If there was an error making
9395// the request the page does not advance and the error is returned.
9396// Deprecated: Use NextWithContext() instead.
9397func (page *DomainCollectionPage) Next() error {
9398	return page.NextWithContext(context.Background())
9399}
9400
9401// NotDone returns true if the page enumeration should be started or is not yet complete.
9402func (page DomainCollectionPage) NotDone() bool {
9403	return !page.dc.IsEmpty()
9404}
9405
9406// Response returns the raw server response from the last page request.
9407func (page DomainCollectionPage) Response() DomainCollection {
9408	return page.dc
9409}
9410
9411// Values returns the slice of values for the current page or nil if there are no values.
9412func (page DomainCollectionPage) Values() []Domain {
9413	if page.dc.IsEmpty() {
9414		return nil
9415	}
9416	return *page.dc.Value
9417}
9418
9419// Creates a new instance of the DomainCollectionPage type.
9420func NewDomainCollectionPage(cur DomainCollection, getNextPage func(context.Context, DomainCollection) (DomainCollection, error)) DomainCollectionPage {
9421	return DomainCollectionPage{
9422		fn: getNextPage,
9423		dc: cur,
9424	}
9425}
9426
9427// DomainControlCenterSsoRequest single sign-on request information for domain management.
9428type DomainControlCenterSsoRequest struct {
9429	autorest.Response `json:"-"`
9430	// URL - READ-ONLY; URL where the single sign-on request is to be made.
9431	URL *string `json:"url,omitempty"`
9432	// PostParameterKey - READ-ONLY; Post parameter key.
9433	PostParameterKey *string `json:"postParameterKey,omitempty"`
9434	// PostParameterValue - READ-ONLY; Post parameter value. Client should use 'application/x-www-form-urlencoded' encoding for this value.
9435	PostParameterValue *string `json:"postParameterValue,omitempty"`
9436}
9437
9438// DomainOwnershipIdentifier domain ownership Identifier.
9439type DomainOwnershipIdentifier struct {
9440	autorest.Response `json:"-"`
9441	// DomainOwnershipIdentifierProperties - DomainOwnershipIdentifier resource specific properties
9442	*DomainOwnershipIdentifierProperties `json:"properties,omitempty"`
9443	// ID - READ-ONLY; Resource Id.
9444	ID *string `json:"id,omitempty"`
9445	// Name - READ-ONLY; Resource Name.
9446	Name *string `json:"name,omitempty"`
9447	// Kind - Kind of resource.
9448	Kind *string `json:"kind,omitempty"`
9449	// Type - READ-ONLY; Resource type.
9450	Type *string `json:"type,omitempty"`
9451}
9452
9453// MarshalJSON is the custom marshaler for DomainOwnershipIdentifier.
9454func (doi DomainOwnershipIdentifier) MarshalJSON() ([]byte, error) {
9455	objectMap := make(map[string]interface{})
9456	if doi.DomainOwnershipIdentifierProperties != nil {
9457		objectMap["properties"] = doi.DomainOwnershipIdentifierProperties
9458	}
9459	if doi.Kind != nil {
9460		objectMap["kind"] = doi.Kind
9461	}
9462	return json.Marshal(objectMap)
9463}
9464
9465// UnmarshalJSON is the custom unmarshaler for DomainOwnershipIdentifier struct.
9466func (doi *DomainOwnershipIdentifier) UnmarshalJSON(body []byte) error {
9467	var m map[string]*json.RawMessage
9468	err := json.Unmarshal(body, &m)
9469	if err != nil {
9470		return err
9471	}
9472	for k, v := range m {
9473		switch k {
9474		case "properties":
9475			if v != nil {
9476				var domainOwnershipIdentifierProperties DomainOwnershipIdentifierProperties
9477				err = json.Unmarshal(*v, &domainOwnershipIdentifierProperties)
9478				if err != nil {
9479					return err
9480				}
9481				doi.DomainOwnershipIdentifierProperties = &domainOwnershipIdentifierProperties
9482			}
9483		case "id":
9484			if v != nil {
9485				var ID string
9486				err = json.Unmarshal(*v, &ID)
9487				if err != nil {
9488					return err
9489				}
9490				doi.ID = &ID
9491			}
9492		case "name":
9493			if v != nil {
9494				var name string
9495				err = json.Unmarshal(*v, &name)
9496				if err != nil {
9497					return err
9498				}
9499				doi.Name = &name
9500			}
9501		case "kind":
9502			if v != nil {
9503				var kind string
9504				err = json.Unmarshal(*v, &kind)
9505				if err != nil {
9506					return err
9507				}
9508				doi.Kind = &kind
9509			}
9510		case "type":
9511			if v != nil {
9512				var typeVar string
9513				err = json.Unmarshal(*v, &typeVar)
9514				if err != nil {
9515					return err
9516				}
9517				doi.Type = &typeVar
9518			}
9519		}
9520	}
9521
9522	return nil
9523}
9524
9525// DomainOwnershipIdentifierCollection collection of domain ownership identifiers.
9526type DomainOwnershipIdentifierCollection struct {
9527	autorest.Response `json:"-"`
9528	// Value - Collection of resources.
9529	Value *[]DomainOwnershipIdentifier `json:"value,omitempty"`
9530	// NextLink - READ-ONLY; Link to next page of resources.
9531	NextLink *string `json:"nextLink,omitempty"`
9532}
9533
9534// MarshalJSON is the custom marshaler for DomainOwnershipIdentifierCollection.
9535func (doic DomainOwnershipIdentifierCollection) MarshalJSON() ([]byte, error) {
9536	objectMap := make(map[string]interface{})
9537	if doic.Value != nil {
9538		objectMap["value"] = doic.Value
9539	}
9540	return json.Marshal(objectMap)
9541}
9542
9543// DomainOwnershipIdentifierCollectionIterator provides access to a complete listing of
9544// DomainOwnershipIdentifier values.
9545type DomainOwnershipIdentifierCollectionIterator struct {
9546	i    int
9547	page DomainOwnershipIdentifierCollectionPage
9548}
9549
9550// NextWithContext advances to the next value.  If there was an error making
9551// the request the iterator does not advance and the error is returned.
9552func (iter *DomainOwnershipIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
9553	if tracing.IsEnabled() {
9554		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionIterator.NextWithContext")
9555		defer func() {
9556			sc := -1
9557			if iter.Response().Response.Response != nil {
9558				sc = iter.Response().Response.Response.StatusCode
9559			}
9560			tracing.EndSpan(ctx, sc, err)
9561		}()
9562	}
9563	iter.i++
9564	if iter.i < len(iter.page.Values()) {
9565		return nil
9566	}
9567	err = iter.page.NextWithContext(ctx)
9568	if err != nil {
9569		iter.i--
9570		return err
9571	}
9572	iter.i = 0
9573	return nil
9574}
9575
9576// Next advances to the next value.  If there was an error making
9577// the request the iterator does not advance and the error is returned.
9578// Deprecated: Use NextWithContext() instead.
9579func (iter *DomainOwnershipIdentifierCollectionIterator) Next() error {
9580	return iter.NextWithContext(context.Background())
9581}
9582
9583// NotDone returns true if the enumeration should be started or is not yet complete.
9584func (iter DomainOwnershipIdentifierCollectionIterator) NotDone() bool {
9585	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9586}
9587
9588// Response returns the raw server response from the last page request.
9589func (iter DomainOwnershipIdentifierCollectionIterator) Response() DomainOwnershipIdentifierCollection {
9590	return iter.page.Response()
9591}
9592
9593// Value returns the current value or a zero-initialized value if the
9594// iterator has advanced beyond the end of the collection.
9595func (iter DomainOwnershipIdentifierCollectionIterator) Value() DomainOwnershipIdentifier {
9596	if !iter.page.NotDone() {
9597		return DomainOwnershipIdentifier{}
9598	}
9599	return iter.page.Values()[iter.i]
9600}
9601
9602// Creates a new instance of the DomainOwnershipIdentifierCollectionIterator type.
9603func NewDomainOwnershipIdentifierCollectionIterator(page DomainOwnershipIdentifierCollectionPage) DomainOwnershipIdentifierCollectionIterator {
9604	return DomainOwnershipIdentifierCollectionIterator{page: page}
9605}
9606
9607// IsEmpty returns true if the ListResult contains no values.
9608func (doic DomainOwnershipIdentifierCollection) IsEmpty() bool {
9609	return doic.Value == nil || len(*doic.Value) == 0
9610}
9611
9612// hasNextLink returns true if the NextLink is not empty.
9613func (doic DomainOwnershipIdentifierCollection) hasNextLink() bool {
9614	return doic.NextLink != nil && len(*doic.NextLink) != 0
9615}
9616
9617// domainOwnershipIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
9618// It returns nil if no more results exist.
9619func (doic DomainOwnershipIdentifierCollection) domainOwnershipIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
9620	if !doic.hasNextLink() {
9621		return nil, nil
9622	}
9623	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9624		autorest.AsJSON(),
9625		autorest.AsGet(),
9626		autorest.WithBaseURL(to.String(doic.NextLink)))
9627}
9628
9629// DomainOwnershipIdentifierCollectionPage contains a page of DomainOwnershipIdentifier values.
9630type DomainOwnershipIdentifierCollectionPage struct {
9631	fn   func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)
9632	doic DomainOwnershipIdentifierCollection
9633}
9634
9635// NextWithContext advances to the next page of values.  If there was an error making
9636// the request the page does not advance and the error is returned.
9637func (page *DomainOwnershipIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
9638	if tracing.IsEnabled() {
9639		ctx = tracing.StartSpan(ctx, fqdn+"/DomainOwnershipIdentifierCollectionPage.NextWithContext")
9640		defer func() {
9641			sc := -1
9642			if page.Response().Response.Response != nil {
9643				sc = page.Response().Response.Response.StatusCode
9644			}
9645			tracing.EndSpan(ctx, sc, err)
9646		}()
9647	}
9648	for {
9649		next, err := page.fn(ctx, page.doic)
9650		if err != nil {
9651			return err
9652		}
9653		page.doic = next
9654		if !next.hasNextLink() || !next.IsEmpty() {
9655			break
9656		}
9657	}
9658	return nil
9659}
9660
9661// Next advances to the next page of values.  If there was an error making
9662// the request the page does not advance and the error is returned.
9663// Deprecated: Use NextWithContext() instead.
9664func (page *DomainOwnershipIdentifierCollectionPage) Next() error {
9665	return page.NextWithContext(context.Background())
9666}
9667
9668// NotDone returns true if the page enumeration should be started or is not yet complete.
9669func (page DomainOwnershipIdentifierCollectionPage) NotDone() bool {
9670	return !page.doic.IsEmpty()
9671}
9672
9673// Response returns the raw server response from the last page request.
9674func (page DomainOwnershipIdentifierCollectionPage) Response() DomainOwnershipIdentifierCollection {
9675	return page.doic
9676}
9677
9678// Values returns the slice of values for the current page or nil if there are no values.
9679func (page DomainOwnershipIdentifierCollectionPage) Values() []DomainOwnershipIdentifier {
9680	if page.doic.IsEmpty() {
9681		return nil
9682	}
9683	return *page.doic.Value
9684}
9685
9686// Creates a new instance of the DomainOwnershipIdentifierCollectionPage type.
9687func NewDomainOwnershipIdentifierCollectionPage(cur DomainOwnershipIdentifierCollection, getNextPage func(context.Context, DomainOwnershipIdentifierCollection) (DomainOwnershipIdentifierCollection, error)) DomainOwnershipIdentifierCollectionPage {
9688	return DomainOwnershipIdentifierCollectionPage{
9689		fn:   getNextPage,
9690		doic: cur,
9691	}
9692}
9693
9694// DomainOwnershipIdentifierProperties domainOwnershipIdentifier resource specific properties
9695type DomainOwnershipIdentifierProperties struct {
9696	// OwnershipID - Ownership Id.
9697	OwnershipID *string `json:"ownershipId,omitempty"`
9698}
9699
9700// DomainPatchResource ARM resource for a domain.
9701type DomainPatchResource struct {
9702	// DomainPatchResourceProperties - DomainPatchResource resource specific properties
9703	*DomainPatchResourceProperties `json:"properties,omitempty"`
9704	// ID - READ-ONLY; Resource Id.
9705	ID *string `json:"id,omitempty"`
9706	// Name - READ-ONLY; Resource Name.
9707	Name *string `json:"name,omitempty"`
9708	// Kind - Kind of resource.
9709	Kind *string `json:"kind,omitempty"`
9710	// Type - READ-ONLY; Resource type.
9711	Type *string `json:"type,omitempty"`
9712}
9713
9714// MarshalJSON is the custom marshaler for DomainPatchResource.
9715func (dpr DomainPatchResource) MarshalJSON() ([]byte, error) {
9716	objectMap := make(map[string]interface{})
9717	if dpr.DomainPatchResourceProperties != nil {
9718		objectMap["properties"] = dpr.DomainPatchResourceProperties
9719	}
9720	if dpr.Kind != nil {
9721		objectMap["kind"] = dpr.Kind
9722	}
9723	return json.Marshal(objectMap)
9724}
9725
9726// UnmarshalJSON is the custom unmarshaler for DomainPatchResource struct.
9727func (dpr *DomainPatchResource) UnmarshalJSON(body []byte) error {
9728	var m map[string]*json.RawMessage
9729	err := json.Unmarshal(body, &m)
9730	if err != nil {
9731		return err
9732	}
9733	for k, v := range m {
9734		switch k {
9735		case "properties":
9736			if v != nil {
9737				var domainPatchResourceProperties DomainPatchResourceProperties
9738				err = json.Unmarshal(*v, &domainPatchResourceProperties)
9739				if err != nil {
9740					return err
9741				}
9742				dpr.DomainPatchResourceProperties = &domainPatchResourceProperties
9743			}
9744		case "id":
9745			if v != nil {
9746				var ID string
9747				err = json.Unmarshal(*v, &ID)
9748				if err != nil {
9749					return err
9750				}
9751				dpr.ID = &ID
9752			}
9753		case "name":
9754			if v != nil {
9755				var name string
9756				err = json.Unmarshal(*v, &name)
9757				if err != nil {
9758					return err
9759				}
9760				dpr.Name = &name
9761			}
9762		case "kind":
9763			if v != nil {
9764				var kind string
9765				err = json.Unmarshal(*v, &kind)
9766				if err != nil {
9767					return err
9768				}
9769				dpr.Kind = &kind
9770			}
9771		case "type":
9772			if v != nil {
9773				var typeVar string
9774				err = json.Unmarshal(*v, &typeVar)
9775				if err != nil {
9776					return err
9777				}
9778				dpr.Type = &typeVar
9779			}
9780		}
9781	}
9782
9783	return nil
9784}
9785
9786// DomainPatchResourceProperties domainPatchResource resource specific properties
9787type DomainPatchResourceProperties struct {
9788	// ContactAdmin - Administrative contact.
9789	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
9790	// ContactBilling - Billing contact.
9791	ContactBilling *Contact `json:"contactBilling,omitempty"`
9792	// ContactRegistrant - Registrant contact.
9793	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
9794	// ContactTech - Technical contact.
9795	ContactTech *Contact `json:"contactTech,omitempty"`
9796	// 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'
9797	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
9798	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
9799	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
9800	// NameServers - READ-ONLY; Name servers.
9801	NameServers *[]string `json:"nameServers,omitempty"`
9802	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
9803	Privacy *bool `json:"privacy,omitempty"`
9804	// CreatedTime - READ-ONLY; Domain creation timestamp.
9805	CreatedTime *date.Time `json:"createdTime,omitempty"`
9806	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
9807	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
9808	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
9809	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
9810	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
9811	AutoRenew *bool `json:"autoRenew,omitempty"`
9812	// 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
9813	//  it is hosted on name servers Azure has programmatic access to.
9814	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
9815	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
9816	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
9817	// Consent - Legal agreement consent.
9818	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
9819	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
9820	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
9821	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9822	DNSType DNSType `json:"dnsType,omitempty"`
9823	// DNSZoneID - Azure DNS Zone to use
9824	DNSZoneID *string `json:"dnsZoneId,omitempty"`
9825	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9826	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
9827	AuthCode      *string `json:"authCode,omitempty"`
9828}
9829
9830// MarshalJSON is the custom marshaler for DomainPatchResourceProperties.
9831func (dpr DomainPatchResourceProperties) MarshalJSON() ([]byte, error) {
9832	objectMap := make(map[string]interface{})
9833	if dpr.ContactAdmin != nil {
9834		objectMap["contactAdmin"] = dpr.ContactAdmin
9835	}
9836	if dpr.ContactBilling != nil {
9837		objectMap["contactBilling"] = dpr.ContactBilling
9838	}
9839	if dpr.ContactRegistrant != nil {
9840		objectMap["contactRegistrant"] = dpr.ContactRegistrant
9841	}
9842	if dpr.ContactTech != nil {
9843		objectMap["contactTech"] = dpr.ContactTech
9844	}
9845	if dpr.Privacy != nil {
9846		objectMap["privacy"] = dpr.Privacy
9847	}
9848	if dpr.AutoRenew != nil {
9849		objectMap["autoRenew"] = dpr.AutoRenew
9850	}
9851	if dpr.Consent != nil {
9852		objectMap["consent"] = dpr.Consent
9853	}
9854	if dpr.DNSType != "" {
9855		objectMap["dnsType"] = dpr.DNSType
9856	}
9857	if dpr.DNSZoneID != nil {
9858		objectMap["dnsZoneId"] = dpr.DNSZoneID
9859	}
9860	if dpr.TargetDNSType != "" {
9861		objectMap["targetDnsType"] = dpr.TargetDNSType
9862	}
9863	if dpr.AuthCode != nil {
9864		objectMap["authCode"] = dpr.AuthCode
9865	}
9866	return json.Marshal(objectMap)
9867}
9868
9869// DomainProperties domain resource specific properties
9870type DomainProperties struct {
9871	// ContactAdmin - Administrative contact.
9872	ContactAdmin *Contact `json:"contactAdmin,omitempty"`
9873	// ContactBilling - Billing contact.
9874	ContactBilling *Contact `json:"contactBilling,omitempty"`
9875	// ContactRegistrant - Registrant contact.
9876	ContactRegistrant *Contact `json:"contactRegistrant,omitempty"`
9877	// ContactTech - Technical contact.
9878	ContactTech *Contact `json:"contactTech,omitempty"`
9879	// 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'
9880	RegistrationStatus DomainStatus `json:"registrationStatus,omitempty"`
9881	// ProvisioningState - READ-ONLY; Domain provisioning state. Possible values include: 'ProvisioningStateSucceeded', 'ProvisioningStateFailed', 'ProvisioningStateCanceled', 'ProvisioningStateInProgress', 'ProvisioningStateDeleting'
9882	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
9883	// NameServers - READ-ONLY; Name servers.
9884	NameServers *[]string `json:"nameServers,omitempty"`
9885	// Privacy - <code>true</code> if domain privacy is enabled for this domain; otherwise, <code>false</code>.
9886	Privacy *bool `json:"privacy,omitempty"`
9887	// CreatedTime - READ-ONLY; Domain creation timestamp.
9888	CreatedTime *date.Time `json:"createdTime,omitempty"`
9889	// ExpirationTime - READ-ONLY; Domain expiration timestamp.
9890	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
9891	// LastRenewedTime - READ-ONLY; Timestamp when the domain was renewed last time.
9892	LastRenewedTime *date.Time `json:"lastRenewedTime,omitempty"`
9893	// AutoRenew - <code>true</code> if the domain should be automatically renewed; otherwise, <code>false</code>.
9894	AutoRenew *bool `json:"autoRenew,omitempty"`
9895	// 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
9896	//  it is hosted on name servers Azure has programmatic access to.
9897	ReadyForDNSRecordManagement *bool `json:"readyForDnsRecordManagement,omitempty"`
9898	// ManagedHostNames - READ-ONLY; All hostnames derived from the domain and assigned to Azure resources.
9899	ManagedHostNames *[]HostName `json:"managedHostNames,omitempty"`
9900	// Consent - Legal agreement consent.
9901	Consent *DomainPurchaseConsent `json:"consent,omitempty"`
9902	// DomainNotRenewableReasons - READ-ONLY; Reasons why domain is not renewable.
9903	DomainNotRenewableReasons *[]string `json:"domainNotRenewableReasons,omitempty"`
9904	// DNSType - Current DNS type. Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9905	DNSType DNSType `json:"dnsType,omitempty"`
9906	// DNSZoneID - Azure DNS Zone to use
9907	DNSZoneID *string `json:"dnsZoneId,omitempty"`
9908	// TargetDNSType - Target DNS type (would be used for migration). Possible values include: 'AzureDNS', 'DefaultDomainRegistrarDNS'
9909	TargetDNSType DNSType `json:"targetDnsType,omitempty"`
9910	AuthCode      *string `json:"authCode,omitempty"`
9911}
9912
9913// MarshalJSON is the custom marshaler for DomainProperties.
9914func (d DomainProperties) MarshalJSON() ([]byte, error) {
9915	objectMap := make(map[string]interface{})
9916	if d.ContactAdmin != nil {
9917		objectMap["contactAdmin"] = d.ContactAdmin
9918	}
9919	if d.ContactBilling != nil {
9920		objectMap["contactBilling"] = d.ContactBilling
9921	}
9922	if d.ContactRegistrant != nil {
9923		objectMap["contactRegistrant"] = d.ContactRegistrant
9924	}
9925	if d.ContactTech != nil {
9926		objectMap["contactTech"] = d.ContactTech
9927	}
9928	if d.Privacy != nil {
9929		objectMap["privacy"] = d.Privacy
9930	}
9931	if d.AutoRenew != nil {
9932		objectMap["autoRenew"] = d.AutoRenew
9933	}
9934	if d.Consent != nil {
9935		objectMap["consent"] = d.Consent
9936	}
9937	if d.DNSType != "" {
9938		objectMap["dnsType"] = d.DNSType
9939	}
9940	if d.DNSZoneID != nil {
9941		objectMap["dnsZoneId"] = d.DNSZoneID
9942	}
9943	if d.TargetDNSType != "" {
9944		objectMap["targetDnsType"] = d.TargetDNSType
9945	}
9946	if d.AuthCode != nil {
9947		objectMap["authCode"] = d.AuthCode
9948	}
9949	return json.Marshal(objectMap)
9950}
9951
9952// DomainPurchaseConsent domain purchase consent object, representing acceptance of applicable legal
9953// agreements.
9954type DomainPurchaseConsent struct {
9955	// AgreementKeys - List of applicable legal agreement keys. This list can be retrieved using ListLegalAgreements API under <code>TopLevelDomain</code> resource.
9956	AgreementKeys *[]string `json:"agreementKeys,omitempty"`
9957	// AgreedBy - Client IP address.
9958	AgreedBy *string `json:"agreedBy,omitempty"`
9959	// AgreedAt - Timestamp when the agreements were accepted.
9960	AgreedAt *date.Time `json:"agreedAt,omitempty"`
9961}
9962
9963// DomainRecommendationSearchParameters domain recommendation search parameters.
9964type DomainRecommendationSearchParameters struct {
9965	// Keywords - Keywords to be used for generating domain recommendations.
9966	Keywords *string `json:"keywords,omitempty"`
9967	// MaxDomainRecommendations - Maximum number of recommendations.
9968	MaxDomainRecommendations *int32 `json:"maxDomainRecommendations,omitempty"`
9969}
9970
9971// DomainsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
9972// operation.
9973type DomainsCreateOrUpdateFuture struct {
9974	azure.FutureAPI
9975	// Result returns the result of the asynchronous operation.
9976	// If the operation has not completed it will return an error.
9977	Result func(DomainsClient) (Domain, error)
9978}
9979
9980// EnabledConfig enabled configuration.
9981type EnabledConfig struct {
9982	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
9983	Enabled *bool `json:"enabled,omitempty"`
9984}
9985
9986// EndpointDependency a domain name that a service is reached at, including details of the current
9987// connection status.
9988type EndpointDependency struct {
9989	// DomainName - The domain name of the dependency.
9990	DomainName *string `json:"domainName,omitempty"`
9991	// EndpointDetails - The IP Addresses and Ports used when connecting to DomainName.
9992	EndpointDetails *[]EndpointDetail `json:"endpointDetails,omitempty"`
9993}
9994
9995// EndpointDetail current TCP connectivity information from the App Service Environment to a single
9996// endpoint.
9997type EndpointDetail struct {
9998	// IPAddress - An IP Address that Domain Name currently resolves to.
9999	IPAddress *string `json:"ipAddress,omitempty"`
10000	// Port - The port an endpoint is connected to.
10001	Port *int32 `json:"port,omitempty"`
10002	// 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.
10003	Latency *float64 `json:"latency,omitempty"`
10004	// IsAccessible - Whether it is possible to create a TCP connection from the App Service Environment to this IpAddress at this Port.
10005	IsAccessible *bool `json:"isAccessible,omitempty"`
10006}
10007
10008// ErrorEntity body of the error response returned from the API.
10009type ErrorEntity struct {
10010	// ExtendedCode - Type of error.
10011	ExtendedCode *string `json:"extendedCode,omitempty"`
10012	// MessageTemplate - Message template.
10013	MessageTemplate *string `json:"messageTemplate,omitempty"`
10014	// Parameters - Parameters for the template.
10015	Parameters *[]string `json:"parameters,omitempty"`
10016	// InnerErrors - Inner errors.
10017	InnerErrors *[]ErrorEntity `json:"innerErrors,omitempty"`
10018	// Code - Basic error code.
10019	Code *string `json:"code,omitempty"`
10020	// Message - Any details of the error.
10021	Message *string `json:"message,omitempty"`
10022}
10023
10024// Experiments routing rules in production experiments.
10025type Experiments struct {
10026	// RampUpRules - List of ramp-up rules.
10027	RampUpRules *[]RampUpRule `json:"rampUpRules,omitempty"`
10028}
10029
10030// Facebook ...
10031type Facebook struct {
10032	// FacebookProperties - Facebook resource specific properties
10033	*FacebookProperties `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 Facebook.
10045func (f Facebook) MarshalJSON() ([]byte, error) {
10046	objectMap := make(map[string]interface{})
10047	if f.FacebookProperties != nil {
10048		objectMap["properties"] = f.FacebookProperties
10049	}
10050	if f.Kind != nil {
10051		objectMap["kind"] = f.Kind
10052	}
10053	return json.Marshal(objectMap)
10054}
10055
10056// UnmarshalJSON is the custom unmarshaler for Facebook struct.
10057func (f *Facebook) 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 facebookProperties FacebookProperties
10068				err = json.Unmarshal(*v, &facebookProperties)
10069				if err != nil {
10070					return err
10071				}
10072				f.FacebookProperties = &facebookProperties
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				f.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				f.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				f.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				f.Type = &typeVar
10109			}
10110		}
10111	}
10112
10113	return nil
10114}
10115
10116// FacebookProperties facebook resource specific properties
10117type FacebookProperties struct {
10118	Enabled         *bool            `json:"enabled,omitempty"`
10119	Registration    *AppRegistration `json:"registration,omitempty"`
10120	GraphAPIVersion *string          `json:"graphApiVersion,omitempty"`
10121	Login           *LoginScopes     `json:"login,omitempty"`
10122}
10123
10124// FileSystemApplicationLogsConfig application logs to file system configuration.
10125type FileSystemApplicationLogsConfig struct {
10126	// Level - Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'
10127	Level LogLevel `json:"level,omitempty"`
10128}
10129
10130// FileSystemHTTPLogsConfig http logs to file system configuration.
10131type FileSystemHTTPLogsConfig struct {
10132	// RetentionInMb - Maximum size in megabytes that http log files can use.
10133	// When reached old log files will be removed to make space for new ones.
10134	// Value can range between 25 and 100.
10135	RetentionInMb *int32 `json:"retentionInMb,omitempty"`
10136	// RetentionInDays - Retention in days.
10137	// Remove files older than X days.
10138	// 0 or lower means no retention.
10139	RetentionInDays *int32 `json:"retentionInDays,omitempty"`
10140	// Enabled - True if configuration is enabled, false if it is disabled and null if configuration is not set.
10141	Enabled *bool `json:"enabled,omitempty"`
10142}
10143
10144// FileSystemTokenStore ...
10145type FileSystemTokenStore struct {
10146	// FileSystemTokenStoreProperties - FileSystemTokenStore resource specific properties
10147	*FileSystemTokenStoreProperties `json:"properties,omitempty"`
10148	// ID - READ-ONLY; Resource Id.
10149	ID *string `json:"id,omitempty"`
10150	// Name - READ-ONLY; Resource Name.
10151	Name *string `json:"name,omitempty"`
10152	// Kind - Kind of resource.
10153	Kind *string `json:"kind,omitempty"`
10154	// Type - READ-ONLY; Resource type.
10155	Type *string `json:"type,omitempty"`
10156}
10157
10158// MarshalJSON is the custom marshaler for FileSystemTokenStore.
10159func (fsts FileSystemTokenStore) MarshalJSON() ([]byte, error) {
10160	objectMap := make(map[string]interface{})
10161	if fsts.FileSystemTokenStoreProperties != nil {
10162		objectMap["properties"] = fsts.FileSystemTokenStoreProperties
10163	}
10164	if fsts.Kind != nil {
10165		objectMap["kind"] = fsts.Kind
10166	}
10167	return json.Marshal(objectMap)
10168}
10169
10170// UnmarshalJSON is the custom unmarshaler for FileSystemTokenStore struct.
10171func (fsts *FileSystemTokenStore) UnmarshalJSON(body []byte) error {
10172	var m map[string]*json.RawMessage
10173	err := json.Unmarshal(body, &m)
10174	if err != nil {
10175		return err
10176	}
10177	for k, v := range m {
10178		switch k {
10179		case "properties":
10180			if v != nil {
10181				var fileSystemTokenStoreProperties FileSystemTokenStoreProperties
10182				err = json.Unmarshal(*v, &fileSystemTokenStoreProperties)
10183				if err != nil {
10184					return err
10185				}
10186				fsts.FileSystemTokenStoreProperties = &fileSystemTokenStoreProperties
10187			}
10188		case "id":
10189			if v != nil {
10190				var ID string
10191				err = json.Unmarshal(*v, &ID)
10192				if err != nil {
10193					return err
10194				}
10195				fsts.ID = &ID
10196			}
10197		case "name":
10198			if v != nil {
10199				var name string
10200				err = json.Unmarshal(*v, &name)
10201				if err != nil {
10202					return err
10203				}
10204				fsts.Name = &name
10205			}
10206		case "kind":
10207			if v != nil {
10208				var kind string
10209				err = json.Unmarshal(*v, &kind)
10210				if err != nil {
10211					return err
10212				}
10213				fsts.Kind = &kind
10214			}
10215		case "type":
10216			if v != nil {
10217				var typeVar string
10218				err = json.Unmarshal(*v, &typeVar)
10219				if err != nil {
10220					return err
10221				}
10222				fsts.Type = &typeVar
10223			}
10224		}
10225	}
10226
10227	return nil
10228}
10229
10230// FileSystemTokenStoreProperties fileSystemTokenStore resource specific properties
10231type FileSystemTokenStoreProperties struct {
10232	Directory *string `json:"directory,omitempty"`
10233}
10234
10235// ForwardProxy ...
10236type ForwardProxy struct {
10237	// ForwardProxyProperties - ForwardProxy resource specific properties
10238	*ForwardProxyProperties `json:"properties,omitempty"`
10239	// ID - READ-ONLY; Resource Id.
10240	ID *string `json:"id,omitempty"`
10241	// Name - READ-ONLY; Resource Name.
10242	Name *string `json:"name,omitempty"`
10243	// Kind - Kind of resource.
10244	Kind *string `json:"kind,omitempty"`
10245	// Type - READ-ONLY; Resource type.
10246	Type *string `json:"type,omitempty"`
10247}
10248
10249// MarshalJSON is the custom marshaler for ForwardProxy.
10250func (fp ForwardProxy) MarshalJSON() ([]byte, error) {
10251	objectMap := make(map[string]interface{})
10252	if fp.ForwardProxyProperties != nil {
10253		objectMap["properties"] = fp.ForwardProxyProperties
10254	}
10255	if fp.Kind != nil {
10256		objectMap["kind"] = fp.Kind
10257	}
10258	return json.Marshal(objectMap)
10259}
10260
10261// UnmarshalJSON is the custom unmarshaler for ForwardProxy struct.
10262func (fp *ForwardProxy) UnmarshalJSON(body []byte) error {
10263	var m map[string]*json.RawMessage
10264	err := json.Unmarshal(body, &m)
10265	if err != nil {
10266		return err
10267	}
10268	for k, v := range m {
10269		switch k {
10270		case "properties":
10271			if v != nil {
10272				var forwardProxyProperties ForwardProxyProperties
10273				err = json.Unmarshal(*v, &forwardProxyProperties)
10274				if err != nil {
10275					return err
10276				}
10277				fp.ForwardProxyProperties = &forwardProxyProperties
10278			}
10279		case "id":
10280			if v != nil {
10281				var ID string
10282				err = json.Unmarshal(*v, &ID)
10283				if err != nil {
10284					return err
10285				}
10286				fp.ID = &ID
10287			}
10288		case "name":
10289			if v != nil {
10290				var name string
10291				err = json.Unmarshal(*v, &name)
10292				if err != nil {
10293					return err
10294				}
10295				fp.Name = &name
10296			}
10297		case "kind":
10298			if v != nil {
10299				var kind string
10300				err = json.Unmarshal(*v, &kind)
10301				if err != nil {
10302					return err
10303				}
10304				fp.Kind = &kind
10305			}
10306		case "type":
10307			if v != nil {
10308				var typeVar string
10309				err = json.Unmarshal(*v, &typeVar)
10310				if err != nil {
10311					return err
10312				}
10313				fp.Type = &typeVar
10314			}
10315		}
10316	}
10317
10318	return nil
10319}
10320
10321// ForwardProxyProperties forwardProxy resource specific properties
10322type ForwardProxyProperties struct {
10323	// Convention - Possible values include: 'ForwardProxyConventionNoProxy', 'ForwardProxyConventionStandard', 'ForwardProxyConventionCustom'
10324	Convention            ForwardProxyConvention `json:"convention,omitempty"`
10325	CustomHostHeaderName  *string                `json:"customHostHeaderName,omitempty"`
10326	CustomProtoHeaderName *string                `json:"customProtoHeaderName,omitempty"`
10327}
10328
10329// FunctionEnvelope function information.
10330type FunctionEnvelope struct {
10331	autorest.Response `json:"-"`
10332	// FunctionEnvelopeProperties - FunctionEnvelope resource specific properties
10333	*FunctionEnvelopeProperties `json:"properties,omitempty"`
10334	// ID - READ-ONLY; Resource Id.
10335	ID *string `json:"id,omitempty"`
10336	// Name - READ-ONLY; Resource Name.
10337	Name *string `json:"name,omitempty"`
10338	// Kind - Kind of resource.
10339	Kind *string `json:"kind,omitempty"`
10340	// Type - READ-ONLY; Resource type.
10341	Type *string `json:"type,omitempty"`
10342}
10343
10344// MarshalJSON is the custom marshaler for FunctionEnvelope.
10345func (fe FunctionEnvelope) MarshalJSON() ([]byte, error) {
10346	objectMap := make(map[string]interface{})
10347	if fe.FunctionEnvelopeProperties != nil {
10348		objectMap["properties"] = fe.FunctionEnvelopeProperties
10349	}
10350	if fe.Kind != nil {
10351		objectMap["kind"] = fe.Kind
10352	}
10353	return json.Marshal(objectMap)
10354}
10355
10356// UnmarshalJSON is the custom unmarshaler for FunctionEnvelope struct.
10357func (fe *FunctionEnvelope) UnmarshalJSON(body []byte) error {
10358	var m map[string]*json.RawMessage
10359	err := json.Unmarshal(body, &m)
10360	if err != nil {
10361		return err
10362	}
10363	for k, v := range m {
10364		switch k {
10365		case "properties":
10366			if v != nil {
10367				var functionEnvelopeProperties FunctionEnvelopeProperties
10368				err = json.Unmarshal(*v, &functionEnvelopeProperties)
10369				if err != nil {
10370					return err
10371				}
10372				fe.FunctionEnvelopeProperties = &functionEnvelopeProperties
10373			}
10374		case "id":
10375			if v != nil {
10376				var ID string
10377				err = json.Unmarshal(*v, &ID)
10378				if err != nil {
10379					return err
10380				}
10381				fe.ID = &ID
10382			}
10383		case "name":
10384			if v != nil {
10385				var name string
10386				err = json.Unmarshal(*v, &name)
10387				if err != nil {
10388					return err
10389				}
10390				fe.Name = &name
10391			}
10392		case "kind":
10393			if v != nil {
10394				var kind string
10395				err = json.Unmarshal(*v, &kind)
10396				if err != nil {
10397					return err
10398				}
10399				fe.Kind = &kind
10400			}
10401		case "type":
10402			if v != nil {
10403				var typeVar string
10404				err = json.Unmarshal(*v, &typeVar)
10405				if err != nil {
10406					return err
10407				}
10408				fe.Type = &typeVar
10409			}
10410		}
10411	}
10412
10413	return nil
10414}
10415
10416// FunctionEnvelopeCollection collection of Kudu function information elements.
10417type FunctionEnvelopeCollection struct {
10418	autorest.Response `json:"-"`
10419	// Value - Collection of resources.
10420	Value *[]FunctionEnvelope `json:"value,omitempty"`
10421	// NextLink - READ-ONLY; Link to next page of resources.
10422	NextLink *string `json:"nextLink,omitempty"`
10423}
10424
10425// MarshalJSON is the custom marshaler for FunctionEnvelopeCollection.
10426func (fec FunctionEnvelopeCollection) MarshalJSON() ([]byte, error) {
10427	objectMap := make(map[string]interface{})
10428	if fec.Value != nil {
10429		objectMap["value"] = fec.Value
10430	}
10431	return json.Marshal(objectMap)
10432}
10433
10434// FunctionEnvelopeCollectionIterator provides access to a complete listing of FunctionEnvelope values.
10435type FunctionEnvelopeCollectionIterator struct {
10436	i    int
10437	page FunctionEnvelopeCollectionPage
10438}
10439
10440// NextWithContext advances to the next value.  If there was an error making
10441// the request the iterator does not advance and the error is returned.
10442func (iter *FunctionEnvelopeCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10443	if tracing.IsEnabled() {
10444		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionIterator.NextWithContext")
10445		defer func() {
10446			sc := -1
10447			if iter.Response().Response.Response != nil {
10448				sc = iter.Response().Response.Response.StatusCode
10449			}
10450			tracing.EndSpan(ctx, sc, err)
10451		}()
10452	}
10453	iter.i++
10454	if iter.i < len(iter.page.Values()) {
10455		return nil
10456	}
10457	err = iter.page.NextWithContext(ctx)
10458	if err != nil {
10459		iter.i--
10460		return err
10461	}
10462	iter.i = 0
10463	return nil
10464}
10465
10466// Next advances to the next value.  If there was an error making
10467// the request the iterator does not advance and the error is returned.
10468// Deprecated: Use NextWithContext() instead.
10469func (iter *FunctionEnvelopeCollectionIterator) Next() error {
10470	return iter.NextWithContext(context.Background())
10471}
10472
10473// NotDone returns true if the enumeration should be started or is not yet complete.
10474func (iter FunctionEnvelopeCollectionIterator) NotDone() bool {
10475	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10476}
10477
10478// Response returns the raw server response from the last page request.
10479func (iter FunctionEnvelopeCollectionIterator) Response() FunctionEnvelopeCollection {
10480	return iter.page.Response()
10481}
10482
10483// Value returns the current value or a zero-initialized value if the
10484// iterator has advanced beyond the end of the collection.
10485func (iter FunctionEnvelopeCollectionIterator) Value() FunctionEnvelope {
10486	if !iter.page.NotDone() {
10487		return FunctionEnvelope{}
10488	}
10489	return iter.page.Values()[iter.i]
10490}
10491
10492// Creates a new instance of the FunctionEnvelopeCollectionIterator type.
10493func NewFunctionEnvelopeCollectionIterator(page FunctionEnvelopeCollectionPage) FunctionEnvelopeCollectionIterator {
10494	return FunctionEnvelopeCollectionIterator{page: page}
10495}
10496
10497// IsEmpty returns true if the ListResult contains no values.
10498func (fec FunctionEnvelopeCollection) IsEmpty() bool {
10499	return fec.Value == nil || len(*fec.Value) == 0
10500}
10501
10502// hasNextLink returns true if the NextLink is not empty.
10503func (fec FunctionEnvelopeCollection) hasNextLink() bool {
10504	return fec.NextLink != nil && len(*fec.NextLink) != 0
10505}
10506
10507// functionEnvelopeCollectionPreparer prepares a request to retrieve the next set of results.
10508// It returns nil if no more results exist.
10509func (fec FunctionEnvelopeCollection) functionEnvelopeCollectionPreparer(ctx context.Context) (*http.Request, error) {
10510	if !fec.hasNextLink() {
10511		return nil, nil
10512	}
10513	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10514		autorest.AsJSON(),
10515		autorest.AsGet(),
10516		autorest.WithBaseURL(to.String(fec.NextLink)))
10517}
10518
10519// FunctionEnvelopeCollectionPage contains a page of FunctionEnvelope values.
10520type FunctionEnvelopeCollectionPage struct {
10521	fn  func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)
10522	fec FunctionEnvelopeCollection
10523}
10524
10525// NextWithContext advances to the next page of values.  If there was an error making
10526// the request the page does not advance and the error is returned.
10527func (page *FunctionEnvelopeCollectionPage) NextWithContext(ctx context.Context) (err error) {
10528	if tracing.IsEnabled() {
10529		ctx = tracing.StartSpan(ctx, fqdn+"/FunctionEnvelopeCollectionPage.NextWithContext")
10530		defer func() {
10531			sc := -1
10532			if page.Response().Response.Response != nil {
10533				sc = page.Response().Response.Response.StatusCode
10534			}
10535			tracing.EndSpan(ctx, sc, err)
10536		}()
10537	}
10538	for {
10539		next, err := page.fn(ctx, page.fec)
10540		if err != nil {
10541			return err
10542		}
10543		page.fec = next
10544		if !next.hasNextLink() || !next.IsEmpty() {
10545			break
10546		}
10547	}
10548	return nil
10549}
10550
10551// Next advances to the next page of values.  If there was an error making
10552// the request the page does not advance and the error is returned.
10553// Deprecated: Use NextWithContext() instead.
10554func (page *FunctionEnvelopeCollectionPage) Next() error {
10555	return page.NextWithContext(context.Background())
10556}
10557
10558// NotDone returns true if the page enumeration should be started or is not yet complete.
10559func (page FunctionEnvelopeCollectionPage) NotDone() bool {
10560	return !page.fec.IsEmpty()
10561}
10562
10563// Response returns the raw server response from the last page request.
10564func (page FunctionEnvelopeCollectionPage) Response() FunctionEnvelopeCollection {
10565	return page.fec
10566}
10567
10568// Values returns the slice of values for the current page or nil if there are no values.
10569func (page FunctionEnvelopeCollectionPage) Values() []FunctionEnvelope {
10570	if page.fec.IsEmpty() {
10571		return nil
10572	}
10573	return *page.fec.Value
10574}
10575
10576// Creates a new instance of the FunctionEnvelopeCollectionPage type.
10577func NewFunctionEnvelopeCollectionPage(cur FunctionEnvelopeCollection, getNextPage func(context.Context, FunctionEnvelopeCollection) (FunctionEnvelopeCollection, error)) FunctionEnvelopeCollectionPage {
10578	return FunctionEnvelopeCollectionPage{
10579		fn:  getNextPage,
10580		fec: cur,
10581	}
10582}
10583
10584// FunctionEnvelopeProperties functionEnvelope resource specific properties
10585type FunctionEnvelopeProperties struct {
10586	// FunctionAppID - Function App ID.
10587	FunctionAppID *string `json:"function_app_id,omitempty"`
10588	// ScriptRootPathHref - Script root path URI.
10589	ScriptRootPathHref *string `json:"script_root_path_href,omitempty"`
10590	// ScriptHref - Script URI.
10591	ScriptHref *string `json:"script_href,omitempty"`
10592	// ConfigHref - Config URI.
10593	ConfigHref *string `json:"config_href,omitempty"`
10594	// TestDataHref - Test data URI.
10595	TestDataHref *string `json:"test_data_href,omitempty"`
10596	// SecretsFileHref - Secrets file URI.
10597	SecretsFileHref *string `json:"secrets_file_href,omitempty"`
10598	// Href - Function URI.
10599	Href *string `json:"href,omitempty"`
10600	// Config - Config information.
10601	Config interface{} `json:"config,omitempty"`
10602	// Files - File list.
10603	Files map[string]*string `json:"files"`
10604	// TestData - Test data used when testing via the Azure Portal.
10605	TestData *string `json:"test_data,omitempty"`
10606	// InvokeURLTemplate - The invocation URL
10607	InvokeURLTemplate *string `json:"invoke_url_template,omitempty"`
10608	// Language - The function language
10609	Language *string `json:"language,omitempty"`
10610	// IsDisabled - Gets or sets a value indicating whether the function is disabled
10611	IsDisabled *bool `json:"isDisabled,omitempty"`
10612}
10613
10614// MarshalJSON is the custom marshaler for FunctionEnvelopeProperties.
10615func (fe FunctionEnvelopeProperties) MarshalJSON() ([]byte, error) {
10616	objectMap := make(map[string]interface{})
10617	if fe.FunctionAppID != nil {
10618		objectMap["function_app_id"] = fe.FunctionAppID
10619	}
10620	if fe.ScriptRootPathHref != nil {
10621		objectMap["script_root_path_href"] = fe.ScriptRootPathHref
10622	}
10623	if fe.ScriptHref != nil {
10624		objectMap["script_href"] = fe.ScriptHref
10625	}
10626	if fe.ConfigHref != nil {
10627		objectMap["config_href"] = fe.ConfigHref
10628	}
10629	if fe.TestDataHref != nil {
10630		objectMap["test_data_href"] = fe.TestDataHref
10631	}
10632	if fe.SecretsFileHref != nil {
10633		objectMap["secrets_file_href"] = fe.SecretsFileHref
10634	}
10635	if fe.Href != nil {
10636		objectMap["href"] = fe.Href
10637	}
10638	if fe.Config != nil {
10639		objectMap["config"] = fe.Config
10640	}
10641	if fe.Files != nil {
10642		objectMap["files"] = fe.Files
10643	}
10644	if fe.TestData != nil {
10645		objectMap["test_data"] = fe.TestData
10646	}
10647	if fe.InvokeURLTemplate != nil {
10648		objectMap["invoke_url_template"] = fe.InvokeURLTemplate
10649	}
10650	if fe.Language != nil {
10651		objectMap["language"] = fe.Language
10652	}
10653	if fe.IsDisabled != nil {
10654		objectMap["isDisabled"] = fe.IsDisabled
10655	}
10656	return json.Marshal(objectMap)
10657}
10658
10659// FunctionSecrets function secrets.
10660type FunctionSecrets struct {
10661	autorest.Response `json:"-"`
10662	// Key - Secret key.
10663	Key *string `json:"key,omitempty"`
10664	// TriggerURL - Trigger URL.
10665	TriggerURL *string `json:"trigger_url,omitempty"`
10666}
10667
10668// GeoRegion geographical region.
10669type GeoRegion struct {
10670	// GeoRegionProperties - GeoRegion resource specific properties
10671	*GeoRegionProperties `json:"properties,omitempty"`
10672	// ID - READ-ONLY; Resource Id.
10673	ID *string `json:"id,omitempty"`
10674	// Name - READ-ONLY; Resource Name.
10675	Name *string `json:"name,omitempty"`
10676	// Kind - Kind of resource.
10677	Kind *string `json:"kind,omitempty"`
10678	// Type - READ-ONLY; Resource type.
10679	Type *string `json:"type,omitempty"`
10680}
10681
10682// MarshalJSON is the custom marshaler for GeoRegion.
10683func (gr GeoRegion) MarshalJSON() ([]byte, error) {
10684	objectMap := make(map[string]interface{})
10685	if gr.GeoRegionProperties != nil {
10686		objectMap["properties"] = gr.GeoRegionProperties
10687	}
10688	if gr.Kind != nil {
10689		objectMap["kind"] = gr.Kind
10690	}
10691	return json.Marshal(objectMap)
10692}
10693
10694// UnmarshalJSON is the custom unmarshaler for GeoRegion struct.
10695func (gr *GeoRegion) UnmarshalJSON(body []byte) error {
10696	var m map[string]*json.RawMessage
10697	err := json.Unmarshal(body, &m)
10698	if err != nil {
10699		return err
10700	}
10701	for k, v := range m {
10702		switch k {
10703		case "properties":
10704			if v != nil {
10705				var geoRegionProperties GeoRegionProperties
10706				err = json.Unmarshal(*v, &geoRegionProperties)
10707				if err != nil {
10708					return err
10709				}
10710				gr.GeoRegionProperties = &geoRegionProperties
10711			}
10712		case "id":
10713			if v != nil {
10714				var ID string
10715				err = json.Unmarshal(*v, &ID)
10716				if err != nil {
10717					return err
10718				}
10719				gr.ID = &ID
10720			}
10721		case "name":
10722			if v != nil {
10723				var name string
10724				err = json.Unmarshal(*v, &name)
10725				if err != nil {
10726					return err
10727				}
10728				gr.Name = &name
10729			}
10730		case "kind":
10731			if v != nil {
10732				var kind string
10733				err = json.Unmarshal(*v, &kind)
10734				if err != nil {
10735					return err
10736				}
10737				gr.Kind = &kind
10738			}
10739		case "type":
10740			if v != nil {
10741				var typeVar string
10742				err = json.Unmarshal(*v, &typeVar)
10743				if err != nil {
10744					return err
10745				}
10746				gr.Type = &typeVar
10747			}
10748		}
10749	}
10750
10751	return nil
10752}
10753
10754// GeoRegionCollection collection of geographical regions.
10755type GeoRegionCollection struct {
10756	autorest.Response `json:"-"`
10757	// Value - Collection of resources.
10758	Value *[]GeoRegion `json:"value,omitempty"`
10759	// NextLink - READ-ONLY; Link to next page of resources.
10760	NextLink *string `json:"nextLink,omitempty"`
10761}
10762
10763// MarshalJSON is the custom marshaler for GeoRegionCollection.
10764func (grc GeoRegionCollection) MarshalJSON() ([]byte, error) {
10765	objectMap := make(map[string]interface{})
10766	if grc.Value != nil {
10767		objectMap["value"] = grc.Value
10768	}
10769	return json.Marshal(objectMap)
10770}
10771
10772// GeoRegionCollectionIterator provides access to a complete listing of GeoRegion values.
10773type GeoRegionCollectionIterator struct {
10774	i    int
10775	page GeoRegionCollectionPage
10776}
10777
10778// NextWithContext advances to the next value.  If there was an error making
10779// the request the iterator does not advance and the error is returned.
10780func (iter *GeoRegionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
10781	if tracing.IsEnabled() {
10782		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionIterator.NextWithContext")
10783		defer func() {
10784			sc := -1
10785			if iter.Response().Response.Response != nil {
10786				sc = iter.Response().Response.Response.StatusCode
10787			}
10788			tracing.EndSpan(ctx, sc, err)
10789		}()
10790	}
10791	iter.i++
10792	if iter.i < len(iter.page.Values()) {
10793		return nil
10794	}
10795	err = iter.page.NextWithContext(ctx)
10796	if err != nil {
10797		iter.i--
10798		return err
10799	}
10800	iter.i = 0
10801	return nil
10802}
10803
10804// Next advances to the next value.  If there was an error making
10805// the request the iterator does not advance and the error is returned.
10806// Deprecated: Use NextWithContext() instead.
10807func (iter *GeoRegionCollectionIterator) Next() error {
10808	return iter.NextWithContext(context.Background())
10809}
10810
10811// NotDone returns true if the enumeration should be started or is not yet complete.
10812func (iter GeoRegionCollectionIterator) NotDone() bool {
10813	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10814}
10815
10816// Response returns the raw server response from the last page request.
10817func (iter GeoRegionCollectionIterator) Response() GeoRegionCollection {
10818	return iter.page.Response()
10819}
10820
10821// Value returns the current value or a zero-initialized value if the
10822// iterator has advanced beyond the end of the collection.
10823func (iter GeoRegionCollectionIterator) Value() GeoRegion {
10824	if !iter.page.NotDone() {
10825		return GeoRegion{}
10826	}
10827	return iter.page.Values()[iter.i]
10828}
10829
10830// Creates a new instance of the GeoRegionCollectionIterator type.
10831func NewGeoRegionCollectionIterator(page GeoRegionCollectionPage) GeoRegionCollectionIterator {
10832	return GeoRegionCollectionIterator{page: page}
10833}
10834
10835// IsEmpty returns true if the ListResult contains no values.
10836func (grc GeoRegionCollection) IsEmpty() bool {
10837	return grc.Value == nil || len(*grc.Value) == 0
10838}
10839
10840// hasNextLink returns true if the NextLink is not empty.
10841func (grc GeoRegionCollection) hasNextLink() bool {
10842	return grc.NextLink != nil && len(*grc.NextLink) != 0
10843}
10844
10845// geoRegionCollectionPreparer prepares a request to retrieve the next set of results.
10846// It returns nil if no more results exist.
10847func (grc GeoRegionCollection) geoRegionCollectionPreparer(ctx context.Context) (*http.Request, error) {
10848	if !grc.hasNextLink() {
10849		return nil, nil
10850	}
10851	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10852		autorest.AsJSON(),
10853		autorest.AsGet(),
10854		autorest.WithBaseURL(to.String(grc.NextLink)))
10855}
10856
10857// GeoRegionCollectionPage contains a page of GeoRegion values.
10858type GeoRegionCollectionPage struct {
10859	fn  func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)
10860	grc GeoRegionCollection
10861}
10862
10863// NextWithContext advances to the next page of values.  If there was an error making
10864// the request the page does not advance and the error is returned.
10865func (page *GeoRegionCollectionPage) NextWithContext(ctx context.Context) (err error) {
10866	if tracing.IsEnabled() {
10867		ctx = tracing.StartSpan(ctx, fqdn+"/GeoRegionCollectionPage.NextWithContext")
10868		defer func() {
10869			sc := -1
10870			if page.Response().Response.Response != nil {
10871				sc = page.Response().Response.Response.StatusCode
10872			}
10873			tracing.EndSpan(ctx, sc, err)
10874		}()
10875	}
10876	for {
10877		next, err := page.fn(ctx, page.grc)
10878		if err != nil {
10879			return err
10880		}
10881		page.grc = next
10882		if !next.hasNextLink() || !next.IsEmpty() {
10883			break
10884		}
10885	}
10886	return nil
10887}
10888
10889// Next advances to the next page of values.  If there was an error making
10890// the request the page does not advance and the error is returned.
10891// Deprecated: Use NextWithContext() instead.
10892func (page *GeoRegionCollectionPage) Next() error {
10893	return page.NextWithContext(context.Background())
10894}
10895
10896// NotDone returns true if the page enumeration should be started or is not yet complete.
10897func (page GeoRegionCollectionPage) NotDone() bool {
10898	return !page.grc.IsEmpty()
10899}
10900
10901// Response returns the raw server response from the last page request.
10902func (page GeoRegionCollectionPage) Response() GeoRegionCollection {
10903	return page.grc
10904}
10905
10906// Values returns the slice of values for the current page or nil if there are no values.
10907func (page GeoRegionCollectionPage) Values() []GeoRegion {
10908	if page.grc.IsEmpty() {
10909		return nil
10910	}
10911	return *page.grc.Value
10912}
10913
10914// Creates a new instance of the GeoRegionCollectionPage type.
10915func NewGeoRegionCollectionPage(cur GeoRegionCollection, getNextPage func(context.Context, GeoRegionCollection) (GeoRegionCollection, error)) GeoRegionCollectionPage {
10916	return GeoRegionCollectionPage{
10917		fn:  getNextPage,
10918		grc: cur,
10919	}
10920}
10921
10922// GeoRegionProperties geoRegion resource specific properties
10923type GeoRegionProperties struct {
10924	// Description - READ-ONLY; Region description.
10925	Description *string `json:"description,omitempty"`
10926	// DisplayName - READ-ONLY; Display name for region.
10927	DisplayName *string `json:"displayName,omitempty"`
10928	// OrgDomain - READ-ONLY; Display name for region.
10929	OrgDomain *string `json:"orgDomain,omitempty"`
10930}
10931
10932// GitHub ...
10933type GitHub struct {
10934	// GitHubProperties - GitHub resource specific properties
10935	*GitHubProperties `json:"properties,omitempty"`
10936	// ID - READ-ONLY; Resource Id.
10937	ID *string `json:"id,omitempty"`
10938	// Name - READ-ONLY; Resource Name.
10939	Name *string `json:"name,omitempty"`
10940	// Kind - Kind of resource.
10941	Kind *string `json:"kind,omitempty"`
10942	// Type - READ-ONLY; Resource type.
10943	Type *string `json:"type,omitempty"`
10944}
10945
10946// MarshalJSON is the custom marshaler for GitHub.
10947func (gh GitHub) MarshalJSON() ([]byte, error) {
10948	objectMap := make(map[string]interface{})
10949	if gh.GitHubProperties != nil {
10950		objectMap["properties"] = gh.GitHubProperties
10951	}
10952	if gh.Kind != nil {
10953		objectMap["kind"] = gh.Kind
10954	}
10955	return json.Marshal(objectMap)
10956}
10957
10958// UnmarshalJSON is the custom unmarshaler for GitHub struct.
10959func (gh *GitHub) UnmarshalJSON(body []byte) error {
10960	var m map[string]*json.RawMessage
10961	err := json.Unmarshal(body, &m)
10962	if err != nil {
10963		return err
10964	}
10965	for k, v := range m {
10966		switch k {
10967		case "properties":
10968			if v != nil {
10969				var gitHubProperties GitHubProperties
10970				err = json.Unmarshal(*v, &gitHubProperties)
10971				if err != nil {
10972					return err
10973				}
10974				gh.GitHubProperties = &gitHubProperties
10975			}
10976		case "id":
10977			if v != nil {
10978				var ID string
10979				err = json.Unmarshal(*v, &ID)
10980				if err != nil {
10981					return err
10982				}
10983				gh.ID = &ID
10984			}
10985		case "name":
10986			if v != nil {
10987				var name string
10988				err = json.Unmarshal(*v, &name)
10989				if err != nil {
10990					return err
10991				}
10992				gh.Name = &name
10993			}
10994		case "kind":
10995			if v != nil {
10996				var kind string
10997				err = json.Unmarshal(*v, &kind)
10998				if err != nil {
10999					return err
11000				}
11001				gh.Kind = &kind
11002			}
11003		case "type":
11004			if v != nil {
11005				var typeVar string
11006				err = json.Unmarshal(*v, &typeVar)
11007				if err != nil {
11008					return err
11009				}
11010				gh.Type = &typeVar
11011			}
11012		}
11013	}
11014
11015	return nil
11016}
11017
11018// GitHubProperties gitHub resource specific properties
11019type GitHubProperties struct {
11020	Enabled      *bool               `json:"enabled,omitempty"`
11021	Registration *ClientRegistration `json:"registration,omitempty"`
11022	Login        *LoginScopes        `json:"login,omitempty"`
11023}
11024
11025// GlobalCsmSkuDescription a Global SKU Description.
11026type GlobalCsmSkuDescription struct {
11027	// Name - Name of the resource SKU.
11028	Name *string `json:"name,omitempty"`
11029	// Tier - Service Tier of the resource SKU.
11030	Tier *string `json:"tier,omitempty"`
11031	// Size - Size specifier of the resource SKU.
11032	Size *string `json:"size,omitempty"`
11033	// Family - Family code of the resource SKU.
11034	Family *string `json:"family,omitempty"`
11035	// Capacity - Min, max, and default scale values of the SKU.
11036	Capacity *SkuCapacity `json:"capacity,omitempty"`
11037	// Locations - Locations of the SKU.
11038	Locations *[]string `json:"locations,omitempty"`
11039	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
11040	Capabilities *[]Capability `json:"capabilities,omitempty"`
11041}
11042
11043// GlobalValidation ...
11044type GlobalValidation struct {
11045	// GlobalValidationProperties - GlobalValidation resource specific properties
11046	*GlobalValidationProperties `json:"properties,omitempty"`
11047	// ID - READ-ONLY; Resource Id.
11048	ID *string `json:"id,omitempty"`
11049	// Name - READ-ONLY; Resource Name.
11050	Name *string `json:"name,omitempty"`
11051	// Kind - Kind of resource.
11052	Kind *string `json:"kind,omitempty"`
11053	// Type - READ-ONLY; Resource type.
11054	Type *string `json:"type,omitempty"`
11055}
11056
11057// MarshalJSON is the custom marshaler for GlobalValidation.
11058func (gv GlobalValidation) MarshalJSON() ([]byte, error) {
11059	objectMap := make(map[string]interface{})
11060	if gv.GlobalValidationProperties != nil {
11061		objectMap["properties"] = gv.GlobalValidationProperties
11062	}
11063	if gv.Kind != nil {
11064		objectMap["kind"] = gv.Kind
11065	}
11066	return json.Marshal(objectMap)
11067}
11068
11069// UnmarshalJSON is the custom unmarshaler for GlobalValidation struct.
11070func (gv *GlobalValidation) UnmarshalJSON(body []byte) error {
11071	var m map[string]*json.RawMessage
11072	err := json.Unmarshal(body, &m)
11073	if err != nil {
11074		return err
11075	}
11076	for k, v := range m {
11077		switch k {
11078		case "properties":
11079			if v != nil {
11080				var globalValidationProperties GlobalValidationProperties
11081				err = json.Unmarshal(*v, &globalValidationProperties)
11082				if err != nil {
11083					return err
11084				}
11085				gv.GlobalValidationProperties = &globalValidationProperties
11086			}
11087		case "id":
11088			if v != nil {
11089				var ID string
11090				err = json.Unmarshal(*v, &ID)
11091				if err != nil {
11092					return err
11093				}
11094				gv.ID = &ID
11095			}
11096		case "name":
11097			if v != nil {
11098				var name string
11099				err = json.Unmarshal(*v, &name)
11100				if err != nil {
11101					return err
11102				}
11103				gv.Name = &name
11104			}
11105		case "kind":
11106			if v != nil {
11107				var kind string
11108				err = json.Unmarshal(*v, &kind)
11109				if err != nil {
11110					return err
11111				}
11112				gv.Kind = &kind
11113			}
11114		case "type":
11115			if v != nil {
11116				var typeVar string
11117				err = json.Unmarshal(*v, &typeVar)
11118				if err != nil {
11119					return err
11120				}
11121				gv.Type = &typeVar
11122			}
11123		}
11124	}
11125
11126	return nil
11127}
11128
11129// GlobalValidationProperties globalValidation resource specific properties
11130type GlobalValidationProperties struct {
11131	RequireAuthentication *bool `json:"requireAuthentication,omitempty"`
11132	// UnauthenticatedClientAction - Possible values include: 'UnauthenticatedClientActionV2RedirectToLoginPage', 'UnauthenticatedClientActionV2AllowAnonymous', 'UnauthenticatedClientActionV2Return401', 'UnauthenticatedClientActionV2Return403'
11133	UnauthenticatedClientAction UnauthenticatedClientActionV2 `json:"unauthenticatedClientAction,omitempty"`
11134	RedirectToProvider          *string                       `json:"redirectToProvider,omitempty"`
11135	ExcludedPaths               *[]string                     `json:"excludedPaths,omitempty"`
11136}
11137
11138// Google ...
11139type Google struct {
11140	// GoogleProperties - Google resource specific properties
11141	*GoogleProperties `json:"properties,omitempty"`
11142	// ID - READ-ONLY; Resource Id.
11143	ID *string `json:"id,omitempty"`
11144	// Name - READ-ONLY; Resource Name.
11145	Name *string `json:"name,omitempty"`
11146	// Kind - Kind of resource.
11147	Kind *string `json:"kind,omitempty"`
11148	// Type - READ-ONLY; Resource type.
11149	Type *string `json:"type,omitempty"`
11150}
11151
11152// MarshalJSON is the custom marshaler for Google.
11153func (g Google) MarshalJSON() ([]byte, error) {
11154	objectMap := make(map[string]interface{})
11155	if g.GoogleProperties != nil {
11156		objectMap["properties"] = g.GoogleProperties
11157	}
11158	if g.Kind != nil {
11159		objectMap["kind"] = g.Kind
11160	}
11161	return json.Marshal(objectMap)
11162}
11163
11164// UnmarshalJSON is the custom unmarshaler for Google struct.
11165func (g *Google) UnmarshalJSON(body []byte) error {
11166	var m map[string]*json.RawMessage
11167	err := json.Unmarshal(body, &m)
11168	if err != nil {
11169		return err
11170	}
11171	for k, v := range m {
11172		switch k {
11173		case "properties":
11174			if v != nil {
11175				var googleProperties GoogleProperties
11176				err = json.Unmarshal(*v, &googleProperties)
11177				if err != nil {
11178					return err
11179				}
11180				g.GoogleProperties = &googleProperties
11181			}
11182		case "id":
11183			if v != nil {
11184				var ID string
11185				err = json.Unmarshal(*v, &ID)
11186				if err != nil {
11187					return err
11188				}
11189				g.ID = &ID
11190			}
11191		case "name":
11192			if v != nil {
11193				var name string
11194				err = json.Unmarshal(*v, &name)
11195				if err != nil {
11196					return err
11197				}
11198				g.Name = &name
11199			}
11200		case "kind":
11201			if v != nil {
11202				var kind string
11203				err = json.Unmarshal(*v, &kind)
11204				if err != nil {
11205					return err
11206				}
11207				g.Kind = &kind
11208			}
11209		case "type":
11210			if v != nil {
11211				var typeVar string
11212				err = json.Unmarshal(*v, &typeVar)
11213				if err != nil {
11214					return err
11215				}
11216				g.Type = &typeVar
11217			}
11218		}
11219	}
11220
11221	return nil
11222}
11223
11224// GoogleProperties google resource specific properties
11225type GoogleProperties struct {
11226	Enabled      *bool                       `json:"enabled,omitempty"`
11227	Registration *ClientRegistration         `json:"registration,omitempty"`
11228	Login        *LoginScopes                `json:"login,omitempty"`
11229	Validation   *AllowedAudiencesValidation `json:"validation,omitempty"`
11230}
11231
11232// HandlerMapping the IIS handler mappings used to define which handler processes HTTP requests with
11233// certain extension.
11234// For example, it is used to configure php-cgi.exe process to handle all HTTP requests with *.php
11235// extension.
11236type HandlerMapping struct {
11237	// Extension - Requests with this extension will be handled using the specified FastCGI application.
11238	Extension *string `json:"extension,omitempty"`
11239	// ScriptProcessor - The absolute path to the FastCGI application.
11240	ScriptProcessor *string `json:"scriptProcessor,omitempty"`
11241	// Arguments - Command-line arguments to be passed to the script processor.
11242	Arguments *string `json:"arguments,omitempty"`
11243}
11244
11245// HostingEnvironmentDeploymentInfo information needed to create resources on an App Service Environment.
11246type HostingEnvironmentDeploymentInfo struct {
11247	// Name - Name of the App Service Environment.
11248	Name *string `json:"name,omitempty"`
11249	// Location - Location of the App Service Environment.
11250	Location *string `json:"location,omitempty"`
11251}
11252
11253// HostingEnvironmentDiagnostics diagnostics for an App Service Environment.
11254type HostingEnvironmentDiagnostics struct {
11255	autorest.Response `json:"-"`
11256	// Name - Name/identifier of the diagnostics.
11257	Name *string `json:"name,omitempty"`
11258	// DiagnosticsOutput - Diagnostics output.
11259	DiagnosticsOutput *string `json:"diagnosticsOutput,omitempty"`
11260}
11261
11262// HostingEnvironmentProfile specification for an App Service Environment to use for this resource.
11263type HostingEnvironmentProfile struct {
11264	// ID - Resource ID of the App Service Environment.
11265	ID *string `json:"id,omitempty"`
11266	// Name - READ-ONLY; Name of the App Service Environment.
11267	Name *string `json:"name,omitempty"`
11268	// Type - READ-ONLY; Resource type of the App Service Environment.
11269	Type *string `json:"type,omitempty"`
11270}
11271
11272// MarshalJSON is the custom marshaler for HostingEnvironmentProfile.
11273func (hep HostingEnvironmentProfile) MarshalJSON() ([]byte, error) {
11274	objectMap := make(map[string]interface{})
11275	if hep.ID != nil {
11276		objectMap["id"] = hep.ID
11277	}
11278	return json.Marshal(objectMap)
11279}
11280
11281// HostKeys functions host level keys.
11282type HostKeys struct {
11283	autorest.Response `json:"-"`
11284	// MasterKey - Secret key.
11285	MasterKey *string `json:"masterKey,omitempty"`
11286	// FunctionKeys - Host level function keys.
11287	FunctionKeys map[string]*string `json:"functionKeys"`
11288	// SystemKeys - System keys.
11289	SystemKeys map[string]*string `json:"systemKeys"`
11290}
11291
11292// MarshalJSON is the custom marshaler for HostKeys.
11293func (hk HostKeys) MarshalJSON() ([]byte, error) {
11294	objectMap := make(map[string]interface{})
11295	if hk.MasterKey != nil {
11296		objectMap["masterKey"] = hk.MasterKey
11297	}
11298	if hk.FunctionKeys != nil {
11299		objectMap["functionKeys"] = hk.FunctionKeys
11300	}
11301	if hk.SystemKeys != nil {
11302		objectMap["systemKeys"] = hk.SystemKeys
11303	}
11304	return json.Marshal(objectMap)
11305}
11306
11307// HostName details of a hostname derived from a domain.
11308type HostName struct {
11309	// Name - Name of the hostname.
11310	Name *string `json:"name,omitempty"`
11311	// 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.
11312	SiteNames *[]string `json:"siteNames,omitempty"`
11313	// 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.
11314	AzureResourceName *string `json:"azureResourceName,omitempty"`
11315	// AzureResourceType - Type of the Azure resource the hostname is assigned to. Possible values include: 'Website', 'TrafficManager'
11316	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
11317	// CustomHostNameDNSRecordType - Type of the DNS record. Possible values include: 'CName', 'A'
11318	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
11319	// HostNameType - Type of the hostname. Possible values include: 'Verified', 'Managed'
11320	HostNameType HostNameType `json:"hostNameType,omitempty"`
11321}
11322
11323// HostNameBinding a hostname binding object.
11324type HostNameBinding struct {
11325	autorest.Response `json:"-"`
11326	// HostNameBindingProperties - HostNameBinding resource specific properties
11327	*HostNameBindingProperties `json:"properties,omitempty"`
11328	// ID - READ-ONLY; Resource Id.
11329	ID *string `json:"id,omitempty"`
11330	// Name - READ-ONLY; Resource Name.
11331	Name *string `json:"name,omitempty"`
11332	// Kind - Kind of resource.
11333	Kind *string `json:"kind,omitempty"`
11334	// Type - READ-ONLY; Resource type.
11335	Type *string `json:"type,omitempty"`
11336}
11337
11338// MarshalJSON is the custom marshaler for HostNameBinding.
11339func (hnb HostNameBinding) MarshalJSON() ([]byte, error) {
11340	objectMap := make(map[string]interface{})
11341	if hnb.HostNameBindingProperties != nil {
11342		objectMap["properties"] = hnb.HostNameBindingProperties
11343	}
11344	if hnb.Kind != nil {
11345		objectMap["kind"] = hnb.Kind
11346	}
11347	return json.Marshal(objectMap)
11348}
11349
11350// UnmarshalJSON is the custom unmarshaler for HostNameBinding struct.
11351func (hnb *HostNameBinding) UnmarshalJSON(body []byte) error {
11352	var m map[string]*json.RawMessage
11353	err := json.Unmarshal(body, &m)
11354	if err != nil {
11355		return err
11356	}
11357	for k, v := range m {
11358		switch k {
11359		case "properties":
11360			if v != nil {
11361				var hostNameBindingProperties HostNameBindingProperties
11362				err = json.Unmarshal(*v, &hostNameBindingProperties)
11363				if err != nil {
11364					return err
11365				}
11366				hnb.HostNameBindingProperties = &hostNameBindingProperties
11367			}
11368		case "id":
11369			if v != nil {
11370				var ID string
11371				err = json.Unmarshal(*v, &ID)
11372				if err != nil {
11373					return err
11374				}
11375				hnb.ID = &ID
11376			}
11377		case "name":
11378			if v != nil {
11379				var name string
11380				err = json.Unmarshal(*v, &name)
11381				if err != nil {
11382					return err
11383				}
11384				hnb.Name = &name
11385			}
11386		case "kind":
11387			if v != nil {
11388				var kind string
11389				err = json.Unmarshal(*v, &kind)
11390				if err != nil {
11391					return err
11392				}
11393				hnb.Kind = &kind
11394			}
11395		case "type":
11396			if v != nil {
11397				var typeVar string
11398				err = json.Unmarshal(*v, &typeVar)
11399				if err != nil {
11400					return err
11401				}
11402				hnb.Type = &typeVar
11403			}
11404		}
11405	}
11406
11407	return nil
11408}
11409
11410// HostNameBindingCollection collection of hostname bindings.
11411type HostNameBindingCollection struct {
11412	autorest.Response `json:"-"`
11413	// Value - Collection of resources.
11414	Value *[]HostNameBinding `json:"value,omitempty"`
11415	// NextLink - READ-ONLY; Link to next page of resources.
11416	NextLink *string `json:"nextLink,omitempty"`
11417}
11418
11419// MarshalJSON is the custom marshaler for HostNameBindingCollection.
11420func (hnbc HostNameBindingCollection) MarshalJSON() ([]byte, error) {
11421	objectMap := make(map[string]interface{})
11422	if hnbc.Value != nil {
11423		objectMap["value"] = hnbc.Value
11424	}
11425	return json.Marshal(objectMap)
11426}
11427
11428// HostNameBindingCollectionIterator provides access to a complete listing of HostNameBinding values.
11429type HostNameBindingCollectionIterator struct {
11430	i    int
11431	page HostNameBindingCollectionPage
11432}
11433
11434// NextWithContext advances to the next value.  If there was an error making
11435// the request the iterator does not advance and the error is returned.
11436func (iter *HostNameBindingCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11437	if tracing.IsEnabled() {
11438		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionIterator.NextWithContext")
11439		defer func() {
11440			sc := -1
11441			if iter.Response().Response.Response != nil {
11442				sc = iter.Response().Response.Response.StatusCode
11443			}
11444			tracing.EndSpan(ctx, sc, err)
11445		}()
11446	}
11447	iter.i++
11448	if iter.i < len(iter.page.Values()) {
11449		return nil
11450	}
11451	err = iter.page.NextWithContext(ctx)
11452	if err != nil {
11453		iter.i--
11454		return err
11455	}
11456	iter.i = 0
11457	return nil
11458}
11459
11460// Next advances to the next value.  If there was an error making
11461// the request the iterator does not advance and the error is returned.
11462// Deprecated: Use NextWithContext() instead.
11463func (iter *HostNameBindingCollectionIterator) Next() error {
11464	return iter.NextWithContext(context.Background())
11465}
11466
11467// NotDone returns true if the enumeration should be started or is not yet complete.
11468func (iter HostNameBindingCollectionIterator) NotDone() bool {
11469	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11470}
11471
11472// Response returns the raw server response from the last page request.
11473func (iter HostNameBindingCollectionIterator) Response() HostNameBindingCollection {
11474	return iter.page.Response()
11475}
11476
11477// Value returns the current value or a zero-initialized value if the
11478// iterator has advanced beyond the end of the collection.
11479func (iter HostNameBindingCollectionIterator) Value() HostNameBinding {
11480	if !iter.page.NotDone() {
11481		return HostNameBinding{}
11482	}
11483	return iter.page.Values()[iter.i]
11484}
11485
11486// Creates a new instance of the HostNameBindingCollectionIterator type.
11487func NewHostNameBindingCollectionIterator(page HostNameBindingCollectionPage) HostNameBindingCollectionIterator {
11488	return HostNameBindingCollectionIterator{page: page}
11489}
11490
11491// IsEmpty returns true if the ListResult contains no values.
11492func (hnbc HostNameBindingCollection) IsEmpty() bool {
11493	return hnbc.Value == nil || len(*hnbc.Value) == 0
11494}
11495
11496// hasNextLink returns true if the NextLink is not empty.
11497func (hnbc HostNameBindingCollection) hasNextLink() bool {
11498	return hnbc.NextLink != nil && len(*hnbc.NextLink) != 0
11499}
11500
11501// hostNameBindingCollectionPreparer prepares a request to retrieve the next set of results.
11502// It returns nil if no more results exist.
11503func (hnbc HostNameBindingCollection) hostNameBindingCollectionPreparer(ctx context.Context) (*http.Request, error) {
11504	if !hnbc.hasNextLink() {
11505		return nil, nil
11506	}
11507	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11508		autorest.AsJSON(),
11509		autorest.AsGet(),
11510		autorest.WithBaseURL(to.String(hnbc.NextLink)))
11511}
11512
11513// HostNameBindingCollectionPage contains a page of HostNameBinding values.
11514type HostNameBindingCollectionPage struct {
11515	fn   func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)
11516	hnbc HostNameBindingCollection
11517}
11518
11519// NextWithContext advances to the next page of values.  If there was an error making
11520// the request the page does not advance and the error is returned.
11521func (page *HostNameBindingCollectionPage) NextWithContext(ctx context.Context) (err error) {
11522	if tracing.IsEnabled() {
11523		ctx = tracing.StartSpan(ctx, fqdn+"/HostNameBindingCollectionPage.NextWithContext")
11524		defer func() {
11525			sc := -1
11526			if page.Response().Response.Response != nil {
11527				sc = page.Response().Response.Response.StatusCode
11528			}
11529			tracing.EndSpan(ctx, sc, err)
11530		}()
11531	}
11532	for {
11533		next, err := page.fn(ctx, page.hnbc)
11534		if err != nil {
11535			return err
11536		}
11537		page.hnbc = next
11538		if !next.hasNextLink() || !next.IsEmpty() {
11539			break
11540		}
11541	}
11542	return nil
11543}
11544
11545// Next advances to the next page of values.  If there was an error making
11546// the request the page does not advance and the error is returned.
11547// Deprecated: Use NextWithContext() instead.
11548func (page *HostNameBindingCollectionPage) Next() error {
11549	return page.NextWithContext(context.Background())
11550}
11551
11552// NotDone returns true if the page enumeration should be started or is not yet complete.
11553func (page HostNameBindingCollectionPage) NotDone() bool {
11554	return !page.hnbc.IsEmpty()
11555}
11556
11557// Response returns the raw server response from the last page request.
11558func (page HostNameBindingCollectionPage) Response() HostNameBindingCollection {
11559	return page.hnbc
11560}
11561
11562// Values returns the slice of values for the current page or nil if there are no values.
11563func (page HostNameBindingCollectionPage) Values() []HostNameBinding {
11564	if page.hnbc.IsEmpty() {
11565		return nil
11566	}
11567	return *page.hnbc.Value
11568}
11569
11570// Creates a new instance of the HostNameBindingCollectionPage type.
11571func NewHostNameBindingCollectionPage(cur HostNameBindingCollection, getNextPage func(context.Context, HostNameBindingCollection) (HostNameBindingCollection, error)) HostNameBindingCollectionPage {
11572	return HostNameBindingCollectionPage{
11573		fn:   getNextPage,
11574		hnbc: cur,
11575	}
11576}
11577
11578// HostNameBindingProperties hostNameBinding resource specific properties
11579type HostNameBindingProperties struct {
11580	// SiteName - App Service app name.
11581	SiteName *string `json:"siteName,omitempty"`
11582	// DomainID - Fully qualified ARM domain resource URI.
11583	DomainID *string `json:"domainId,omitempty"`
11584	// AzureResourceName - Azure resource name.
11585	AzureResourceName *string `json:"azureResourceName,omitempty"`
11586	// AzureResourceType - Azure resource type. Possible values include: 'Website', 'TrafficManager'
11587	AzureResourceType AzureResourceType `json:"azureResourceType,omitempty"`
11588	// CustomHostNameDNSRecordType - Custom DNS record type. Possible values include: 'CName', 'A'
11589	CustomHostNameDNSRecordType CustomHostNameDNSRecordType `json:"customHostNameDnsRecordType,omitempty"`
11590	// HostNameType - Hostname type. Possible values include: 'Verified', 'Managed'
11591	HostNameType HostNameType `json:"hostNameType,omitempty"`
11592	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
11593	SslState SslState `json:"sslState,omitempty"`
11594	// Thumbprint - SSL certificate thumbprint
11595	Thumbprint *string `json:"thumbprint,omitempty"`
11596	// VirtualIP - READ-ONLY; Virtual IP address assigned to the hostname if IP based SSL is enabled.
11597	VirtualIP *string `json:"virtualIP,omitempty"`
11598}
11599
11600// MarshalJSON is the custom marshaler for HostNameBindingProperties.
11601func (hnb HostNameBindingProperties) MarshalJSON() ([]byte, error) {
11602	objectMap := make(map[string]interface{})
11603	if hnb.SiteName != nil {
11604		objectMap["siteName"] = hnb.SiteName
11605	}
11606	if hnb.DomainID != nil {
11607		objectMap["domainId"] = hnb.DomainID
11608	}
11609	if hnb.AzureResourceName != nil {
11610		objectMap["azureResourceName"] = hnb.AzureResourceName
11611	}
11612	if hnb.AzureResourceType != "" {
11613		objectMap["azureResourceType"] = hnb.AzureResourceType
11614	}
11615	if hnb.CustomHostNameDNSRecordType != "" {
11616		objectMap["customHostNameDnsRecordType"] = hnb.CustomHostNameDNSRecordType
11617	}
11618	if hnb.HostNameType != "" {
11619		objectMap["hostNameType"] = hnb.HostNameType
11620	}
11621	if hnb.SslState != "" {
11622		objectMap["sslState"] = hnb.SslState
11623	}
11624	if hnb.Thumbprint != nil {
11625		objectMap["thumbprint"] = hnb.Thumbprint
11626	}
11627	return json.Marshal(objectMap)
11628}
11629
11630// HostNameSslState SSL-enabled hostname.
11631type HostNameSslState struct {
11632	// Name - Hostname.
11633	Name *string `json:"name,omitempty"`
11634	// SslState - SSL type. Possible values include: 'SslStateDisabled', 'SslStateSniEnabled', 'SslStateIPBasedEnabled'
11635	SslState SslState `json:"sslState,omitempty"`
11636	// VirtualIP - Virtual IP address assigned to the hostname if IP based SSL is enabled.
11637	VirtualIP *string `json:"virtualIP,omitempty"`
11638	// Thumbprint - SSL certificate thumbprint.
11639	Thumbprint *string `json:"thumbprint,omitempty"`
11640	// ToUpdate - Set to <code>true</code> to update existing hostname.
11641	ToUpdate *bool `json:"toUpdate,omitempty"`
11642	// HostType - Indicates whether the hostname is a standard or repository hostname. Possible values include: 'HostTypeStandard', 'HostTypeRepository'
11643	HostType HostType `json:"hostType,omitempty"`
11644}
11645
11646// HTTPLogsConfig http logs configuration.
11647type HTTPLogsConfig struct {
11648	// FileSystem - Http logs to file system configuration.
11649	FileSystem *FileSystemHTTPLogsConfig `json:"fileSystem,omitempty"`
11650	// AzureBlobStorage - Http logs to azure blob storage configuration.
11651	AzureBlobStorage *AzureBlobStorageHTTPLogsConfig `json:"azureBlobStorage,omitempty"`
11652}
11653
11654// HTTPSettings ...
11655type HTTPSettings struct {
11656	// HTTPSettingsProperties - HttpSettings resource specific properties
11657	*HTTPSettingsProperties `json:"properties,omitempty"`
11658	// ID - READ-ONLY; Resource Id.
11659	ID *string `json:"id,omitempty"`
11660	// Name - READ-ONLY; Resource Name.
11661	Name *string `json:"name,omitempty"`
11662	// Kind - Kind of resource.
11663	Kind *string `json:"kind,omitempty"`
11664	// Type - READ-ONLY; Resource type.
11665	Type *string `json:"type,omitempty"`
11666}
11667
11668// MarshalJSON is the custom marshaler for HTTPSettings.
11669func (hs HTTPSettings) MarshalJSON() ([]byte, error) {
11670	objectMap := make(map[string]interface{})
11671	if hs.HTTPSettingsProperties != nil {
11672		objectMap["properties"] = hs.HTTPSettingsProperties
11673	}
11674	if hs.Kind != nil {
11675		objectMap["kind"] = hs.Kind
11676	}
11677	return json.Marshal(objectMap)
11678}
11679
11680// UnmarshalJSON is the custom unmarshaler for HTTPSettings struct.
11681func (hs *HTTPSettings) UnmarshalJSON(body []byte) error {
11682	var m map[string]*json.RawMessage
11683	err := json.Unmarshal(body, &m)
11684	if err != nil {
11685		return err
11686	}
11687	for k, v := range m {
11688		switch k {
11689		case "properties":
11690			if v != nil {
11691				var HTTPSettingsProperties HTTPSettingsProperties
11692				err = json.Unmarshal(*v, &HTTPSettingsProperties)
11693				if err != nil {
11694					return err
11695				}
11696				hs.HTTPSettingsProperties = &HTTPSettingsProperties
11697			}
11698		case "id":
11699			if v != nil {
11700				var ID string
11701				err = json.Unmarshal(*v, &ID)
11702				if err != nil {
11703					return err
11704				}
11705				hs.ID = &ID
11706			}
11707		case "name":
11708			if v != nil {
11709				var name string
11710				err = json.Unmarshal(*v, &name)
11711				if err != nil {
11712					return err
11713				}
11714				hs.Name = &name
11715			}
11716		case "kind":
11717			if v != nil {
11718				var kind string
11719				err = json.Unmarshal(*v, &kind)
11720				if err != nil {
11721					return err
11722				}
11723				hs.Kind = &kind
11724			}
11725		case "type":
11726			if v != nil {
11727				var typeVar string
11728				err = json.Unmarshal(*v, &typeVar)
11729				if err != nil {
11730					return err
11731				}
11732				hs.Type = &typeVar
11733			}
11734		}
11735	}
11736
11737	return nil
11738}
11739
11740// HTTPSettingsProperties httpSettings resource specific properties
11741type HTTPSettingsProperties struct {
11742	RequireHTTPS *bool               `json:"requireHttps,omitempty"`
11743	Routes       *HTTPSettingsRoutes `json:"routes,omitempty"`
11744	ForwardProxy *ForwardProxy       `json:"forwardProxy,omitempty"`
11745}
11746
11747// HTTPSettingsRoutes ...
11748type HTTPSettingsRoutes struct {
11749	// HTTPSettingsRoutesProperties - HttpSettingsRoutes resource specific properties
11750	*HTTPSettingsRoutesProperties `json:"properties,omitempty"`
11751	// ID - READ-ONLY; Resource Id.
11752	ID *string `json:"id,omitempty"`
11753	// Name - READ-ONLY; Resource Name.
11754	Name *string `json:"name,omitempty"`
11755	// Kind - Kind of resource.
11756	Kind *string `json:"kind,omitempty"`
11757	// Type - READ-ONLY; Resource type.
11758	Type *string `json:"type,omitempty"`
11759}
11760
11761// MarshalJSON is the custom marshaler for HTTPSettingsRoutes.
11762func (hsr HTTPSettingsRoutes) MarshalJSON() ([]byte, error) {
11763	objectMap := make(map[string]interface{})
11764	if hsr.HTTPSettingsRoutesProperties != nil {
11765		objectMap["properties"] = hsr.HTTPSettingsRoutesProperties
11766	}
11767	if hsr.Kind != nil {
11768		objectMap["kind"] = hsr.Kind
11769	}
11770	return json.Marshal(objectMap)
11771}
11772
11773// UnmarshalJSON is the custom unmarshaler for HTTPSettingsRoutes struct.
11774func (hsr *HTTPSettingsRoutes) UnmarshalJSON(body []byte) error {
11775	var m map[string]*json.RawMessage
11776	err := json.Unmarshal(body, &m)
11777	if err != nil {
11778		return err
11779	}
11780	for k, v := range m {
11781		switch k {
11782		case "properties":
11783			if v != nil {
11784				var HTTPSettingsRoutesProperties HTTPSettingsRoutesProperties
11785				err = json.Unmarshal(*v, &HTTPSettingsRoutesProperties)
11786				if err != nil {
11787					return err
11788				}
11789				hsr.HTTPSettingsRoutesProperties = &HTTPSettingsRoutesProperties
11790			}
11791		case "id":
11792			if v != nil {
11793				var ID string
11794				err = json.Unmarshal(*v, &ID)
11795				if err != nil {
11796					return err
11797				}
11798				hsr.ID = &ID
11799			}
11800		case "name":
11801			if v != nil {
11802				var name string
11803				err = json.Unmarshal(*v, &name)
11804				if err != nil {
11805					return err
11806				}
11807				hsr.Name = &name
11808			}
11809		case "kind":
11810			if v != nil {
11811				var kind string
11812				err = json.Unmarshal(*v, &kind)
11813				if err != nil {
11814					return err
11815				}
11816				hsr.Kind = &kind
11817			}
11818		case "type":
11819			if v != nil {
11820				var typeVar string
11821				err = json.Unmarshal(*v, &typeVar)
11822				if err != nil {
11823					return err
11824				}
11825				hsr.Type = &typeVar
11826			}
11827		}
11828	}
11829
11830	return nil
11831}
11832
11833// HTTPSettingsRoutesProperties httpSettingsRoutes resource specific properties
11834type HTTPSettingsRoutesProperties struct {
11835	APIPrefix *string `json:"apiPrefix,omitempty"`
11836}
11837
11838// HybridConnection hybrid Connection contract. This is used to configure a Hybrid Connection.
11839type HybridConnection struct {
11840	autorest.Response `json:"-"`
11841	// HybridConnectionProperties - HybridConnection resource specific properties
11842	*HybridConnectionProperties `json:"properties,omitempty"`
11843	// ID - READ-ONLY; Resource Id.
11844	ID *string `json:"id,omitempty"`
11845	// Name - READ-ONLY; Resource Name.
11846	Name *string `json:"name,omitempty"`
11847	// Kind - Kind of resource.
11848	Kind *string `json:"kind,omitempty"`
11849	// Type - READ-ONLY; Resource type.
11850	Type *string `json:"type,omitempty"`
11851}
11852
11853// MarshalJSON is the custom marshaler for HybridConnection.
11854func (hc HybridConnection) MarshalJSON() ([]byte, error) {
11855	objectMap := make(map[string]interface{})
11856	if hc.HybridConnectionProperties != nil {
11857		objectMap["properties"] = hc.HybridConnectionProperties
11858	}
11859	if hc.Kind != nil {
11860		objectMap["kind"] = hc.Kind
11861	}
11862	return json.Marshal(objectMap)
11863}
11864
11865// UnmarshalJSON is the custom unmarshaler for HybridConnection struct.
11866func (hc *HybridConnection) UnmarshalJSON(body []byte) error {
11867	var m map[string]*json.RawMessage
11868	err := json.Unmarshal(body, &m)
11869	if err != nil {
11870		return err
11871	}
11872	for k, v := range m {
11873		switch k {
11874		case "properties":
11875			if v != nil {
11876				var hybridConnectionProperties HybridConnectionProperties
11877				err = json.Unmarshal(*v, &hybridConnectionProperties)
11878				if err != nil {
11879					return err
11880				}
11881				hc.HybridConnectionProperties = &hybridConnectionProperties
11882			}
11883		case "id":
11884			if v != nil {
11885				var ID string
11886				err = json.Unmarshal(*v, &ID)
11887				if err != nil {
11888					return err
11889				}
11890				hc.ID = &ID
11891			}
11892		case "name":
11893			if v != nil {
11894				var name string
11895				err = json.Unmarshal(*v, &name)
11896				if err != nil {
11897					return err
11898				}
11899				hc.Name = &name
11900			}
11901		case "kind":
11902			if v != nil {
11903				var kind string
11904				err = json.Unmarshal(*v, &kind)
11905				if err != nil {
11906					return err
11907				}
11908				hc.Kind = &kind
11909			}
11910		case "type":
11911			if v != nil {
11912				var typeVar string
11913				err = json.Unmarshal(*v, &typeVar)
11914				if err != nil {
11915					return err
11916				}
11917				hc.Type = &typeVar
11918			}
11919		}
11920	}
11921
11922	return nil
11923}
11924
11925// HybridConnectionCollection collection of hostname bindings.
11926type HybridConnectionCollection struct {
11927	autorest.Response `json:"-"`
11928	// Value - Collection of resources.
11929	Value *[]HybridConnection `json:"value,omitempty"`
11930	// NextLink - READ-ONLY; Link to next page of resources.
11931	NextLink *string `json:"nextLink,omitempty"`
11932}
11933
11934// MarshalJSON is the custom marshaler for HybridConnectionCollection.
11935func (hcc HybridConnectionCollection) MarshalJSON() ([]byte, error) {
11936	objectMap := make(map[string]interface{})
11937	if hcc.Value != nil {
11938		objectMap["value"] = hcc.Value
11939	}
11940	return json.Marshal(objectMap)
11941}
11942
11943// HybridConnectionCollectionIterator provides access to a complete listing of HybridConnection values.
11944type HybridConnectionCollectionIterator struct {
11945	i    int
11946	page HybridConnectionCollectionPage
11947}
11948
11949// NextWithContext advances to the next value.  If there was an error making
11950// the request the iterator does not advance and the error is returned.
11951func (iter *HybridConnectionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
11952	if tracing.IsEnabled() {
11953		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionIterator.NextWithContext")
11954		defer func() {
11955			sc := -1
11956			if iter.Response().Response.Response != nil {
11957				sc = iter.Response().Response.Response.StatusCode
11958			}
11959			tracing.EndSpan(ctx, sc, err)
11960		}()
11961	}
11962	iter.i++
11963	if iter.i < len(iter.page.Values()) {
11964		return nil
11965	}
11966	err = iter.page.NextWithContext(ctx)
11967	if err != nil {
11968		iter.i--
11969		return err
11970	}
11971	iter.i = 0
11972	return nil
11973}
11974
11975// Next advances to the next value.  If there was an error making
11976// the request the iterator does not advance and the error is returned.
11977// Deprecated: Use NextWithContext() instead.
11978func (iter *HybridConnectionCollectionIterator) Next() error {
11979	return iter.NextWithContext(context.Background())
11980}
11981
11982// NotDone returns true if the enumeration should be started or is not yet complete.
11983func (iter HybridConnectionCollectionIterator) NotDone() bool {
11984	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11985}
11986
11987// Response returns the raw server response from the last page request.
11988func (iter HybridConnectionCollectionIterator) Response() HybridConnectionCollection {
11989	return iter.page.Response()
11990}
11991
11992// Value returns the current value or a zero-initialized value if the
11993// iterator has advanced beyond the end of the collection.
11994func (iter HybridConnectionCollectionIterator) Value() HybridConnection {
11995	if !iter.page.NotDone() {
11996		return HybridConnection{}
11997	}
11998	return iter.page.Values()[iter.i]
11999}
12000
12001// Creates a new instance of the HybridConnectionCollectionIterator type.
12002func NewHybridConnectionCollectionIterator(page HybridConnectionCollectionPage) HybridConnectionCollectionIterator {
12003	return HybridConnectionCollectionIterator{page: page}
12004}
12005
12006// IsEmpty returns true if the ListResult contains no values.
12007func (hcc HybridConnectionCollection) IsEmpty() bool {
12008	return hcc.Value == nil || len(*hcc.Value) == 0
12009}
12010
12011// hasNextLink returns true if the NextLink is not empty.
12012func (hcc HybridConnectionCollection) hasNextLink() bool {
12013	return hcc.NextLink != nil && len(*hcc.NextLink) != 0
12014}
12015
12016// hybridConnectionCollectionPreparer prepares a request to retrieve the next set of results.
12017// It returns nil if no more results exist.
12018func (hcc HybridConnectionCollection) hybridConnectionCollectionPreparer(ctx context.Context) (*http.Request, error) {
12019	if !hcc.hasNextLink() {
12020		return nil, nil
12021	}
12022	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12023		autorest.AsJSON(),
12024		autorest.AsGet(),
12025		autorest.WithBaseURL(to.String(hcc.NextLink)))
12026}
12027
12028// HybridConnectionCollectionPage contains a page of HybridConnection values.
12029type HybridConnectionCollectionPage struct {
12030	fn  func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)
12031	hcc HybridConnectionCollection
12032}
12033
12034// NextWithContext advances to the next page of values.  If there was an error making
12035// the request the page does not advance and the error is returned.
12036func (page *HybridConnectionCollectionPage) NextWithContext(ctx context.Context) (err error) {
12037	if tracing.IsEnabled() {
12038		ctx = tracing.StartSpan(ctx, fqdn+"/HybridConnectionCollectionPage.NextWithContext")
12039		defer func() {
12040			sc := -1
12041			if page.Response().Response.Response != nil {
12042				sc = page.Response().Response.Response.StatusCode
12043			}
12044			tracing.EndSpan(ctx, sc, err)
12045		}()
12046	}
12047	for {
12048		next, err := page.fn(ctx, page.hcc)
12049		if err != nil {
12050			return err
12051		}
12052		page.hcc = next
12053		if !next.hasNextLink() || !next.IsEmpty() {
12054			break
12055		}
12056	}
12057	return nil
12058}
12059
12060// Next advances to the next page of values.  If there was an error making
12061// the request the page does not advance and the error is returned.
12062// Deprecated: Use NextWithContext() instead.
12063func (page *HybridConnectionCollectionPage) Next() error {
12064	return page.NextWithContext(context.Background())
12065}
12066
12067// NotDone returns true if the page enumeration should be started or is not yet complete.
12068func (page HybridConnectionCollectionPage) NotDone() bool {
12069	return !page.hcc.IsEmpty()
12070}
12071
12072// Response returns the raw server response from the last page request.
12073func (page HybridConnectionCollectionPage) Response() HybridConnectionCollection {
12074	return page.hcc
12075}
12076
12077// Values returns the slice of values for the current page or nil if there are no values.
12078func (page HybridConnectionCollectionPage) Values() []HybridConnection {
12079	if page.hcc.IsEmpty() {
12080		return nil
12081	}
12082	return *page.hcc.Value
12083}
12084
12085// Creates a new instance of the HybridConnectionCollectionPage type.
12086func NewHybridConnectionCollectionPage(cur HybridConnectionCollection, getNextPage func(context.Context, HybridConnectionCollection) (HybridConnectionCollection, error)) HybridConnectionCollectionPage {
12087	return HybridConnectionCollectionPage{
12088		fn:  getNextPage,
12089		hcc: cur,
12090	}
12091}
12092
12093// HybridConnectionKey hybrid Connection key contract. This has the send key name and value for a Hybrid
12094// Connection.
12095type HybridConnectionKey struct {
12096	autorest.Response `json:"-"`
12097	// HybridConnectionKeyProperties - HybridConnectionKey resource specific properties
12098	*HybridConnectionKeyProperties `json:"properties,omitempty"`
12099	// ID - READ-ONLY; Resource Id.
12100	ID *string `json:"id,omitempty"`
12101	// Name - READ-ONLY; Resource Name.
12102	Name *string `json:"name,omitempty"`
12103	// Kind - Kind of resource.
12104	Kind *string `json:"kind,omitempty"`
12105	// Type - READ-ONLY; Resource type.
12106	Type *string `json:"type,omitempty"`
12107}
12108
12109// MarshalJSON is the custom marshaler for HybridConnectionKey.
12110func (hck HybridConnectionKey) MarshalJSON() ([]byte, error) {
12111	objectMap := make(map[string]interface{})
12112	if hck.HybridConnectionKeyProperties != nil {
12113		objectMap["properties"] = hck.HybridConnectionKeyProperties
12114	}
12115	if hck.Kind != nil {
12116		objectMap["kind"] = hck.Kind
12117	}
12118	return json.Marshal(objectMap)
12119}
12120
12121// UnmarshalJSON is the custom unmarshaler for HybridConnectionKey struct.
12122func (hck *HybridConnectionKey) UnmarshalJSON(body []byte) error {
12123	var m map[string]*json.RawMessage
12124	err := json.Unmarshal(body, &m)
12125	if err != nil {
12126		return err
12127	}
12128	for k, v := range m {
12129		switch k {
12130		case "properties":
12131			if v != nil {
12132				var hybridConnectionKeyProperties HybridConnectionKeyProperties
12133				err = json.Unmarshal(*v, &hybridConnectionKeyProperties)
12134				if err != nil {
12135					return err
12136				}
12137				hck.HybridConnectionKeyProperties = &hybridConnectionKeyProperties
12138			}
12139		case "id":
12140			if v != nil {
12141				var ID string
12142				err = json.Unmarshal(*v, &ID)
12143				if err != nil {
12144					return err
12145				}
12146				hck.ID = &ID
12147			}
12148		case "name":
12149			if v != nil {
12150				var name string
12151				err = json.Unmarshal(*v, &name)
12152				if err != nil {
12153					return err
12154				}
12155				hck.Name = &name
12156			}
12157		case "kind":
12158			if v != nil {
12159				var kind string
12160				err = json.Unmarshal(*v, &kind)
12161				if err != nil {
12162					return err
12163				}
12164				hck.Kind = &kind
12165			}
12166		case "type":
12167			if v != nil {
12168				var typeVar string
12169				err = json.Unmarshal(*v, &typeVar)
12170				if err != nil {
12171					return err
12172				}
12173				hck.Type = &typeVar
12174			}
12175		}
12176	}
12177
12178	return nil
12179}
12180
12181// HybridConnectionKeyProperties hybridConnectionKey resource specific properties
12182type HybridConnectionKeyProperties struct {
12183	// SendKeyName - READ-ONLY; The name of the send key.
12184	SendKeyName *string `json:"sendKeyName,omitempty"`
12185	// SendKeyValue - READ-ONLY; The value of the send key.
12186	SendKeyValue *string `json:"sendKeyValue,omitempty"`
12187}
12188
12189// HybridConnectionLimits hybrid Connection limits contract. This is used to return the plan limits of
12190// Hybrid Connections.
12191type HybridConnectionLimits struct {
12192	autorest.Response `json:"-"`
12193	// HybridConnectionLimitsProperties - HybridConnectionLimits resource specific properties
12194	*HybridConnectionLimitsProperties `json:"properties,omitempty"`
12195	// ID - READ-ONLY; Resource Id.
12196	ID *string `json:"id,omitempty"`
12197	// Name - READ-ONLY; Resource Name.
12198	Name *string `json:"name,omitempty"`
12199	// Kind - Kind of resource.
12200	Kind *string `json:"kind,omitempty"`
12201	// Type - READ-ONLY; Resource type.
12202	Type *string `json:"type,omitempty"`
12203}
12204
12205// MarshalJSON is the custom marshaler for HybridConnectionLimits.
12206func (hcl HybridConnectionLimits) MarshalJSON() ([]byte, error) {
12207	objectMap := make(map[string]interface{})
12208	if hcl.HybridConnectionLimitsProperties != nil {
12209		objectMap["properties"] = hcl.HybridConnectionLimitsProperties
12210	}
12211	if hcl.Kind != nil {
12212		objectMap["kind"] = hcl.Kind
12213	}
12214	return json.Marshal(objectMap)
12215}
12216
12217// UnmarshalJSON is the custom unmarshaler for HybridConnectionLimits struct.
12218func (hcl *HybridConnectionLimits) UnmarshalJSON(body []byte) error {
12219	var m map[string]*json.RawMessage
12220	err := json.Unmarshal(body, &m)
12221	if err != nil {
12222		return err
12223	}
12224	for k, v := range m {
12225		switch k {
12226		case "properties":
12227			if v != nil {
12228				var hybridConnectionLimitsProperties HybridConnectionLimitsProperties
12229				err = json.Unmarshal(*v, &hybridConnectionLimitsProperties)
12230				if err != nil {
12231					return err
12232				}
12233				hcl.HybridConnectionLimitsProperties = &hybridConnectionLimitsProperties
12234			}
12235		case "id":
12236			if v != nil {
12237				var ID string
12238				err = json.Unmarshal(*v, &ID)
12239				if err != nil {
12240					return err
12241				}
12242				hcl.ID = &ID
12243			}
12244		case "name":
12245			if v != nil {
12246				var name string
12247				err = json.Unmarshal(*v, &name)
12248				if err != nil {
12249					return err
12250				}
12251				hcl.Name = &name
12252			}
12253		case "kind":
12254			if v != nil {
12255				var kind string
12256				err = json.Unmarshal(*v, &kind)
12257				if err != nil {
12258					return err
12259				}
12260				hcl.Kind = &kind
12261			}
12262		case "type":
12263			if v != nil {
12264				var typeVar string
12265				err = json.Unmarshal(*v, &typeVar)
12266				if err != nil {
12267					return err
12268				}
12269				hcl.Type = &typeVar
12270			}
12271		}
12272	}
12273
12274	return nil
12275}
12276
12277// HybridConnectionLimitsProperties hybridConnectionLimits resource specific properties
12278type HybridConnectionLimitsProperties struct {
12279	// Current - READ-ONLY; The current number of Hybrid Connections.
12280	Current *int32 `json:"current,omitempty"`
12281	// Maximum - READ-ONLY; The maximum number of Hybrid Connections allowed.
12282	Maximum *int32 `json:"maximum,omitempty"`
12283}
12284
12285// HybridConnectionProperties hybridConnection resource specific properties
12286type HybridConnectionProperties struct {
12287	// ServiceBusNamespace - The name of the Service Bus namespace.
12288	ServiceBusNamespace *string `json:"serviceBusNamespace,omitempty"`
12289	// RelayName - The name of the Service Bus relay.
12290	RelayName *string `json:"relayName,omitempty"`
12291	// RelayArmURI - The ARM URI to the Service Bus relay.
12292	RelayArmURI *string `json:"relayArmUri,omitempty"`
12293	// Hostname - The hostname of the endpoint.
12294	Hostname *string `json:"hostname,omitempty"`
12295	// Port - The port of the endpoint.
12296	Port *int32 `json:"port,omitempty"`
12297	// SendKeyName - The name of the Service Bus key which has Send permissions. This is used to authenticate to Service Bus.
12298	SendKeyName *string `json:"sendKeyName,omitempty"`
12299	// SendKeyValue - The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key will not be returned
12300	// normally, use the POST /listKeys API instead.
12301	SendKeyValue *string `json:"sendKeyValue,omitempty"`
12302	// ServiceBusSuffix - The suffix for the service bus endpoint. By default this is .servicebus.windows.net
12303	ServiceBusSuffix *string `json:"serviceBusSuffix,omitempty"`
12304}
12305
12306// Identifier a domain specific resource identifier.
12307type Identifier struct {
12308	autorest.Response `json:"-"`
12309	// IdentifierProperties - Identifier resource specific properties
12310	*IdentifierProperties `json:"properties,omitempty"`
12311	// ID - READ-ONLY; Resource Id.
12312	ID *string `json:"id,omitempty"`
12313	// Name - READ-ONLY; Resource Name.
12314	Name *string `json:"name,omitempty"`
12315	// Kind - Kind of resource.
12316	Kind *string `json:"kind,omitempty"`
12317	// Type - READ-ONLY; Resource type.
12318	Type *string `json:"type,omitempty"`
12319}
12320
12321// MarshalJSON is the custom marshaler for Identifier.
12322func (i Identifier) MarshalJSON() ([]byte, error) {
12323	objectMap := make(map[string]interface{})
12324	if i.IdentifierProperties != nil {
12325		objectMap["properties"] = i.IdentifierProperties
12326	}
12327	if i.Kind != nil {
12328		objectMap["kind"] = i.Kind
12329	}
12330	return json.Marshal(objectMap)
12331}
12332
12333// UnmarshalJSON is the custom unmarshaler for Identifier struct.
12334func (i *Identifier) UnmarshalJSON(body []byte) error {
12335	var m map[string]*json.RawMessage
12336	err := json.Unmarshal(body, &m)
12337	if err != nil {
12338		return err
12339	}
12340	for k, v := range m {
12341		switch k {
12342		case "properties":
12343			if v != nil {
12344				var identifierProperties IdentifierProperties
12345				err = json.Unmarshal(*v, &identifierProperties)
12346				if err != nil {
12347					return err
12348				}
12349				i.IdentifierProperties = &identifierProperties
12350			}
12351		case "id":
12352			if v != nil {
12353				var ID string
12354				err = json.Unmarshal(*v, &ID)
12355				if err != nil {
12356					return err
12357				}
12358				i.ID = &ID
12359			}
12360		case "name":
12361			if v != nil {
12362				var name string
12363				err = json.Unmarshal(*v, &name)
12364				if err != nil {
12365					return err
12366				}
12367				i.Name = &name
12368			}
12369		case "kind":
12370			if v != nil {
12371				var kind string
12372				err = json.Unmarshal(*v, &kind)
12373				if err != nil {
12374					return err
12375				}
12376				i.Kind = &kind
12377			}
12378		case "type":
12379			if v != nil {
12380				var typeVar string
12381				err = json.Unmarshal(*v, &typeVar)
12382				if err != nil {
12383					return err
12384				}
12385				i.Type = &typeVar
12386			}
12387		}
12388	}
12389
12390	return nil
12391}
12392
12393// IdentifierCollection collection of identifiers.
12394type IdentifierCollection struct {
12395	autorest.Response `json:"-"`
12396	// Value - Collection of resources.
12397	Value *[]Identifier `json:"value,omitempty"`
12398	// NextLink - READ-ONLY; Link to next page of resources.
12399	NextLink *string `json:"nextLink,omitempty"`
12400}
12401
12402// MarshalJSON is the custom marshaler for IdentifierCollection.
12403func (ic IdentifierCollection) MarshalJSON() ([]byte, error) {
12404	objectMap := make(map[string]interface{})
12405	if ic.Value != nil {
12406		objectMap["value"] = ic.Value
12407	}
12408	return json.Marshal(objectMap)
12409}
12410
12411// IdentifierCollectionIterator provides access to a complete listing of Identifier values.
12412type IdentifierCollectionIterator struct {
12413	i    int
12414	page IdentifierCollectionPage
12415}
12416
12417// NextWithContext advances to the next value.  If there was an error making
12418// the request the iterator does not advance and the error is returned.
12419func (iter *IdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12420	if tracing.IsEnabled() {
12421		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionIterator.NextWithContext")
12422		defer func() {
12423			sc := -1
12424			if iter.Response().Response.Response != nil {
12425				sc = iter.Response().Response.Response.StatusCode
12426			}
12427			tracing.EndSpan(ctx, sc, err)
12428		}()
12429	}
12430	iter.i++
12431	if iter.i < len(iter.page.Values()) {
12432		return nil
12433	}
12434	err = iter.page.NextWithContext(ctx)
12435	if err != nil {
12436		iter.i--
12437		return err
12438	}
12439	iter.i = 0
12440	return nil
12441}
12442
12443// Next advances to the next value.  If there was an error making
12444// the request the iterator does not advance and the error is returned.
12445// Deprecated: Use NextWithContext() instead.
12446func (iter *IdentifierCollectionIterator) Next() error {
12447	return iter.NextWithContext(context.Background())
12448}
12449
12450// NotDone returns true if the enumeration should be started or is not yet complete.
12451func (iter IdentifierCollectionIterator) NotDone() bool {
12452	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12453}
12454
12455// Response returns the raw server response from the last page request.
12456func (iter IdentifierCollectionIterator) Response() IdentifierCollection {
12457	return iter.page.Response()
12458}
12459
12460// Value returns the current value or a zero-initialized value if the
12461// iterator has advanced beyond the end of the collection.
12462func (iter IdentifierCollectionIterator) Value() Identifier {
12463	if !iter.page.NotDone() {
12464		return Identifier{}
12465	}
12466	return iter.page.Values()[iter.i]
12467}
12468
12469// Creates a new instance of the IdentifierCollectionIterator type.
12470func NewIdentifierCollectionIterator(page IdentifierCollectionPage) IdentifierCollectionIterator {
12471	return IdentifierCollectionIterator{page: page}
12472}
12473
12474// IsEmpty returns true if the ListResult contains no values.
12475func (ic IdentifierCollection) IsEmpty() bool {
12476	return ic.Value == nil || len(*ic.Value) == 0
12477}
12478
12479// hasNextLink returns true if the NextLink is not empty.
12480func (ic IdentifierCollection) hasNextLink() bool {
12481	return ic.NextLink != nil && len(*ic.NextLink) != 0
12482}
12483
12484// identifierCollectionPreparer prepares a request to retrieve the next set of results.
12485// It returns nil if no more results exist.
12486func (ic IdentifierCollection) identifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
12487	if !ic.hasNextLink() {
12488		return nil, nil
12489	}
12490	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12491		autorest.AsJSON(),
12492		autorest.AsGet(),
12493		autorest.WithBaseURL(to.String(ic.NextLink)))
12494}
12495
12496// IdentifierCollectionPage contains a page of Identifier values.
12497type IdentifierCollectionPage struct {
12498	fn func(context.Context, IdentifierCollection) (IdentifierCollection, error)
12499	ic IdentifierCollection
12500}
12501
12502// NextWithContext advances to the next page of values.  If there was an error making
12503// the request the page does not advance and the error is returned.
12504func (page *IdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
12505	if tracing.IsEnabled() {
12506		ctx = tracing.StartSpan(ctx, fqdn+"/IdentifierCollectionPage.NextWithContext")
12507		defer func() {
12508			sc := -1
12509			if page.Response().Response.Response != nil {
12510				sc = page.Response().Response.Response.StatusCode
12511			}
12512			tracing.EndSpan(ctx, sc, err)
12513		}()
12514	}
12515	for {
12516		next, err := page.fn(ctx, page.ic)
12517		if err != nil {
12518			return err
12519		}
12520		page.ic = next
12521		if !next.hasNextLink() || !next.IsEmpty() {
12522			break
12523		}
12524	}
12525	return nil
12526}
12527
12528// Next advances to the next page of values.  If there was an error making
12529// the request the page does not advance and the error is returned.
12530// Deprecated: Use NextWithContext() instead.
12531func (page *IdentifierCollectionPage) Next() error {
12532	return page.NextWithContext(context.Background())
12533}
12534
12535// NotDone returns true if the page enumeration should be started or is not yet complete.
12536func (page IdentifierCollectionPage) NotDone() bool {
12537	return !page.ic.IsEmpty()
12538}
12539
12540// Response returns the raw server response from the last page request.
12541func (page IdentifierCollectionPage) Response() IdentifierCollection {
12542	return page.ic
12543}
12544
12545// Values returns the slice of values for the current page or nil if there are no values.
12546func (page IdentifierCollectionPage) Values() []Identifier {
12547	if page.ic.IsEmpty() {
12548		return nil
12549	}
12550	return *page.ic.Value
12551}
12552
12553// Creates a new instance of the IdentifierCollectionPage type.
12554func NewIdentifierCollectionPage(cur IdentifierCollection, getNextPage func(context.Context, IdentifierCollection) (IdentifierCollection, error)) IdentifierCollectionPage {
12555	return IdentifierCollectionPage{
12556		fn: getNextPage,
12557		ic: cur,
12558	}
12559}
12560
12561// IdentifierProperties identifier resource specific properties
12562type IdentifierProperties struct {
12563	// Value - String representation of the identity.
12564	Value *string `json:"id,omitempty"`
12565}
12566
12567// IdentityProviders ...
12568type IdentityProviders struct {
12569	// IdentityProvidersProperties - IdentityProviders resource specific properties
12570	*IdentityProvidersProperties `json:"properties,omitempty"`
12571	// ID - READ-ONLY; Resource Id.
12572	ID *string `json:"id,omitempty"`
12573	// Name - READ-ONLY; Resource Name.
12574	Name *string `json:"name,omitempty"`
12575	// Kind - Kind of resource.
12576	Kind *string `json:"kind,omitempty"`
12577	// Type - READ-ONLY; Resource type.
12578	Type *string `json:"type,omitempty"`
12579}
12580
12581// MarshalJSON is the custom marshaler for IdentityProviders.
12582func (IP IdentityProviders) MarshalJSON() ([]byte, error) {
12583	objectMap := make(map[string]interface{})
12584	if IP.IdentityProvidersProperties != nil {
12585		objectMap["properties"] = IP.IdentityProvidersProperties
12586	}
12587	if IP.Kind != nil {
12588		objectMap["kind"] = IP.Kind
12589	}
12590	return json.Marshal(objectMap)
12591}
12592
12593// UnmarshalJSON is the custom unmarshaler for IdentityProviders struct.
12594func (IP *IdentityProviders) UnmarshalJSON(body []byte) error {
12595	var m map[string]*json.RawMessage
12596	err := json.Unmarshal(body, &m)
12597	if err != nil {
12598		return err
12599	}
12600	for k, v := range m {
12601		switch k {
12602		case "properties":
12603			if v != nil {
12604				var identityProvidersProperties IdentityProvidersProperties
12605				err = json.Unmarshal(*v, &identityProvidersProperties)
12606				if err != nil {
12607					return err
12608				}
12609				IP.IdentityProvidersProperties = &identityProvidersProperties
12610			}
12611		case "id":
12612			if v != nil {
12613				var ID string
12614				err = json.Unmarshal(*v, &ID)
12615				if err != nil {
12616					return err
12617				}
12618				IP.ID = &ID
12619			}
12620		case "name":
12621			if v != nil {
12622				var name string
12623				err = json.Unmarshal(*v, &name)
12624				if err != nil {
12625					return err
12626				}
12627				IP.Name = &name
12628			}
12629		case "kind":
12630			if v != nil {
12631				var kind string
12632				err = json.Unmarshal(*v, &kind)
12633				if err != nil {
12634					return err
12635				}
12636				IP.Kind = &kind
12637			}
12638		case "type":
12639			if v != nil {
12640				var typeVar string
12641				err = json.Unmarshal(*v, &typeVar)
12642				if err != nil {
12643					return err
12644				}
12645				IP.Type = &typeVar
12646			}
12647		}
12648	}
12649
12650	return nil
12651}
12652
12653// IdentityProvidersProperties identityProviders resource specific properties
12654type IdentityProvidersProperties struct {
12655	AzureActiveDirectory         *AzureActiveDirectory                   `json:"azureActiveDirectory,omitempty"`
12656	Facebook                     *Facebook                               `json:"facebook,omitempty"`
12657	GitHub                       *GitHub                                 `json:"gitHub,omitempty"`
12658	Google                       *Google                                 `json:"google,omitempty"`
12659	Twitter                      *Twitter                                `json:"twitter,omitempty"`
12660	CustomOpenIDConnectProviders map[string]*CustomOpenIDConnectProvider `json:"customOpenIdConnectProviders"`
12661}
12662
12663// MarshalJSON is the custom marshaler for IdentityProvidersProperties.
12664func (IP IdentityProvidersProperties) MarshalJSON() ([]byte, error) {
12665	objectMap := make(map[string]interface{})
12666	if IP.AzureActiveDirectory != nil {
12667		objectMap["azureActiveDirectory"] = IP.AzureActiveDirectory
12668	}
12669	if IP.Facebook != nil {
12670		objectMap["facebook"] = IP.Facebook
12671	}
12672	if IP.GitHub != nil {
12673		objectMap["gitHub"] = IP.GitHub
12674	}
12675	if IP.Google != nil {
12676		objectMap["google"] = IP.Google
12677	}
12678	if IP.Twitter != nil {
12679		objectMap["twitter"] = IP.Twitter
12680	}
12681	if IP.CustomOpenIDConnectProviders != nil {
12682		objectMap["customOpenIdConnectProviders"] = IP.CustomOpenIDConnectProviders
12683	}
12684	return json.Marshal(objectMap)
12685}
12686
12687// InboundEnvironmentEndpoint the IP Addresses and Ports that require inbound network access to and within
12688// the subnet of the App Service Environment.
12689type InboundEnvironmentEndpoint struct {
12690	// Description - Short text describing the purpose of the network traffic.
12691	Description *string `json:"description,omitempty"`
12692	// Endpoints - The IP addresses that network traffic will originate from in cidr notation.
12693	Endpoints *[]string `json:"endpoints,omitempty"`
12694	// Ports - The ports that network traffic will arrive to the App Service Environment at.
12695	Ports *[]string `json:"ports,omitempty"`
12696}
12697
12698// InboundEnvironmentEndpointCollection collection of Inbound Environment Endpoints
12699type InboundEnvironmentEndpointCollection struct {
12700	autorest.Response `json:"-"`
12701	// Value - Collection of resources.
12702	Value *[]InboundEnvironmentEndpoint `json:"value,omitempty"`
12703	// NextLink - READ-ONLY; Link to next page of resources.
12704	NextLink *string `json:"nextLink,omitempty"`
12705}
12706
12707// MarshalJSON is the custom marshaler for InboundEnvironmentEndpointCollection.
12708func (ieec InboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
12709	objectMap := make(map[string]interface{})
12710	if ieec.Value != nil {
12711		objectMap["value"] = ieec.Value
12712	}
12713	return json.Marshal(objectMap)
12714}
12715
12716// InboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
12717// InboundEnvironmentEndpoint values.
12718type InboundEnvironmentEndpointCollectionIterator struct {
12719	i    int
12720	page InboundEnvironmentEndpointCollectionPage
12721}
12722
12723// NextWithContext advances to the next value.  If there was an error making
12724// the request the iterator does not advance and the error is returned.
12725func (iter *InboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
12726	if tracing.IsEnabled() {
12727		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionIterator.NextWithContext")
12728		defer func() {
12729			sc := -1
12730			if iter.Response().Response.Response != nil {
12731				sc = iter.Response().Response.Response.StatusCode
12732			}
12733			tracing.EndSpan(ctx, sc, err)
12734		}()
12735	}
12736	iter.i++
12737	if iter.i < len(iter.page.Values()) {
12738		return nil
12739	}
12740	err = iter.page.NextWithContext(ctx)
12741	if err != nil {
12742		iter.i--
12743		return err
12744	}
12745	iter.i = 0
12746	return nil
12747}
12748
12749// Next advances to the next value.  If there was an error making
12750// the request the iterator does not advance and the error is returned.
12751// Deprecated: Use NextWithContext() instead.
12752func (iter *InboundEnvironmentEndpointCollectionIterator) Next() error {
12753	return iter.NextWithContext(context.Background())
12754}
12755
12756// NotDone returns true if the enumeration should be started or is not yet complete.
12757func (iter InboundEnvironmentEndpointCollectionIterator) NotDone() bool {
12758	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12759}
12760
12761// Response returns the raw server response from the last page request.
12762func (iter InboundEnvironmentEndpointCollectionIterator) Response() InboundEnvironmentEndpointCollection {
12763	return iter.page.Response()
12764}
12765
12766// Value returns the current value or a zero-initialized value if the
12767// iterator has advanced beyond the end of the collection.
12768func (iter InboundEnvironmentEndpointCollectionIterator) Value() InboundEnvironmentEndpoint {
12769	if !iter.page.NotDone() {
12770		return InboundEnvironmentEndpoint{}
12771	}
12772	return iter.page.Values()[iter.i]
12773}
12774
12775// Creates a new instance of the InboundEnvironmentEndpointCollectionIterator type.
12776func NewInboundEnvironmentEndpointCollectionIterator(page InboundEnvironmentEndpointCollectionPage) InboundEnvironmentEndpointCollectionIterator {
12777	return InboundEnvironmentEndpointCollectionIterator{page: page}
12778}
12779
12780// IsEmpty returns true if the ListResult contains no values.
12781func (ieec InboundEnvironmentEndpointCollection) IsEmpty() bool {
12782	return ieec.Value == nil || len(*ieec.Value) == 0
12783}
12784
12785// hasNextLink returns true if the NextLink is not empty.
12786func (ieec InboundEnvironmentEndpointCollection) hasNextLink() bool {
12787	return ieec.NextLink != nil && len(*ieec.NextLink) != 0
12788}
12789
12790// inboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
12791// It returns nil if no more results exist.
12792func (ieec InboundEnvironmentEndpointCollection) inboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
12793	if !ieec.hasNextLink() {
12794		return nil, nil
12795	}
12796	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12797		autorest.AsJSON(),
12798		autorest.AsGet(),
12799		autorest.WithBaseURL(to.String(ieec.NextLink)))
12800}
12801
12802// InboundEnvironmentEndpointCollectionPage contains a page of InboundEnvironmentEndpoint values.
12803type InboundEnvironmentEndpointCollectionPage struct {
12804	fn   func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)
12805	ieec InboundEnvironmentEndpointCollection
12806}
12807
12808// NextWithContext advances to the next page of values.  If there was an error making
12809// the request the page does not advance and the error is returned.
12810func (page *InboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
12811	if tracing.IsEnabled() {
12812		ctx = tracing.StartSpan(ctx, fqdn+"/InboundEnvironmentEndpointCollectionPage.NextWithContext")
12813		defer func() {
12814			sc := -1
12815			if page.Response().Response.Response != nil {
12816				sc = page.Response().Response.Response.StatusCode
12817			}
12818			tracing.EndSpan(ctx, sc, err)
12819		}()
12820	}
12821	for {
12822		next, err := page.fn(ctx, page.ieec)
12823		if err != nil {
12824			return err
12825		}
12826		page.ieec = next
12827		if !next.hasNextLink() || !next.IsEmpty() {
12828			break
12829		}
12830	}
12831	return nil
12832}
12833
12834// Next advances to the next page of values.  If there was an error making
12835// the request the page does not advance and the error is returned.
12836// Deprecated: Use NextWithContext() instead.
12837func (page *InboundEnvironmentEndpointCollectionPage) Next() error {
12838	return page.NextWithContext(context.Background())
12839}
12840
12841// NotDone returns true if the page enumeration should be started or is not yet complete.
12842func (page InboundEnvironmentEndpointCollectionPage) NotDone() bool {
12843	return !page.ieec.IsEmpty()
12844}
12845
12846// Response returns the raw server response from the last page request.
12847func (page InboundEnvironmentEndpointCollectionPage) Response() InboundEnvironmentEndpointCollection {
12848	return page.ieec
12849}
12850
12851// Values returns the slice of values for the current page or nil if there are no values.
12852func (page InboundEnvironmentEndpointCollectionPage) Values() []InboundEnvironmentEndpoint {
12853	if page.ieec.IsEmpty() {
12854		return nil
12855	}
12856	return *page.ieec.Value
12857}
12858
12859// Creates a new instance of the InboundEnvironmentEndpointCollectionPage type.
12860func NewInboundEnvironmentEndpointCollectionPage(cur InboundEnvironmentEndpointCollection, getNextPage func(context.Context, InboundEnvironmentEndpointCollection) (InboundEnvironmentEndpointCollection, error)) InboundEnvironmentEndpointCollectionPage {
12861	return InboundEnvironmentEndpointCollectionPage{
12862		fn:   getNextPage,
12863		ieec: cur,
12864	}
12865}
12866
12867// IPSecurityRestriction IP security restriction on an app.
12868type IPSecurityRestriction struct {
12869	// IPAddress - IP address the security restriction is valid for.
12870	// It can be in form of pure ipv4 address (required SubnetMask property) or
12871	// CIDR notation such as ipv4/mask (leading bit match). For CIDR,
12872	// SubnetMask property must not be specified.
12873	IPAddress *string `json:"ipAddress,omitempty"`
12874	// SubnetMask - Subnet mask for the range of IP addresses the restriction is valid for.
12875	SubnetMask *string `json:"subnetMask,omitempty"`
12876	// VnetSubnetResourceID - Virtual network resource id
12877	VnetSubnetResourceID *string `json:"vnetSubnetResourceId,omitempty"`
12878	// VnetTrafficTag - (internal) Vnet traffic tag
12879	VnetTrafficTag *int32 `json:"vnetTrafficTag,omitempty"`
12880	// SubnetTrafficTag - (internal) Subnet traffic tag
12881	SubnetTrafficTag *int32 `json:"subnetTrafficTag,omitempty"`
12882	// Action - Allow or Deny access for this IP range.
12883	Action *string `json:"action,omitempty"`
12884	// Tag - Defines what this IP filter will be used for. This is to support IP filtering on proxies. Possible values include: 'Default', 'XffProxy', 'ServiceTag'
12885	Tag IPFilterTag `json:"tag,omitempty"`
12886	// Priority - Priority of IP restriction rule.
12887	Priority *int32 `json:"priority,omitempty"`
12888	// Name - IP restriction rule name.
12889	Name *string `json:"name,omitempty"`
12890	// Description - IP restriction rule description.
12891	Description *string `json:"description,omitempty"`
12892	// Headers - IP restriction rule headers.
12893	// X-Forwarded-Host (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host#Examples).
12894	// The matching logic is ..
12895	// - If the property is null or empty (default), all hosts(or lack of) are allowed.
12896	// - A value is compared using ordinal-ignore-case (excluding port number).
12897	// - Subdomain wildcards are permitted but don't match the root domain. For example, *.contoso.com matches the subdomain foo.contoso.com
12898	//  but not the root domain contoso.com or multi-level foo.bar.contoso.com
12899	// - Unicode host names are allowed but are converted to Punycode for matching.
12900	// X-Forwarded-For (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For#Examples).
12901	// The matching logic is ..
12902	// - If the property is null or empty (default), any forwarded-for chains (or lack of) are allowed.
12903	// - If any address (excluding port number) in the chain (comma separated) matches the CIDR defined by the property.
12904	// X-Azure-FDID and X-FD-HealthProbe.
12905	// The matching logic is exact match.
12906	Headers map[string][]string `json:"headers"`
12907}
12908
12909// MarshalJSON is the custom marshaler for IPSecurityRestriction.
12910func (isr IPSecurityRestriction) MarshalJSON() ([]byte, error) {
12911	objectMap := make(map[string]interface{})
12912	if isr.IPAddress != nil {
12913		objectMap["ipAddress"] = isr.IPAddress
12914	}
12915	if isr.SubnetMask != nil {
12916		objectMap["subnetMask"] = isr.SubnetMask
12917	}
12918	if isr.VnetSubnetResourceID != nil {
12919		objectMap["vnetSubnetResourceId"] = isr.VnetSubnetResourceID
12920	}
12921	if isr.VnetTrafficTag != nil {
12922		objectMap["vnetTrafficTag"] = isr.VnetTrafficTag
12923	}
12924	if isr.SubnetTrafficTag != nil {
12925		objectMap["subnetTrafficTag"] = isr.SubnetTrafficTag
12926	}
12927	if isr.Action != nil {
12928		objectMap["action"] = isr.Action
12929	}
12930	if isr.Tag != "" {
12931		objectMap["tag"] = isr.Tag
12932	}
12933	if isr.Priority != nil {
12934		objectMap["priority"] = isr.Priority
12935	}
12936	if isr.Name != nil {
12937		objectMap["name"] = isr.Name
12938	}
12939	if isr.Description != nil {
12940		objectMap["description"] = isr.Description
12941	}
12942	if isr.Headers != nil {
12943		objectMap["headers"] = isr.Headers
12944	}
12945	return json.Marshal(objectMap)
12946}
12947
12948// Job web Job Information.
12949type Job struct {
12950	autorest.Response `json:"-"`
12951	// JobProperties - WebJob resource specific properties
12952	*JobProperties `json:"properties,omitempty"`
12953	// ID - READ-ONLY; Resource Id.
12954	ID *string `json:"id,omitempty"`
12955	// Name - READ-ONLY; Resource Name.
12956	Name *string `json:"name,omitempty"`
12957	// Kind - Kind of resource.
12958	Kind *string `json:"kind,omitempty"`
12959	// Type - READ-ONLY; Resource type.
12960	Type *string `json:"type,omitempty"`
12961}
12962
12963// MarshalJSON is the custom marshaler for Job.
12964func (j Job) MarshalJSON() ([]byte, error) {
12965	objectMap := make(map[string]interface{})
12966	if j.JobProperties != nil {
12967		objectMap["properties"] = j.JobProperties
12968	}
12969	if j.Kind != nil {
12970		objectMap["kind"] = j.Kind
12971	}
12972	return json.Marshal(objectMap)
12973}
12974
12975// UnmarshalJSON is the custom unmarshaler for Job struct.
12976func (j *Job) UnmarshalJSON(body []byte) error {
12977	var m map[string]*json.RawMessage
12978	err := json.Unmarshal(body, &m)
12979	if err != nil {
12980		return err
12981	}
12982	for k, v := range m {
12983		switch k {
12984		case "properties":
12985			if v != nil {
12986				var jobProperties JobProperties
12987				err = json.Unmarshal(*v, &jobProperties)
12988				if err != nil {
12989					return err
12990				}
12991				j.JobProperties = &jobProperties
12992			}
12993		case "id":
12994			if v != nil {
12995				var ID string
12996				err = json.Unmarshal(*v, &ID)
12997				if err != nil {
12998					return err
12999				}
13000				j.ID = &ID
13001			}
13002		case "name":
13003			if v != nil {
13004				var name string
13005				err = json.Unmarshal(*v, &name)
13006				if err != nil {
13007					return err
13008				}
13009				j.Name = &name
13010			}
13011		case "kind":
13012			if v != nil {
13013				var kind string
13014				err = json.Unmarshal(*v, &kind)
13015				if err != nil {
13016					return err
13017				}
13018				j.Kind = &kind
13019			}
13020		case "type":
13021			if v != nil {
13022				var typeVar string
13023				err = json.Unmarshal(*v, &typeVar)
13024				if err != nil {
13025					return err
13026				}
13027				j.Type = &typeVar
13028			}
13029		}
13030	}
13031
13032	return nil
13033}
13034
13035// JobCollection collection of Kudu web job information elements.
13036type JobCollection struct {
13037	autorest.Response `json:"-"`
13038	// Value - Collection of resources.
13039	Value *[]Job `json:"value,omitempty"`
13040	// NextLink - READ-ONLY; Link to next page of resources.
13041	NextLink *string `json:"nextLink,omitempty"`
13042}
13043
13044// MarshalJSON is the custom marshaler for JobCollection.
13045func (jc JobCollection) MarshalJSON() ([]byte, error) {
13046	objectMap := make(map[string]interface{})
13047	if jc.Value != nil {
13048		objectMap["value"] = jc.Value
13049	}
13050	return json.Marshal(objectMap)
13051}
13052
13053// JobCollectionIterator provides access to a complete listing of Job values.
13054type JobCollectionIterator struct {
13055	i    int
13056	page JobCollectionPage
13057}
13058
13059// NextWithContext advances to the next value.  If there was an error making
13060// the request the iterator does not advance and the error is returned.
13061func (iter *JobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
13062	if tracing.IsEnabled() {
13063		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionIterator.NextWithContext")
13064		defer func() {
13065			sc := -1
13066			if iter.Response().Response.Response != nil {
13067				sc = iter.Response().Response.Response.StatusCode
13068			}
13069			tracing.EndSpan(ctx, sc, err)
13070		}()
13071	}
13072	iter.i++
13073	if iter.i < len(iter.page.Values()) {
13074		return nil
13075	}
13076	err = iter.page.NextWithContext(ctx)
13077	if err != nil {
13078		iter.i--
13079		return err
13080	}
13081	iter.i = 0
13082	return nil
13083}
13084
13085// Next advances to the next value.  If there was an error making
13086// the request the iterator does not advance and the error is returned.
13087// Deprecated: Use NextWithContext() instead.
13088func (iter *JobCollectionIterator) Next() error {
13089	return iter.NextWithContext(context.Background())
13090}
13091
13092// NotDone returns true if the enumeration should be started or is not yet complete.
13093func (iter JobCollectionIterator) NotDone() bool {
13094	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13095}
13096
13097// Response returns the raw server response from the last page request.
13098func (iter JobCollectionIterator) Response() JobCollection {
13099	return iter.page.Response()
13100}
13101
13102// Value returns the current value or a zero-initialized value if the
13103// iterator has advanced beyond the end of the collection.
13104func (iter JobCollectionIterator) Value() Job {
13105	if !iter.page.NotDone() {
13106		return Job{}
13107	}
13108	return iter.page.Values()[iter.i]
13109}
13110
13111// Creates a new instance of the JobCollectionIterator type.
13112func NewJobCollectionIterator(page JobCollectionPage) JobCollectionIterator {
13113	return JobCollectionIterator{page: page}
13114}
13115
13116// IsEmpty returns true if the ListResult contains no values.
13117func (jc JobCollection) IsEmpty() bool {
13118	return jc.Value == nil || len(*jc.Value) == 0
13119}
13120
13121// hasNextLink returns true if the NextLink is not empty.
13122func (jc JobCollection) hasNextLink() bool {
13123	return jc.NextLink != nil && len(*jc.NextLink) != 0
13124}
13125
13126// jobCollectionPreparer prepares a request to retrieve the next set of results.
13127// It returns nil if no more results exist.
13128func (jc JobCollection) jobCollectionPreparer(ctx context.Context) (*http.Request, error) {
13129	if !jc.hasNextLink() {
13130		return nil, nil
13131	}
13132	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13133		autorest.AsJSON(),
13134		autorest.AsGet(),
13135		autorest.WithBaseURL(to.String(jc.NextLink)))
13136}
13137
13138// JobCollectionPage contains a page of Job values.
13139type JobCollectionPage struct {
13140	fn func(context.Context, JobCollection) (JobCollection, error)
13141	jc JobCollection
13142}
13143
13144// NextWithContext advances to the next page of values.  If there was an error making
13145// the request the page does not advance and the error is returned.
13146func (page *JobCollectionPage) NextWithContext(ctx context.Context) (err error) {
13147	if tracing.IsEnabled() {
13148		ctx = tracing.StartSpan(ctx, fqdn+"/JobCollectionPage.NextWithContext")
13149		defer func() {
13150			sc := -1
13151			if page.Response().Response.Response != nil {
13152				sc = page.Response().Response.Response.StatusCode
13153			}
13154			tracing.EndSpan(ctx, sc, err)
13155		}()
13156	}
13157	for {
13158		next, err := page.fn(ctx, page.jc)
13159		if err != nil {
13160			return err
13161		}
13162		page.jc = next
13163		if !next.hasNextLink() || !next.IsEmpty() {
13164			break
13165		}
13166	}
13167	return nil
13168}
13169
13170// Next advances to the next page of values.  If there was an error making
13171// the request the page does not advance and the error is returned.
13172// Deprecated: Use NextWithContext() instead.
13173func (page *JobCollectionPage) Next() error {
13174	return page.NextWithContext(context.Background())
13175}
13176
13177// NotDone returns true if the page enumeration should be started or is not yet complete.
13178func (page JobCollectionPage) NotDone() bool {
13179	return !page.jc.IsEmpty()
13180}
13181
13182// Response returns the raw server response from the last page request.
13183func (page JobCollectionPage) Response() JobCollection {
13184	return page.jc
13185}
13186
13187// Values returns the slice of values for the current page or nil if there are no values.
13188func (page JobCollectionPage) Values() []Job {
13189	if page.jc.IsEmpty() {
13190		return nil
13191	}
13192	return *page.jc.Value
13193}
13194
13195// Creates a new instance of the JobCollectionPage type.
13196func NewJobCollectionPage(cur JobCollection, getNextPage func(context.Context, JobCollection) (JobCollection, error)) JobCollectionPage {
13197	return JobCollectionPage{
13198		fn: getNextPage,
13199		jc: cur,
13200	}
13201}
13202
13203// JobProperties webJob resource specific properties
13204type JobProperties struct {
13205	// RunCommand - Run command.
13206	RunCommand *string `json:"run_command,omitempty"`
13207	// URL - Job URL.
13208	URL *string `json:"url,omitempty"`
13209	// ExtraInfoURL - Extra Info URL.
13210	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
13211	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
13212	WebJobType JobType `json:"web_job_type,omitempty"`
13213	// Error - Error information.
13214	Error *string `json:"error,omitempty"`
13215	// UsingSdk - Using SDK?
13216	UsingSdk *bool `json:"using_sdk,omitempty"`
13217	// Settings - Job settings.
13218	Settings map[string]interface{} `json:"settings"`
13219}
13220
13221// MarshalJSON is the custom marshaler for JobProperties.
13222func (j JobProperties) MarshalJSON() ([]byte, error) {
13223	objectMap := make(map[string]interface{})
13224	if j.RunCommand != nil {
13225		objectMap["run_command"] = j.RunCommand
13226	}
13227	if j.URL != nil {
13228		objectMap["url"] = j.URL
13229	}
13230	if j.ExtraInfoURL != nil {
13231		objectMap["extra_info_url"] = j.ExtraInfoURL
13232	}
13233	if j.WebJobType != "" {
13234		objectMap["web_job_type"] = j.WebJobType
13235	}
13236	if j.Error != nil {
13237		objectMap["error"] = j.Error
13238	}
13239	if j.UsingSdk != nil {
13240		objectMap["using_sdk"] = j.UsingSdk
13241	}
13242	if j.Settings != nil {
13243		objectMap["settings"] = j.Settings
13244	}
13245	return json.Marshal(objectMap)
13246}
13247
13248// JwtClaimChecks ...
13249type JwtClaimChecks struct {
13250	// JwtClaimChecksProperties - JwtClaimChecks resource specific properties
13251	*JwtClaimChecksProperties `json:"properties,omitempty"`
13252	// ID - READ-ONLY; Resource Id.
13253	ID *string `json:"id,omitempty"`
13254	// Name - READ-ONLY; Resource Name.
13255	Name *string `json:"name,omitempty"`
13256	// Kind - Kind of resource.
13257	Kind *string `json:"kind,omitempty"`
13258	// Type - READ-ONLY; Resource type.
13259	Type *string `json:"type,omitempty"`
13260}
13261
13262// MarshalJSON is the custom marshaler for JwtClaimChecks.
13263func (jcc JwtClaimChecks) MarshalJSON() ([]byte, error) {
13264	objectMap := make(map[string]interface{})
13265	if jcc.JwtClaimChecksProperties != nil {
13266		objectMap["properties"] = jcc.JwtClaimChecksProperties
13267	}
13268	if jcc.Kind != nil {
13269		objectMap["kind"] = jcc.Kind
13270	}
13271	return json.Marshal(objectMap)
13272}
13273
13274// UnmarshalJSON is the custom unmarshaler for JwtClaimChecks struct.
13275func (jcc *JwtClaimChecks) UnmarshalJSON(body []byte) error {
13276	var m map[string]*json.RawMessage
13277	err := json.Unmarshal(body, &m)
13278	if err != nil {
13279		return err
13280	}
13281	for k, v := range m {
13282		switch k {
13283		case "properties":
13284			if v != nil {
13285				var jwtClaimChecksProperties JwtClaimChecksProperties
13286				err = json.Unmarshal(*v, &jwtClaimChecksProperties)
13287				if err != nil {
13288					return err
13289				}
13290				jcc.JwtClaimChecksProperties = &jwtClaimChecksProperties
13291			}
13292		case "id":
13293			if v != nil {
13294				var ID string
13295				err = json.Unmarshal(*v, &ID)
13296				if err != nil {
13297					return err
13298				}
13299				jcc.ID = &ID
13300			}
13301		case "name":
13302			if v != nil {
13303				var name string
13304				err = json.Unmarshal(*v, &name)
13305				if err != nil {
13306					return err
13307				}
13308				jcc.Name = &name
13309			}
13310		case "kind":
13311			if v != nil {
13312				var kind string
13313				err = json.Unmarshal(*v, &kind)
13314				if err != nil {
13315					return err
13316				}
13317				jcc.Kind = &kind
13318			}
13319		case "type":
13320			if v != nil {
13321				var typeVar string
13322				err = json.Unmarshal(*v, &typeVar)
13323				if err != nil {
13324					return err
13325				}
13326				jcc.Type = &typeVar
13327			}
13328		}
13329	}
13330
13331	return nil
13332}
13333
13334// JwtClaimChecksProperties jwtClaimChecks resource specific properties
13335type JwtClaimChecksProperties struct {
13336	AllowedGroups             *[]string `json:"allowedGroups,omitempty"`
13337	AllowedClientApplications *[]string `json:"allowedClientApplications,omitempty"`
13338}
13339
13340// KeyInfo function key info.
13341type KeyInfo struct {
13342	autorest.Response `json:"-"`
13343	// Name - Key name
13344	Name *string `json:"name,omitempty"`
13345	// Value - Key value
13346	Value *string `json:"value,omitempty"`
13347}
13348
13349// ListCapability ...
13350type ListCapability struct {
13351	autorest.Response `json:"-"`
13352	Value             *[]Capability `json:"value,omitempty"`
13353}
13354
13355// ListCertificateEmail ...
13356type ListCertificateEmail struct {
13357	autorest.Response `json:"-"`
13358	Value             *[]CertificateEmail `json:"value,omitempty"`
13359}
13360
13361// ListCertificateOrderAction ...
13362type ListCertificateOrderAction struct {
13363	autorest.Response `json:"-"`
13364	Value             *[]CertificateOrderAction `json:"value,omitempty"`
13365}
13366
13367// ListHostingEnvironmentDiagnostics ...
13368type ListHostingEnvironmentDiagnostics struct {
13369	autorest.Response `json:"-"`
13370	Value             *[]HostingEnvironmentDiagnostics `json:"value,omitempty"`
13371}
13372
13373// ListNetworkTrace ...
13374type ListNetworkTrace struct {
13375	autorest.Response `json:"-"`
13376	Value             *[]NetworkTrace `json:"value,omitempty"`
13377}
13378
13379// ListOperation ...
13380type ListOperation struct {
13381	autorest.Response `json:"-"`
13382	Value             *[]Operation `json:"value,omitempty"`
13383}
13384
13385// ListVnetInfo ...
13386type ListVnetInfo struct {
13387	autorest.Response `json:"-"`
13388	Value             *[]VnetInfo `json:"value,omitempty"`
13389}
13390
13391// ListVnetRoute ...
13392type ListVnetRoute struct {
13393	autorest.Response `json:"-"`
13394	Value             *[]VnetRoute `json:"value,omitempty"`
13395}
13396
13397// LocalizableString localizable string object containing the name and a localized value.
13398type LocalizableString struct {
13399	// Value - Non-localized name.
13400	Value *string `json:"value,omitempty"`
13401	// LocalizedValue - Localized name.
13402	LocalizedValue *string `json:"localizedValue,omitempty"`
13403}
13404
13405// Login ...
13406type Login struct {
13407	// LoginProperties - Login resource specific properties
13408	*LoginProperties `json:"properties,omitempty"`
13409	// ID - READ-ONLY; Resource Id.
13410	ID *string `json:"id,omitempty"`
13411	// Name - READ-ONLY; Resource Name.
13412	Name *string `json:"name,omitempty"`
13413	// Kind - Kind of resource.
13414	Kind *string `json:"kind,omitempty"`
13415	// Type - READ-ONLY; Resource type.
13416	Type *string `json:"type,omitempty"`
13417}
13418
13419// MarshalJSON is the custom marshaler for Login.
13420func (l Login) MarshalJSON() ([]byte, error) {
13421	objectMap := make(map[string]interface{})
13422	if l.LoginProperties != nil {
13423		objectMap["properties"] = l.LoginProperties
13424	}
13425	if l.Kind != nil {
13426		objectMap["kind"] = l.Kind
13427	}
13428	return json.Marshal(objectMap)
13429}
13430
13431// UnmarshalJSON is the custom unmarshaler for Login struct.
13432func (l *Login) UnmarshalJSON(body []byte) error {
13433	var m map[string]*json.RawMessage
13434	err := json.Unmarshal(body, &m)
13435	if err != nil {
13436		return err
13437	}
13438	for k, v := range m {
13439		switch k {
13440		case "properties":
13441			if v != nil {
13442				var loginProperties LoginProperties
13443				err = json.Unmarshal(*v, &loginProperties)
13444				if err != nil {
13445					return err
13446				}
13447				l.LoginProperties = &loginProperties
13448			}
13449		case "id":
13450			if v != nil {
13451				var ID string
13452				err = json.Unmarshal(*v, &ID)
13453				if err != nil {
13454					return err
13455				}
13456				l.ID = &ID
13457			}
13458		case "name":
13459			if v != nil {
13460				var name string
13461				err = json.Unmarshal(*v, &name)
13462				if err != nil {
13463					return err
13464				}
13465				l.Name = &name
13466			}
13467		case "kind":
13468			if v != nil {
13469				var kind string
13470				err = json.Unmarshal(*v, &kind)
13471				if err != nil {
13472					return err
13473				}
13474				l.Kind = &kind
13475			}
13476		case "type":
13477			if v != nil {
13478				var typeVar string
13479				err = json.Unmarshal(*v, &typeVar)
13480				if err != nil {
13481					return err
13482				}
13483				l.Type = &typeVar
13484			}
13485		}
13486	}
13487
13488	return nil
13489}
13490
13491// LoginProperties login resource specific properties
13492type LoginProperties struct {
13493	Routes                        *LoginRoutes      `json:"routes,omitempty"`
13494	TokenStore                    *TokenStore       `json:"tokenStore,omitempty"`
13495	PreserveURLFragmentsForLogins *bool             `json:"preserveUrlFragmentsForLogins,omitempty"`
13496	AllowedExternalRedirectUrls   *[]string         `json:"allowedExternalRedirectUrls,omitempty"`
13497	CookieExpiration              *CookieExpiration `json:"cookieExpiration,omitempty"`
13498	Nonce                         *Nonce            `json:"nonce,omitempty"`
13499}
13500
13501// LoginRoutes ...
13502type LoginRoutes struct {
13503	// LoginRoutesProperties - LoginRoutes resource specific properties
13504	*LoginRoutesProperties `json:"properties,omitempty"`
13505	// ID - READ-ONLY; Resource Id.
13506	ID *string `json:"id,omitempty"`
13507	// Name - READ-ONLY; Resource Name.
13508	Name *string `json:"name,omitempty"`
13509	// Kind - Kind of resource.
13510	Kind *string `json:"kind,omitempty"`
13511	// Type - READ-ONLY; Resource type.
13512	Type *string `json:"type,omitempty"`
13513}
13514
13515// MarshalJSON is the custom marshaler for LoginRoutes.
13516func (lr LoginRoutes) MarshalJSON() ([]byte, error) {
13517	objectMap := make(map[string]interface{})
13518	if lr.LoginRoutesProperties != nil {
13519		objectMap["properties"] = lr.LoginRoutesProperties
13520	}
13521	if lr.Kind != nil {
13522		objectMap["kind"] = lr.Kind
13523	}
13524	return json.Marshal(objectMap)
13525}
13526
13527// UnmarshalJSON is the custom unmarshaler for LoginRoutes struct.
13528func (lr *LoginRoutes) UnmarshalJSON(body []byte) error {
13529	var m map[string]*json.RawMessage
13530	err := json.Unmarshal(body, &m)
13531	if err != nil {
13532		return err
13533	}
13534	for k, v := range m {
13535		switch k {
13536		case "properties":
13537			if v != nil {
13538				var loginRoutesProperties LoginRoutesProperties
13539				err = json.Unmarshal(*v, &loginRoutesProperties)
13540				if err != nil {
13541					return err
13542				}
13543				lr.LoginRoutesProperties = &loginRoutesProperties
13544			}
13545		case "id":
13546			if v != nil {
13547				var ID string
13548				err = json.Unmarshal(*v, &ID)
13549				if err != nil {
13550					return err
13551				}
13552				lr.ID = &ID
13553			}
13554		case "name":
13555			if v != nil {
13556				var name string
13557				err = json.Unmarshal(*v, &name)
13558				if err != nil {
13559					return err
13560				}
13561				lr.Name = &name
13562			}
13563		case "kind":
13564			if v != nil {
13565				var kind string
13566				err = json.Unmarshal(*v, &kind)
13567				if err != nil {
13568					return err
13569				}
13570				lr.Kind = &kind
13571			}
13572		case "type":
13573			if v != nil {
13574				var typeVar string
13575				err = json.Unmarshal(*v, &typeVar)
13576				if err != nil {
13577					return err
13578				}
13579				lr.Type = &typeVar
13580			}
13581		}
13582	}
13583
13584	return nil
13585}
13586
13587// LoginRoutesProperties loginRoutes resource specific properties
13588type LoginRoutesProperties struct {
13589	LogoutEndpoint *string `json:"logoutEndpoint,omitempty"`
13590}
13591
13592// LoginScopes ...
13593type LoginScopes struct {
13594	// LoginScopesProperties - LoginScopes resource specific properties
13595	*LoginScopesProperties `json:"properties,omitempty"`
13596	// ID - READ-ONLY; Resource Id.
13597	ID *string `json:"id,omitempty"`
13598	// Name - READ-ONLY; Resource Name.
13599	Name *string `json:"name,omitempty"`
13600	// Kind - Kind of resource.
13601	Kind *string `json:"kind,omitempty"`
13602	// Type - READ-ONLY; Resource type.
13603	Type *string `json:"type,omitempty"`
13604}
13605
13606// MarshalJSON is the custom marshaler for LoginScopes.
13607func (ls LoginScopes) MarshalJSON() ([]byte, error) {
13608	objectMap := make(map[string]interface{})
13609	if ls.LoginScopesProperties != nil {
13610		objectMap["properties"] = ls.LoginScopesProperties
13611	}
13612	if ls.Kind != nil {
13613		objectMap["kind"] = ls.Kind
13614	}
13615	return json.Marshal(objectMap)
13616}
13617
13618// UnmarshalJSON is the custom unmarshaler for LoginScopes struct.
13619func (ls *LoginScopes) UnmarshalJSON(body []byte) error {
13620	var m map[string]*json.RawMessage
13621	err := json.Unmarshal(body, &m)
13622	if err != nil {
13623		return err
13624	}
13625	for k, v := range m {
13626		switch k {
13627		case "properties":
13628			if v != nil {
13629				var loginScopesProperties LoginScopesProperties
13630				err = json.Unmarshal(*v, &loginScopesProperties)
13631				if err != nil {
13632					return err
13633				}
13634				ls.LoginScopesProperties = &loginScopesProperties
13635			}
13636		case "id":
13637			if v != nil {
13638				var ID string
13639				err = json.Unmarshal(*v, &ID)
13640				if err != nil {
13641					return err
13642				}
13643				ls.ID = &ID
13644			}
13645		case "name":
13646			if v != nil {
13647				var name string
13648				err = json.Unmarshal(*v, &name)
13649				if err != nil {
13650					return err
13651				}
13652				ls.Name = &name
13653			}
13654		case "kind":
13655			if v != nil {
13656				var kind string
13657				err = json.Unmarshal(*v, &kind)
13658				if err != nil {
13659					return err
13660				}
13661				ls.Kind = &kind
13662			}
13663		case "type":
13664			if v != nil {
13665				var typeVar string
13666				err = json.Unmarshal(*v, &typeVar)
13667				if err != nil {
13668					return err
13669				}
13670				ls.Type = &typeVar
13671			}
13672		}
13673	}
13674
13675	return nil
13676}
13677
13678// LoginScopesProperties loginScopes resource specific properties
13679type LoginScopesProperties struct {
13680	Scopes *[]string `json:"scopes,omitempty"`
13681}
13682
13683// LogSpecification log Definition of a single resource metric.
13684type LogSpecification struct {
13685	Name             *string `json:"name,omitempty"`
13686	DisplayName      *string `json:"displayName,omitempty"`
13687	BlobDuration     *string `json:"blobDuration,omitempty"`
13688	LogFilterPattern *string `json:"logFilterPattern,omitempty"`
13689}
13690
13691// ManagedServiceIdentity managed service identity.
13692type ManagedServiceIdentity struct {
13693	// Type - Type of managed service identity. Possible values include: 'ManagedServiceIdentityTypeSystemAssigned', 'ManagedServiceIdentityTypeUserAssigned', 'ManagedServiceIdentityTypeSystemAssignedUserAssigned', 'ManagedServiceIdentityTypeNone'
13694	Type ManagedServiceIdentityType `json:"type,omitempty"`
13695	// TenantID - READ-ONLY; Tenant of managed service identity.
13696	TenantID *string `json:"tenantId,omitempty"`
13697	// PrincipalID - READ-ONLY; Principal Id of managed service identity.
13698	PrincipalID *string `json:"principalId,omitempty"`
13699	// 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}
13700	UserAssignedIdentities map[string]*ManagedServiceIdentityUserAssignedIdentitiesValue `json:"userAssignedIdentities"`
13701}
13702
13703// MarshalJSON is the custom marshaler for ManagedServiceIdentity.
13704func (msi ManagedServiceIdentity) MarshalJSON() ([]byte, error) {
13705	objectMap := make(map[string]interface{})
13706	if msi.Type != "" {
13707		objectMap["type"] = msi.Type
13708	}
13709	if msi.UserAssignedIdentities != nil {
13710		objectMap["userAssignedIdentities"] = msi.UserAssignedIdentities
13711	}
13712	return json.Marshal(objectMap)
13713}
13714
13715// ManagedServiceIdentityUserAssignedIdentitiesValue ...
13716type ManagedServiceIdentityUserAssignedIdentitiesValue struct {
13717	// PrincipalID - READ-ONLY; Principal Id of user assigned identity
13718	PrincipalID *string `json:"principalId,omitempty"`
13719	// ClientID - READ-ONLY; Client Id of user assigned identity
13720	ClientID *string `json:"clientId,omitempty"`
13721}
13722
13723// MetricAvailability retention policy of a resource metric.
13724type MetricAvailability struct {
13725	TimeGrain    *string `json:"timeGrain,omitempty"`
13726	BlobDuration *string `json:"blobDuration,omitempty"`
13727}
13728
13729// MetricSpecification definition of a single resource metric.
13730type MetricSpecification struct {
13731	Name                             *string               `json:"name,omitempty"`
13732	DisplayName                      *string               `json:"displayName,omitempty"`
13733	DisplayDescription               *string               `json:"displayDescription,omitempty"`
13734	Unit                             *string               `json:"unit,omitempty"`
13735	AggregationType                  *string               `json:"aggregationType,omitempty"`
13736	SupportsInstanceLevelAggregation *bool                 `json:"supportsInstanceLevelAggregation,omitempty"`
13737	EnableRegionalMdmAccount         *bool                 `json:"enableRegionalMdmAccount,omitempty"`
13738	SourceMdmAccount                 *string               `json:"sourceMdmAccount,omitempty"`
13739	SourceMdmNamespace               *string               `json:"sourceMdmNamespace,omitempty"`
13740	MetricFilterPattern              *string               `json:"metricFilterPattern,omitempty"`
13741	FillGapWithZero                  *bool                 `json:"fillGapWithZero,omitempty"`
13742	IsInternal                       *bool                 `json:"isInternal,omitempty"`
13743	Dimensions                       *[]Dimension          `json:"dimensions,omitempty"`
13744	Category                         *string               `json:"category,omitempty"`
13745	Availabilities                   *[]MetricAvailability `json:"availabilities,omitempty"`
13746	SupportedTimeGrainTypes          *[]string             `json:"supportedTimeGrainTypes,omitempty"`
13747	SupportedAggregationTypes        *[]string             `json:"supportedAggregationTypes,omitempty"`
13748}
13749
13750// MigrateMySQLRequest mySQL migration request.
13751type MigrateMySQLRequest struct {
13752	// MigrateMySQLRequestProperties - MigrateMySqlRequest resource specific properties
13753	*MigrateMySQLRequestProperties `json:"properties,omitempty"`
13754	// ID - READ-ONLY; Resource Id.
13755	ID *string `json:"id,omitempty"`
13756	// Name - READ-ONLY; Resource Name.
13757	Name *string `json:"name,omitempty"`
13758	// Kind - Kind of resource.
13759	Kind *string `json:"kind,omitempty"`
13760	// Type - READ-ONLY; Resource type.
13761	Type *string `json:"type,omitempty"`
13762}
13763
13764// MarshalJSON is the custom marshaler for MigrateMySQLRequest.
13765func (mmsr MigrateMySQLRequest) MarshalJSON() ([]byte, error) {
13766	objectMap := make(map[string]interface{})
13767	if mmsr.MigrateMySQLRequestProperties != nil {
13768		objectMap["properties"] = mmsr.MigrateMySQLRequestProperties
13769	}
13770	if mmsr.Kind != nil {
13771		objectMap["kind"] = mmsr.Kind
13772	}
13773	return json.Marshal(objectMap)
13774}
13775
13776// UnmarshalJSON is the custom unmarshaler for MigrateMySQLRequest struct.
13777func (mmsr *MigrateMySQLRequest) UnmarshalJSON(body []byte) error {
13778	var m map[string]*json.RawMessage
13779	err := json.Unmarshal(body, &m)
13780	if err != nil {
13781		return err
13782	}
13783	for k, v := range m {
13784		switch k {
13785		case "properties":
13786			if v != nil {
13787				var migrateMySQLRequestProperties MigrateMySQLRequestProperties
13788				err = json.Unmarshal(*v, &migrateMySQLRequestProperties)
13789				if err != nil {
13790					return err
13791				}
13792				mmsr.MigrateMySQLRequestProperties = &migrateMySQLRequestProperties
13793			}
13794		case "id":
13795			if v != nil {
13796				var ID string
13797				err = json.Unmarshal(*v, &ID)
13798				if err != nil {
13799					return err
13800				}
13801				mmsr.ID = &ID
13802			}
13803		case "name":
13804			if v != nil {
13805				var name string
13806				err = json.Unmarshal(*v, &name)
13807				if err != nil {
13808					return err
13809				}
13810				mmsr.Name = &name
13811			}
13812		case "kind":
13813			if v != nil {
13814				var kind string
13815				err = json.Unmarshal(*v, &kind)
13816				if err != nil {
13817					return err
13818				}
13819				mmsr.Kind = &kind
13820			}
13821		case "type":
13822			if v != nil {
13823				var typeVar string
13824				err = json.Unmarshal(*v, &typeVar)
13825				if err != nil {
13826					return err
13827				}
13828				mmsr.Type = &typeVar
13829			}
13830		}
13831	}
13832
13833	return nil
13834}
13835
13836// MigrateMySQLRequestProperties migrateMySqlRequest resource specific properties
13837type MigrateMySQLRequestProperties struct {
13838	// ConnectionString - Connection string to the remote MySQL database.
13839	ConnectionString *string `json:"connectionString,omitempty"`
13840	// MigrationType - The type of migration operation to be done. Possible values include: 'LocalToRemote', 'RemoteToLocal'
13841	MigrationType MySQLMigrationType `json:"migrationType,omitempty"`
13842}
13843
13844// MigrateMySQLStatus mySQL migration status.
13845type MigrateMySQLStatus struct {
13846	autorest.Response `json:"-"`
13847	// MigrateMySQLStatusProperties - MigrateMySqlStatus resource specific properties
13848	*MigrateMySQLStatusProperties `json:"properties,omitempty"`
13849	// ID - READ-ONLY; Resource Id.
13850	ID *string `json:"id,omitempty"`
13851	// Name - READ-ONLY; Resource Name.
13852	Name *string `json:"name,omitempty"`
13853	// Kind - Kind of resource.
13854	Kind *string `json:"kind,omitempty"`
13855	// Type - READ-ONLY; Resource type.
13856	Type *string `json:"type,omitempty"`
13857}
13858
13859// MarshalJSON is the custom marshaler for MigrateMySQLStatus.
13860func (mmss MigrateMySQLStatus) MarshalJSON() ([]byte, error) {
13861	objectMap := make(map[string]interface{})
13862	if mmss.MigrateMySQLStatusProperties != nil {
13863		objectMap["properties"] = mmss.MigrateMySQLStatusProperties
13864	}
13865	if mmss.Kind != nil {
13866		objectMap["kind"] = mmss.Kind
13867	}
13868	return json.Marshal(objectMap)
13869}
13870
13871// UnmarshalJSON is the custom unmarshaler for MigrateMySQLStatus struct.
13872func (mmss *MigrateMySQLStatus) UnmarshalJSON(body []byte) error {
13873	var m map[string]*json.RawMessage
13874	err := json.Unmarshal(body, &m)
13875	if err != nil {
13876		return err
13877	}
13878	for k, v := range m {
13879		switch k {
13880		case "properties":
13881			if v != nil {
13882				var migrateMySQLStatusProperties MigrateMySQLStatusProperties
13883				err = json.Unmarshal(*v, &migrateMySQLStatusProperties)
13884				if err != nil {
13885					return err
13886				}
13887				mmss.MigrateMySQLStatusProperties = &migrateMySQLStatusProperties
13888			}
13889		case "id":
13890			if v != nil {
13891				var ID string
13892				err = json.Unmarshal(*v, &ID)
13893				if err != nil {
13894					return err
13895				}
13896				mmss.ID = &ID
13897			}
13898		case "name":
13899			if v != nil {
13900				var name string
13901				err = json.Unmarshal(*v, &name)
13902				if err != nil {
13903					return err
13904				}
13905				mmss.Name = &name
13906			}
13907		case "kind":
13908			if v != nil {
13909				var kind string
13910				err = json.Unmarshal(*v, &kind)
13911				if err != nil {
13912					return err
13913				}
13914				mmss.Kind = &kind
13915			}
13916		case "type":
13917			if v != nil {
13918				var typeVar string
13919				err = json.Unmarshal(*v, &typeVar)
13920				if err != nil {
13921					return err
13922				}
13923				mmss.Type = &typeVar
13924			}
13925		}
13926	}
13927
13928	return nil
13929}
13930
13931// MigrateMySQLStatusProperties migrateMySqlStatus resource specific properties
13932type MigrateMySQLStatusProperties struct {
13933	// MigrationOperationStatus - READ-ONLY; Status of the migration task. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
13934	MigrationOperationStatus OperationStatus `json:"migrationOperationStatus,omitempty"`
13935	// OperationID - READ-ONLY; Operation ID for the migration task.
13936	OperationID *string `json:"operationId,omitempty"`
13937	// LocalMySQLEnabled - READ-ONLY; True if the web app has in app MySql enabled
13938	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
13939}
13940
13941// MSDeploy mSDeploy ARM PUT information
13942type MSDeploy struct {
13943	// MSDeployCore - Core resource properties
13944	*MSDeployCore `json:"properties,omitempty"`
13945	// ID - READ-ONLY; Resource Id.
13946	ID *string `json:"id,omitempty"`
13947	// Name - READ-ONLY; Resource Name.
13948	Name *string `json:"name,omitempty"`
13949	// Kind - Kind of resource.
13950	Kind *string `json:"kind,omitempty"`
13951	// Type - READ-ONLY; Resource type.
13952	Type *string `json:"type,omitempty"`
13953}
13954
13955// MarshalJSON is the custom marshaler for MSDeploy.
13956func (md MSDeploy) MarshalJSON() ([]byte, error) {
13957	objectMap := make(map[string]interface{})
13958	if md.MSDeployCore != nil {
13959		objectMap["properties"] = md.MSDeployCore
13960	}
13961	if md.Kind != nil {
13962		objectMap["kind"] = md.Kind
13963	}
13964	return json.Marshal(objectMap)
13965}
13966
13967// UnmarshalJSON is the custom unmarshaler for MSDeploy struct.
13968func (md *MSDeploy) UnmarshalJSON(body []byte) error {
13969	var m map[string]*json.RawMessage
13970	err := json.Unmarshal(body, &m)
13971	if err != nil {
13972		return err
13973	}
13974	for k, v := range m {
13975		switch k {
13976		case "properties":
13977			if v != nil {
13978				var mSDeployCore MSDeployCore
13979				err = json.Unmarshal(*v, &mSDeployCore)
13980				if err != nil {
13981					return err
13982				}
13983				md.MSDeployCore = &mSDeployCore
13984			}
13985		case "id":
13986			if v != nil {
13987				var ID string
13988				err = json.Unmarshal(*v, &ID)
13989				if err != nil {
13990					return err
13991				}
13992				md.ID = &ID
13993			}
13994		case "name":
13995			if v != nil {
13996				var name string
13997				err = json.Unmarshal(*v, &name)
13998				if err != nil {
13999					return err
14000				}
14001				md.Name = &name
14002			}
14003		case "kind":
14004			if v != nil {
14005				var kind string
14006				err = json.Unmarshal(*v, &kind)
14007				if err != nil {
14008					return err
14009				}
14010				md.Kind = &kind
14011			}
14012		case "type":
14013			if v != nil {
14014				var typeVar string
14015				err = json.Unmarshal(*v, &typeVar)
14016				if err != nil {
14017					return err
14018				}
14019				md.Type = &typeVar
14020			}
14021		}
14022	}
14023
14024	return nil
14025}
14026
14027// MSDeployCore mSDeploy ARM PUT core information
14028type MSDeployCore struct {
14029	// PackageURI - Package URI
14030	PackageURI *string `json:"packageUri,omitempty"`
14031	// ConnectionString - SQL Connection String
14032	ConnectionString *string `json:"connectionString,omitempty"`
14033	// DbType - Database Type
14034	DbType *string `json:"dbType,omitempty"`
14035	// SetParametersXMLFileURI - URI of MSDeploy Parameters file. Must not be set if SetParameters is used.
14036	SetParametersXMLFileURI *string `json:"setParametersXmlFileUri,omitempty"`
14037	// SetParameters - MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used.
14038	SetParameters map[string]*string `json:"setParameters"`
14039	// SkipAppData - Controls whether the MSDeploy operation skips the App_Data directory.
14040	// If set to <code>true</code>, the existing App_Data directory on the destination
14041	// will not be deleted, and any App_Data directory in the source will be ignored.
14042	// Setting is <code>false</code> by default.
14043	SkipAppData *bool `json:"skipAppData,omitempty"`
14044	// AppOffline - Sets the AppOffline rule while the MSDeploy operation executes.
14045	// Setting is <code>false</code> by default.
14046	AppOffline *bool `json:"appOffline,omitempty"`
14047}
14048
14049// MarshalJSON is the custom marshaler for MSDeployCore.
14050func (mdc MSDeployCore) MarshalJSON() ([]byte, error) {
14051	objectMap := make(map[string]interface{})
14052	if mdc.PackageURI != nil {
14053		objectMap["packageUri"] = mdc.PackageURI
14054	}
14055	if mdc.ConnectionString != nil {
14056		objectMap["connectionString"] = mdc.ConnectionString
14057	}
14058	if mdc.DbType != nil {
14059		objectMap["dbType"] = mdc.DbType
14060	}
14061	if mdc.SetParametersXMLFileURI != nil {
14062		objectMap["setParametersXmlFileUri"] = mdc.SetParametersXMLFileURI
14063	}
14064	if mdc.SetParameters != nil {
14065		objectMap["setParameters"] = mdc.SetParameters
14066	}
14067	if mdc.SkipAppData != nil {
14068		objectMap["skipAppData"] = mdc.SkipAppData
14069	}
14070	if mdc.AppOffline != nil {
14071		objectMap["appOffline"] = mdc.AppOffline
14072	}
14073	return json.Marshal(objectMap)
14074}
14075
14076// MSDeployLog mSDeploy log
14077type MSDeployLog struct {
14078	autorest.Response `json:"-"`
14079	// MSDeployLogProperties - MSDeployLog resource specific properties
14080	*MSDeployLogProperties `json:"properties,omitempty"`
14081	// ID - READ-ONLY; Resource Id.
14082	ID *string `json:"id,omitempty"`
14083	// Name - READ-ONLY; Resource Name.
14084	Name *string `json:"name,omitempty"`
14085	// Kind - Kind of resource.
14086	Kind *string `json:"kind,omitempty"`
14087	// Type - READ-ONLY; Resource type.
14088	Type *string `json:"type,omitempty"`
14089}
14090
14091// MarshalJSON is the custom marshaler for MSDeployLog.
14092func (mdl MSDeployLog) MarshalJSON() ([]byte, error) {
14093	objectMap := make(map[string]interface{})
14094	if mdl.MSDeployLogProperties != nil {
14095		objectMap["properties"] = mdl.MSDeployLogProperties
14096	}
14097	if mdl.Kind != nil {
14098		objectMap["kind"] = mdl.Kind
14099	}
14100	return json.Marshal(objectMap)
14101}
14102
14103// UnmarshalJSON is the custom unmarshaler for MSDeployLog struct.
14104func (mdl *MSDeployLog) UnmarshalJSON(body []byte) error {
14105	var m map[string]*json.RawMessage
14106	err := json.Unmarshal(body, &m)
14107	if err != nil {
14108		return err
14109	}
14110	for k, v := range m {
14111		switch k {
14112		case "properties":
14113			if v != nil {
14114				var mSDeployLogProperties MSDeployLogProperties
14115				err = json.Unmarshal(*v, &mSDeployLogProperties)
14116				if err != nil {
14117					return err
14118				}
14119				mdl.MSDeployLogProperties = &mSDeployLogProperties
14120			}
14121		case "id":
14122			if v != nil {
14123				var ID string
14124				err = json.Unmarshal(*v, &ID)
14125				if err != nil {
14126					return err
14127				}
14128				mdl.ID = &ID
14129			}
14130		case "name":
14131			if v != nil {
14132				var name string
14133				err = json.Unmarshal(*v, &name)
14134				if err != nil {
14135					return err
14136				}
14137				mdl.Name = &name
14138			}
14139		case "kind":
14140			if v != nil {
14141				var kind string
14142				err = json.Unmarshal(*v, &kind)
14143				if err != nil {
14144					return err
14145				}
14146				mdl.Kind = &kind
14147			}
14148		case "type":
14149			if v != nil {
14150				var typeVar string
14151				err = json.Unmarshal(*v, &typeVar)
14152				if err != nil {
14153					return err
14154				}
14155				mdl.Type = &typeVar
14156			}
14157		}
14158	}
14159
14160	return nil
14161}
14162
14163// MSDeployLogEntry mSDeploy log entry
14164type MSDeployLogEntry struct {
14165	// Time - READ-ONLY; Timestamp of log entry
14166	Time *date.Time `json:"time,omitempty"`
14167	// Type - READ-ONLY; Log entry type. Possible values include: 'MSDeployLogEntryTypeMessage', 'MSDeployLogEntryTypeWarning', 'MSDeployLogEntryTypeError'
14168	Type MSDeployLogEntryType `json:"type,omitempty"`
14169	// Message - READ-ONLY; Log entry message
14170	Message *string `json:"message,omitempty"`
14171}
14172
14173// MSDeployLogProperties mSDeployLog resource specific properties
14174type MSDeployLogProperties struct {
14175	// Entries - READ-ONLY; List of log entry messages
14176	Entries *[]MSDeployLogEntry `json:"entries,omitempty"`
14177}
14178
14179// MSDeployStatus mSDeploy ARM response
14180type MSDeployStatus struct {
14181	autorest.Response `json:"-"`
14182	// MSDeployStatusProperties - MSDeployStatus resource specific properties
14183	*MSDeployStatusProperties `json:"properties,omitempty"`
14184	// ID - READ-ONLY; Resource Id.
14185	ID *string `json:"id,omitempty"`
14186	// Name - READ-ONLY; Resource Name.
14187	Name *string `json:"name,omitempty"`
14188	// Kind - Kind of resource.
14189	Kind *string `json:"kind,omitempty"`
14190	// Type - READ-ONLY; Resource type.
14191	Type *string `json:"type,omitempty"`
14192}
14193
14194// MarshalJSON is the custom marshaler for MSDeployStatus.
14195func (mds MSDeployStatus) MarshalJSON() ([]byte, error) {
14196	objectMap := make(map[string]interface{})
14197	if mds.MSDeployStatusProperties != nil {
14198		objectMap["properties"] = mds.MSDeployStatusProperties
14199	}
14200	if mds.Kind != nil {
14201		objectMap["kind"] = mds.Kind
14202	}
14203	return json.Marshal(objectMap)
14204}
14205
14206// UnmarshalJSON is the custom unmarshaler for MSDeployStatus struct.
14207func (mds *MSDeployStatus) UnmarshalJSON(body []byte) error {
14208	var m map[string]*json.RawMessage
14209	err := json.Unmarshal(body, &m)
14210	if err != nil {
14211		return err
14212	}
14213	for k, v := range m {
14214		switch k {
14215		case "properties":
14216			if v != nil {
14217				var mSDeployStatusProperties MSDeployStatusProperties
14218				err = json.Unmarshal(*v, &mSDeployStatusProperties)
14219				if err != nil {
14220					return err
14221				}
14222				mds.MSDeployStatusProperties = &mSDeployStatusProperties
14223			}
14224		case "id":
14225			if v != nil {
14226				var ID string
14227				err = json.Unmarshal(*v, &ID)
14228				if err != nil {
14229					return err
14230				}
14231				mds.ID = &ID
14232			}
14233		case "name":
14234			if v != nil {
14235				var name string
14236				err = json.Unmarshal(*v, &name)
14237				if err != nil {
14238					return err
14239				}
14240				mds.Name = &name
14241			}
14242		case "kind":
14243			if v != nil {
14244				var kind string
14245				err = json.Unmarshal(*v, &kind)
14246				if err != nil {
14247					return err
14248				}
14249				mds.Kind = &kind
14250			}
14251		case "type":
14252			if v != nil {
14253				var typeVar string
14254				err = json.Unmarshal(*v, &typeVar)
14255				if err != nil {
14256					return err
14257				}
14258				mds.Type = &typeVar
14259			}
14260		}
14261	}
14262
14263	return nil
14264}
14265
14266// MSDeployStatusProperties mSDeployStatus resource specific properties
14267type MSDeployStatusProperties struct {
14268	// Deployer - READ-ONLY; Username of deployer
14269	Deployer *string `json:"deployer,omitempty"`
14270	// ProvisioningState - READ-ONLY; Provisioning state. Possible values include: 'MSDeployProvisioningStateAccepted', 'MSDeployProvisioningStateRunning', 'MSDeployProvisioningStateSucceeded', 'MSDeployProvisioningStateFailed', 'MSDeployProvisioningStateCanceled'
14271	ProvisioningState MSDeployProvisioningState `json:"provisioningState,omitempty"`
14272	// StartTime - READ-ONLY; Start time of deploy operation
14273	StartTime *date.Time `json:"startTime,omitempty"`
14274	// EndTime - READ-ONLY; End time of deploy operation
14275	EndTime *date.Time `json:"endTime,omitempty"`
14276	// Complete - READ-ONLY; Whether the deployment operation has completed
14277	Complete *bool `json:"complete,omitempty"`
14278}
14279
14280// NameIdentifier identifies an object.
14281type NameIdentifier struct {
14282	// Name - Name of the object.
14283	Name *string `json:"name,omitempty"`
14284}
14285
14286// NameIdentifierCollection collection of domain name identifiers.
14287type NameIdentifierCollection struct {
14288	autorest.Response `json:"-"`
14289	// Value - Collection of resources.
14290	Value *[]NameIdentifier `json:"value,omitempty"`
14291	// NextLink - READ-ONLY; Link to next page of resources.
14292	NextLink *string `json:"nextLink,omitempty"`
14293}
14294
14295// MarshalJSON is the custom marshaler for NameIdentifierCollection.
14296func (nic NameIdentifierCollection) MarshalJSON() ([]byte, error) {
14297	objectMap := make(map[string]interface{})
14298	if nic.Value != nil {
14299		objectMap["value"] = nic.Value
14300	}
14301	return json.Marshal(objectMap)
14302}
14303
14304// NameIdentifierCollectionIterator provides access to a complete listing of NameIdentifier values.
14305type NameIdentifierCollectionIterator struct {
14306	i    int
14307	page NameIdentifierCollectionPage
14308}
14309
14310// NextWithContext advances to the next value.  If there was an error making
14311// the request the iterator does not advance and the error is returned.
14312func (iter *NameIdentifierCollectionIterator) NextWithContext(ctx context.Context) (err error) {
14313	if tracing.IsEnabled() {
14314		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionIterator.NextWithContext")
14315		defer func() {
14316			sc := -1
14317			if iter.Response().Response.Response != nil {
14318				sc = iter.Response().Response.Response.StatusCode
14319			}
14320			tracing.EndSpan(ctx, sc, err)
14321		}()
14322	}
14323	iter.i++
14324	if iter.i < len(iter.page.Values()) {
14325		return nil
14326	}
14327	err = iter.page.NextWithContext(ctx)
14328	if err != nil {
14329		iter.i--
14330		return err
14331	}
14332	iter.i = 0
14333	return nil
14334}
14335
14336// Next advances to the next value.  If there was an error making
14337// the request the iterator does not advance and the error is returned.
14338// Deprecated: Use NextWithContext() instead.
14339func (iter *NameIdentifierCollectionIterator) Next() error {
14340	return iter.NextWithContext(context.Background())
14341}
14342
14343// NotDone returns true if the enumeration should be started or is not yet complete.
14344func (iter NameIdentifierCollectionIterator) NotDone() bool {
14345	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14346}
14347
14348// Response returns the raw server response from the last page request.
14349func (iter NameIdentifierCollectionIterator) Response() NameIdentifierCollection {
14350	return iter.page.Response()
14351}
14352
14353// Value returns the current value or a zero-initialized value if the
14354// iterator has advanced beyond the end of the collection.
14355func (iter NameIdentifierCollectionIterator) Value() NameIdentifier {
14356	if !iter.page.NotDone() {
14357		return NameIdentifier{}
14358	}
14359	return iter.page.Values()[iter.i]
14360}
14361
14362// Creates a new instance of the NameIdentifierCollectionIterator type.
14363func NewNameIdentifierCollectionIterator(page NameIdentifierCollectionPage) NameIdentifierCollectionIterator {
14364	return NameIdentifierCollectionIterator{page: page}
14365}
14366
14367// IsEmpty returns true if the ListResult contains no values.
14368func (nic NameIdentifierCollection) IsEmpty() bool {
14369	return nic.Value == nil || len(*nic.Value) == 0
14370}
14371
14372// hasNextLink returns true if the NextLink is not empty.
14373func (nic NameIdentifierCollection) hasNextLink() bool {
14374	return nic.NextLink != nil && len(*nic.NextLink) != 0
14375}
14376
14377// nameIdentifierCollectionPreparer prepares a request to retrieve the next set of results.
14378// It returns nil if no more results exist.
14379func (nic NameIdentifierCollection) nameIdentifierCollectionPreparer(ctx context.Context) (*http.Request, error) {
14380	if !nic.hasNextLink() {
14381		return nil, nil
14382	}
14383	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14384		autorest.AsJSON(),
14385		autorest.AsGet(),
14386		autorest.WithBaseURL(to.String(nic.NextLink)))
14387}
14388
14389// NameIdentifierCollectionPage contains a page of NameIdentifier values.
14390type NameIdentifierCollectionPage struct {
14391	fn  func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)
14392	nic NameIdentifierCollection
14393}
14394
14395// NextWithContext advances to the next page of values.  If there was an error making
14396// the request the page does not advance and the error is returned.
14397func (page *NameIdentifierCollectionPage) NextWithContext(ctx context.Context) (err error) {
14398	if tracing.IsEnabled() {
14399		ctx = tracing.StartSpan(ctx, fqdn+"/NameIdentifierCollectionPage.NextWithContext")
14400		defer func() {
14401			sc := -1
14402			if page.Response().Response.Response != nil {
14403				sc = page.Response().Response.Response.StatusCode
14404			}
14405			tracing.EndSpan(ctx, sc, err)
14406		}()
14407	}
14408	for {
14409		next, err := page.fn(ctx, page.nic)
14410		if err != nil {
14411			return err
14412		}
14413		page.nic = next
14414		if !next.hasNextLink() || !next.IsEmpty() {
14415			break
14416		}
14417	}
14418	return nil
14419}
14420
14421// Next advances to the next page of values.  If there was an error making
14422// the request the page does not advance and the error is returned.
14423// Deprecated: Use NextWithContext() instead.
14424func (page *NameIdentifierCollectionPage) Next() error {
14425	return page.NextWithContext(context.Background())
14426}
14427
14428// NotDone returns true if the page enumeration should be started or is not yet complete.
14429func (page NameIdentifierCollectionPage) NotDone() bool {
14430	return !page.nic.IsEmpty()
14431}
14432
14433// Response returns the raw server response from the last page request.
14434func (page NameIdentifierCollectionPage) Response() NameIdentifierCollection {
14435	return page.nic
14436}
14437
14438// Values returns the slice of values for the current page or nil if there are no values.
14439func (page NameIdentifierCollectionPage) Values() []NameIdentifier {
14440	if page.nic.IsEmpty() {
14441		return nil
14442	}
14443	return *page.nic.Value
14444}
14445
14446// Creates a new instance of the NameIdentifierCollectionPage type.
14447func NewNameIdentifierCollectionPage(cur NameIdentifierCollection, getNextPage func(context.Context, NameIdentifierCollection) (NameIdentifierCollection, error)) NameIdentifierCollectionPage {
14448	return NameIdentifierCollectionPage{
14449		fn:  getNextPage,
14450		nic: cur,
14451	}
14452}
14453
14454// NameValuePair name value pair.
14455type NameValuePair struct {
14456	// Name - Pair name.
14457	Name *string `json:"name,omitempty"`
14458	// Value - Pair value.
14459	Value *string `json:"value,omitempty"`
14460}
14461
14462// NetworkAccessControlEntry network access control entry.
14463type NetworkAccessControlEntry struct {
14464	// Action - Action object. Possible values include: 'Permit', 'Deny'
14465	Action AccessControlEntryAction `json:"action,omitempty"`
14466	// Description - Description of network access control entry.
14467	Description *string `json:"description,omitempty"`
14468	// Order - Order of precedence.
14469	Order *int32 `json:"order,omitempty"`
14470	// RemoteSubnet - Remote subnet.
14471	RemoteSubnet *string `json:"remoteSubnet,omitempty"`
14472}
14473
14474// NetworkFeatures full view of network features for an app (presently VNET integration and Hybrid
14475// Connections).
14476type NetworkFeatures struct {
14477	autorest.Response `json:"-"`
14478	// NetworkFeaturesProperties - NetworkFeatures resource specific properties
14479	*NetworkFeaturesProperties `json:"properties,omitempty"`
14480	// ID - READ-ONLY; Resource Id.
14481	ID *string `json:"id,omitempty"`
14482	// Name - READ-ONLY; Resource Name.
14483	Name *string `json:"name,omitempty"`
14484	// Kind - Kind of resource.
14485	Kind *string `json:"kind,omitempty"`
14486	// Type - READ-ONLY; Resource type.
14487	Type *string `json:"type,omitempty"`
14488}
14489
14490// MarshalJSON is the custom marshaler for NetworkFeatures.
14491func (nf NetworkFeatures) MarshalJSON() ([]byte, error) {
14492	objectMap := make(map[string]interface{})
14493	if nf.NetworkFeaturesProperties != nil {
14494		objectMap["properties"] = nf.NetworkFeaturesProperties
14495	}
14496	if nf.Kind != nil {
14497		objectMap["kind"] = nf.Kind
14498	}
14499	return json.Marshal(objectMap)
14500}
14501
14502// UnmarshalJSON is the custom unmarshaler for NetworkFeatures struct.
14503func (nf *NetworkFeatures) UnmarshalJSON(body []byte) error {
14504	var m map[string]*json.RawMessage
14505	err := json.Unmarshal(body, &m)
14506	if err != nil {
14507		return err
14508	}
14509	for k, v := range m {
14510		switch k {
14511		case "properties":
14512			if v != nil {
14513				var networkFeaturesProperties NetworkFeaturesProperties
14514				err = json.Unmarshal(*v, &networkFeaturesProperties)
14515				if err != nil {
14516					return err
14517				}
14518				nf.NetworkFeaturesProperties = &networkFeaturesProperties
14519			}
14520		case "id":
14521			if v != nil {
14522				var ID string
14523				err = json.Unmarshal(*v, &ID)
14524				if err != nil {
14525					return err
14526				}
14527				nf.ID = &ID
14528			}
14529		case "name":
14530			if v != nil {
14531				var name string
14532				err = json.Unmarshal(*v, &name)
14533				if err != nil {
14534					return err
14535				}
14536				nf.Name = &name
14537			}
14538		case "kind":
14539			if v != nil {
14540				var kind string
14541				err = json.Unmarshal(*v, &kind)
14542				if err != nil {
14543					return err
14544				}
14545				nf.Kind = &kind
14546			}
14547		case "type":
14548			if v != nil {
14549				var typeVar string
14550				err = json.Unmarshal(*v, &typeVar)
14551				if err != nil {
14552					return err
14553				}
14554				nf.Type = &typeVar
14555			}
14556		}
14557	}
14558
14559	return nil
14560}
14561
14562// NetworkFeaturesProperties networkFeatures resource specific properties
14563type NetworkFeaturesProperties struct {
14564	// VirtualNetworkName - READ-ONLY; The Virtual Network name.
14565	VirtualNetworkName *string `json:"virtualNetworkName,omitempty"`
14566	// VirtualNetworkConnection - READ-ONLY; The Virtual Network summary view.
14567	VirtualNetworkConnection *VnetInfo `json:"virtualNetworkConnection,omitempty"`
14568	// HybridConnections - READ-ONLY; The Hybrid Connections summary view.
14569	HybridConnections *[]RelayServiceConnectionEntity `json:"hybridConnections,omitempty"`
14570	// HybridConnectionsV2 - READ-ONLY; The Hybrid Connection V2 (Service Bus) view.
14571	HybridConnectionsV2 *[]HybridConnection `json:"hybridConnectionsV2,omitempty"`
14572}
14573
14574// NetworkTrace network trace
14575type NetworkTrace struct {
14576	// Path - Local file path for the captured network trace file.
14577	Path *string `json:"path,omitempty"`
14578	// Status - Current status of the network trace operation, same as Operation.Status (InProgress/Succeeded/Failed).
14579	Status *string `json:"status,omitempty"`
14580	// Message - Detailed message of a network trace operation, e.g. error message in case of failure.
14581	Message *string `json:"message,omitempty"`
14582}
14583
14584// Nonce ...
14585type Nonce struct {
14586	// NonceProperties - Nonce resource specific properties
14587	*NonceProperties `json:"properties,omitempty"`
14588	// ID - READ-ONLY; Resource Id.
14589	ID *string `json:"id,omitempty"`
14590	// Name - READ-ONLY; Resource Name.
14591	Name *string `json:"name,omitempty"`
14592	// Kind - Kind of resource.
14593	Kind *string `json:"kind,omitempty"`
14594	// Type - READ-ONLY; Resource type.
14595	Type *string `json:"type,omitempty"`
14596}
14597
14598// MarshalJSON is the custom marshaler for Nonce.
14599func (n Nonce) MarshalJSON() ([]byte, error) {
14600	objectMap := make(map[string]interface{})
14601	if n.NonceProperties != nil {
14602		objectMap["properties"] = n.NonceProperties
14603	}
14604	if n.Kind != nil {
14605		objectMap["kind"] = n.Kind
14606	}
14607	return json.Marshal(objectMap)
14608}
14609
14610// UnmarshalJSON is the custom unmarshaler for Nonce struct.
14611func (n *Nonce) UnmarshalJSON(body []byte) error {
14612	var m map[string]*json.RawMessage
14613	err := json.Unmarshal(body, &m)
14614	if err != nil {
14615		return err
14616	}
14617	for k, v := range m {
14618		switch k {
14619		case "properties":
14620			if v != nil {
14621				var nonceProperties NonceProperties
14622				err = json.Unmarshal(*v, &nonceProperties)
14623				if err != nil {
14624					return err
14625				}
14626				n.NonceProperties = &nonceProperties
14627			}
14628		case "id":
14629			if v != nil {
14630				var ID string
14631				err = json.Unmarshal(*v, &ID)
14632				if err != nil {
14633					return err
14634				}
14635				n.ID = &ID
14636			}
14637		case "name":
14638			if v != nil {
14639				var name string
14640				err = json.Unmarshal(*v, &name)
14641				if err != nil {
14642					return err
14643				}
14644				n.Name = &name
14645			}
14646		case "kind":
14647			if v != nil {
14648				var kind string
14649				err = json.Unmarshal(*v, &kind)
14650				if err != nil {
14651					return err
14652				}
14653				n.Kind = &kind
14654			}
14655		case "type":
14656			if v != nil {
14657				var typeVar string
14658				err = json.Unmarshal(*v, &typeVar)
14659				if err != nil {
14660					return err
14661				}
14662				n.Type = &typeVar
14663			}
14664		}
14665	}
14666
14667	return nil
14668}
14669
14670// NonceProperties nonce resource specific properties
14671type NonceProperties struct {
14672	ValidateNonce           *bool   `json:"validateNonce,omitempty"`
14673	NonceExpirationInterval *string `json:"nonceExpirationInterval,omitempty"`
14674}
14675
14676// OpenIDConnectClientCredential ...
14677type OpenIDConnectClientCredential struct {
14678	// OpenIDConnectClientCredentialProperties - OpenIdConnectClientCredential resource specific properties
14679	*OpenIDConnectClientCredentialProperties `json:"properties,omitempty"`
14680	// ID - READ-ONLY; Resource Id.
14681	ID *string `json:"id,omitempty"`
14682	// Name - READ-ONLY; Resource Name.
14683	Name *string `json:"name,omitempty"`
14684	// Kind - Kind of resource.
14685	Kind *string `json:"kind,omitempty"`
14686	// Type - READ-ONLY; Resource type.
14687	Type *string `json:"type,omitempty"`
14688}
14689
14690// MarshalJSON is the custom marshaler for OpenIDConnectClientCredential.
14691func (oiccc OpenIDConnectClientCredential) MarshalJSON() ([]byte, error) {
14692	objectMap := make(map[string]interface{})
14693	if oiccc.OpenIDConnectClientCredentialProperties != nil {
14694		objectMap["properties"] = oiccc.OpenIDConnectClientCredentialProperties
14695	}
14696	if oiccc.Kind != nil {
14697		objectMap["kind"] = oiccc.Kind
14698	}
14699	return json.Marshal(objectMap)
14700}
14701
14702// UnmarshalJSON is the custom unmarshaler for OpenIDConnectClientCredential struct.
14703func (oiccc *OpenIDConnectClientCredential) UnmarshalJSON(body []byte) error {
14704	var m map[string]*json.RawMessage
14705	err := json.Unmarshal(body, &m)
14706	if err != nil {
14707		return err
14708	}
14709	for k, v := range m {
14710		switch k {
14711		case "properties":
14712			if v != nil {
14713				var openIDConnectClientCredentialProperties OpenIDConnectClientCredentialProperties
14714				err = json.Unmarshal(*v, &openIDConnectClientCredentialProperties)
14715				if err != nil {
14716					return err
14717				}
14718				oiccc.OpenIDConnectClientCredentialProperties = &openIDConnectClientCredentialProperties
14719			}
14720		case "id":
14721			if v != nil {
14722				var ID string
14723				err = json.Unmarshal(*v, &ID)
14724				if err != nil {
14725					return err
14726				}
14727				oiccc.ID = &ID
14728			}
14729		case "name":
14730			if v != nil {
14731				var name string
14732				err = json.Unmarshal(*v, &name)
14733				if err != nil {
14734					return err
14735				}
14736				oiccc.Name = &name
14737			}
14738		case "kind":
14739			if v != nil {
14740				var kind string
14741				err = json.Unmarshal(*v, &kind)
14742				if err != nil {
14743					return err
14744				}
14745				oiccc.Kind = &kind
14746			}
14747		case "type":
14748			if v != nil {
14749				var typeVar string
14750				err = json.Unmarshal(*v, &typeVar)
14751				if err != nil {
14752					return err
14753				}
14754				oiccc.Type = &typeVar
14755			}
14756		}
14757	}
14758
14759	return nil
14760}
14761
14762// OpenIDConnectClientCredentialProperties openIdConnectClientCredential resource specific properties
14763type OpenIDConnectClientCredentialProperties struct {
14764	// Method - Possible values include: 'ClientSecretPost'
14765	Method                  ClientCredentialMethod `json:"method,omitempty"`
14766	ClientSecretSettingName *string                `json:"clientSecretSettingName,omitempty"`
14767}
14768
14769// OpenIDConnectConfig ...
14770type OpenIDConnectConfig struct {
14771	// OpenIDConnectConfigProperties - OpenIdConnectConfig resource specific properties
14772	*OpenIDConnectConfigProperties `json:"properties,omitempty"`
14773	// ID - READ-ONLY; Resource Id.
14774	ID *string `json:"id,omitempty"`
14775	// Name - READ-ONLY; Resource Name.
14776	Name *string `json:"name,omitempty"`
14777	// Kind - Kind of resource.
14778	Kind *string `json:"kind,omitempty"`
14779	// Type - READ-ONLY; Resource type.
14780	Type *string `json:"type,omitempty"`
14781}
14782
14783// MarshalJSON is the custom marshaler for OpenIDConnectConfig.
14784func (oicc OpenIDConnectConfig) MarshalJSON() ([]byte, error) {
14785	objectMap := make(map[string]interface{})
14786	if oicc.OpenIDConnectConfigProperties != nil {
14787		objectMap["properties"] = oicc.OpenIDConnectConfigProperties
14788	}
14789	if oicc.Kind != nil {
14790		objectMap["kind"] = oicc.Kind
14791	}
14792	return json.Marshal(objectMap)
14793}
14794
14795// UnmarshalJSON is the custom unmarshaler for OpenIDConnectConfig struct.
14796func (oicc *OpenIDConnectConfig) UnmarshalJSON(body []byte) error {
14797	var m map[string]*json.RawMessage
14798	err := json.Unmarshal(body, &m)
14799	if err != nil {
14800		return err
14801	}
14802	for k, v := range m {
14803		switch k {
14804		case "properties":
14805			if v != nil {
14806				var openIDConnectConfigProperties OpenIDConnectConfigProperties
14807				err = json.Unmarshal(*v, &openIDConnectConfigProperties)
14808				if err != nil {
14809					return err
14810				}
14811				oicc.OpenIDConnectConfigProperties = &openIDConnectConfigProperties
14812			}
14813		case "id":
14814			if v != nil {
14815				var ID string
14816				err = json.Unmarshal(*v, &ID)
14817				if err != nil {
14818					return err
14819				}
14820				oicc.ID = &ID
14821			}
14822		case "name":
14823			if v != nil {
14824				var name string
14825				err = json.Unmarshal(*v, &name)
14826				if err != nil {
14827					return err
14828				}
14829				oicc.Name = &name
14830			}
14831		case "kind":
14832			if v != nil {
14833				var kind string
14834				err = json.Unmarshal(*v, &kind)
14835				if err != nil {
14836					return err
14837				}
14838				oicc.Kind = &kind
14839			}
14840		case "type":
14841			if v != nil {
14842				var typeVar string
14843				err = json.Unmarshal(*v, &typeVar)
14844				if err != nil {
14845					return err
14846				}
14847				oicc.Type = &typeVar
14848			}
14849		}
14850	}
14851
14852	return nil
14853}
14854
14855// OpenIDConnectConfigProperties openIdConnectConfig resource specific properties
14856type OpenIDConnectConfigProperties struct {
14857	AuthorizationEndpoint        *string `json:"authorizationEndpoint,omitempty"`
14858	TokenEndpoint                *string `json:"tokenEndpoint,omitempty"`
14859	Issuer                       *string `json:"issuer,omitempty"`
14860	CertificationURI             *string `json:"certificationUri,omitempty"`
14861	WellKnownOpenIDConfiguration *string `json:"wellKnownOpenIdConfiguration,omitempty"`
14862}
14863
14864// OpenIDConnectLogin ...
14865type OpenIDConnectLogin struct {
14866	// OpenIDConnectLoginProperties - OpenIdConnectLogin resource specific properties
14867	*OpenIDConnectLoginProperties `json:"properties,omitempty"`
14868	// ID - READ-ONLY; Resource Id.
14869	ID *string `json:"id,omitempty"`
14870	// Name - READ-ONLY; Resource Name.
14871	Name *string `json:"name,omitempty"`
14872	// Kind - Kind of resource.
14873	Kind *string `json:"kind,omitempty"`
14874	// Type - READ-ONLY; Resource type.
14875	Type *string `json:"type,omitempty"`
14876}
14877
14878// MarshalJSON is the custom marshaler for OpenIDConnectLogin.
14879func (oicl OpenIDConnectLogin) MarshalJSON() ([]byte, error) {
14880	objectMap := make(map[string]interface{})
14881	if oicl.OpenIDConnectLoginProperties != nil {
14882		objectMap["properties"] = oicl.OpenIDConnectLoginProperties
14883	}
14884	if oicl.Kind != nil {
14885		objectMap["kind"] = oicl.Kind
14886	}
14887	return json.Marshal(objectMap)
14888}
14889
14890// UnmarshalJSON is the custom unmarshaler for OpenIDConnectLogin struct.
14891func (oicl *OpenIDConnectLogin) UnmarshalJSON(body []byte) error {
14892	var m map[string]*json.RawMessage
14893	err := json.Unmarshal(body, &m)
14894	if err != nil {
14895		return err
14896	}
14897	for k, v := range m {
14898		switch k {
14899		case "properties":
14900			if v != nil {
14901				var openIDConnectLoginProperties OpenIDConnectLoginProperties
14902				err = json.Unmarshal(*v, &openIDConnectLoginProperties)
14903				if err != nil {
14904					return err
14905				}
14906				oicl.OpenIDConnectLoginProperties = &openIDConnectLoginProperties
14907			}
14908		case "id":
14909			if v != nil {
14910				var ID string
14911				err = json.Unmarshal(*v, &ID)
14912				if err != nil {
14913					return err
14914				}
14915				oicl.ID = &ID
14916			}
14917		case "name":
14918			if v != nil {
14919				var name string
14920				err = json.Unmarshal(*v, &name)
14921				if err != nil {
14922					return err
14923				}
14924				oicl.Name = &name
14925			}
14926		case "kind":
14927			if v != nil {
14928				var kind string
14929				err = json.Unmarshal(*v, &kind)
14930				if err != nil {
14931					return err
14932				}
14933				oicl.Kind = &kind
14934			}
14935		case "type":
14936			if v != nil {
14937				var typeVar string
14938				err = json.Unmarshal(*v, &typeVar)
14939				if err != nil {
14940					return err
14941				}
14942				oicl.Type = &typeVar
14943			}
14944		}
14945	}
14946
14947	return nil
14948}
14949
14950// OpenIDConnectLoginProperties openIdConnectLogin resource specific properties
14951type OpenIDConnectLoginProperties struct {
14952	NameClaimType *string   `json:"nameClaimType,omitempty"`
14953	Scopes        *[]string `json:"scopes,omitempty"`
14954}
14955
14956// OpenIDConnectRegistration ...
14957type OpenIDConnectRegistration struct {
14958	// OpenIDConnectRegistrationProperties - OpenIdConnectRegistration resource specific properties
14959	*OpenIDConnectRegistrationProperties `json:"properties,omitempty"`
14960	// ID - READ-ONLY; Resource Id.
14961	ID *string `json:"id,omitempty"`
14962	// Name - READ-ONLY; Resource Name.
14963	Name *string `json:"name,omitempty"`
14964	// Kind - Kind of resource.
14965	Kind *string `json:"kind,omitempty"`
14966	// Type - READ-ONLY; Resource type.
14967	Type *string `json:"type,omitempty"`
14968}
14969
14970// MarshalJSON is the custom marshaler for OpenIDConnectRegistration.
14971func (oicr OpenIDConnectRegistration) MarshalJSON() ([]byte, error) {
14972	objectMap := make(map[string]interface{})
14973	if oicr.OpenIDConnectRegistrationProperties != nil {
14974		objectMap["properties"] = oicr.OpenIDConnectRegistrationProperties
14975	}
14976	if oicr.Kind != nil {
14977		objectMap["kind"] = oicr.Kind
14978	}
14979	return json.Marshal(objectMap)
14980}
14981
14982// UnmarshalJSON is the custom unmarshaler for OpenIDConnectRegistration struct.
14983func (oicr *OpenIDConnectRegistration) UnmarshalJSON(body []byte) error {
14984	var m map[string]*json.RawMessage
14985	err := json.Unmarshal(body, &m)
14986	if err != nil {
14987		return err
14988	}
14989	for k, v := range m {
14990		switch k {
14991		case "properties":
14992			if v != nil {
14993				var openIDConnectRegistrationProperties OpenIDConnectRegistrationProperties
14994				err = json.Unmarshal(*v, &openIDConnectRegistrationProperties)
14995				if err != nil {
14996					return err
14997				}
14998				oicr.OpenIDConnectRegistrationProperties = &openIDConnectRegistrationProperties
14999			}
15000		case "id":
15001			if v != nil {
15002				var ID string
15003				err = json.Unmarshal(*v, &ID)
15004				if err != nil {
15005					return err
15006				}
15007				oicr.ID = &ID
15008			}
15009		case "name":
15010			if v != nil {
15011				var name string
15012				err = json.Unmarshal(*v, &name)
15013				if err != nil {
15014					return err
15015				}
15016				oicr.Name = &name
15017			}
15018		case "kind":
15019			if v != nil {
15020				var kind string
15021				err = json.Unmarshal(*v, &kind)
15022				if err != nil {
15023					return err
15024				}
15025				oicr.Kind = &kind
15026			}
15027		case "type":
15028			if v != nil {
15029				var typeVar string
15030				err = json.Unmarshal(*v, &typeVar)
15031				if err != nil {
15032					return err
15033				}
15034				oicr.Type = &typeVar
15035			}
15036		}
15037	}
15038
15039	return nil
15040}
15041
15042// OpenIDConnectRegistrationProperties openIdConnectRegistration resource specific properties
15043type OpenIDConnectRegistrationProperties struct {
15044	ClientID                   *string                        `json:"clientId,omitempty"`
15045	ClientCredential           *OpenIDConnectClientCredential `json:"clientCredential,omitempty"`
15046	OpenIDConnectConfiguration *OpenIDConnectConfig           `json:"openIdConnectConfiguration,omitempty"`
15047}
15048
15049// Operation an operation on a resource.
15050type Operation struct {
15051	autorest.Response `json:"-"`
15052	// ID - Operation ID.
15053	ID *string `json:"id,omitempty"`
15054	// Name - Operation name.
15055	Name *string `json:"name,omitempty"`
15056	// Status - The current status of the operation. Possible values include: 'OperationStatusInProgress', 'OperationStatusFailed', 'OperationStatusSucceeded', 'OperationStatusTimedOut', 'OperationStatusCreated'
15057	Status OperationStatus `json:"status,omitempty"`
15058	// Errors - Any errors associate with the operation.
15059	Errors *[]ErrorEntity `json:"errors,omitempty"`
15060	// CreatedTime - Time when operation has started.
15061	CreatedTime *date.Time `json:"createdTime,omitempty"`
15062	// ModifiedTime - Time when operation has been updated.
15063	ModifiedTime *date.Time `json:"modifiedTime,omitempty"`
15064	// ExpirationTime - Time when operation will expire.
15065	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
15066	// GeoMasterOperationID - Applicable only for stamp operation ids.
15067	GeoMasterOperationID *uuid.UUID `json:"geoMasterOperationId,omitempty"`
15068}
15069
15070// OutboundEnvironmentEndpoint endpoints accessed for a common purpose that the App Service Environment
15071// requires outbound network access to.
15072type OutboundEnvironmentEndpoint struct {
15073	// Category - The type of service accessed by the App Service Environment, e.g., Azure Storage, Azure SQL Database, and Azure Active Directory.
15074	Category *string `json:"category,omitempty"`
15075	// Endpoints - The endpoints that the App Service Environment reaches the service at.
15076	Endpoints *[]EndpointDependency `json:"endpoints,omitempty"`
15077}
15078
15079// OutboundEnvironmentEndpointCollection collection of Outbound Environment Endpoints
15080type OutboundEnvironmentEndpointCollection struct {
15081	autorest.Response `json:"-"`
15082	// Value - Collection of resources.
15083	Value *[]OutboundEnvironmentEndpoint `json:"value,omitempty"`
15084	// NextLink - READ-ONLY; Link to next page of resources.
15085	NextLink *string `json:"nextLink,omitempty"`
15086}
15087
15088// MarshalJSON is the custom marshaler for OutboundEnvironmentEndpointCollection.
15089func (oeec OutboundEnvironmentEndpointCollection) MarshalJSON() ([]byte, error) {
15090	objectMap := make(map[string]interface{})
15091	if oeec.Value != nil {
15092		objectMap["value"] = oeec.Value
15093	}
15094	return json.Marshal(objectMap)
15095}
15096
15097// OutboundEnvironmentEndpointCollectionIterator provides access to a complete listing of
15098// OutboundEnvironmentEndpoint values.
15099type OutboundEnvironmentEndpointCollectionIterator struct {
15100	i    int
15101	page OutboundEnvironmentEndpointCollectionPage
15102}
15103
15104// NextWithContext advances to the next value.  If there was an error making
15105// the request the iterator does not advance and the error is returned.
15106func (iter *OutboundEnvironmentEndpointCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15107	if tracing.IsEnabled() {
15108		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionIterator.NextWithContext")
15109		defer func() {
15110			sc := -1
15111			if iter.Response().Response.Response != nil {
15112				sc = iter.Response().Response.Response.StatusCode
15113			}
15114			tracing.EndSpan(ctx, sc, err)
15115		}()
15116	}
15117	iter.i++
15118	if iter.i < len(iter.page.Values()) {
15119		return nil
15120	}
15121	err = iter.page.NextWithContext(ctx)
15122	if err != nil {
15123		iter.i--
15124		return err
15125	}
15126	iter.i = 0
15127	return nil
15128}
15129
15130// Next advances to the next value.  If there was an error making
15131// the request the iterator does not advance and the error is returned.
15132// Deprecated: Use NextWithContext() instead.
15133func (iter *OutboundEnvironmentEndpointCollectionIterator) Next() error {
15134	return iter.NextWithContext(context.Background())
15135}
15136
15137// NotDone returns true if the enumeration should be started or is not yet complete.
15138func (iter OutboundEnvironmentEndpointCollectionIterator) NotDone() bool {
15139	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15140}
15141
15142// Response returns the raw server response from the last page request.
15143func (iter OutboundEnvironmentEndpointCollectionIterator) Response() OutboundEnvironmentEndpointCollection {
15144	return iter.page.Response()
15145}
15146
15147// Value returns the current value or a zero-initialized value if the
15148// iterator has advanced beyond the end of the collection.
15149func (iter OutboundEnvironmentEndpointCollectionIterator) Value() OutboundEnvironmentEndpoint {
15150	if !iter.page.NotDone() {
15151		return OutboundEnvironmentEndpoint{}
15152	}
15153	return iter.page.Values()[iter.i]
15154}
15155
15156// Creates a new instance of the OutboundEnvironmentEndpointCollectionIterator type.
15157func NewOutboundEnvironmentEndpointCollectionIterator(page OutboundEnvironmentEndpointCollectionPage) OutboundEnvironmentEndpointCollectionIterator {
15158	return OutboundEnvironmentEndpointCollectionIterator{page: page}
15159}
15160
15161// IsEmpty returns true if the ListResult contains no values.
15162func (oeec OutboundEnvironmentEndpointCollection) IsEmpty() bool {
15163	return oeec.Value == nil || len(*oeec.Value) == 0
15164}
15165
15166// hasNextLink returns true if the NextLink is not empty.
15167func (oeec OutboundEnvironmentEndpointCollection) hasNextLink() bool {
15168	return oeec.NextLink != nil && len(*oeec.NextLink) != 0
15169}
15170
15171// outboundEnvironmentEndpointCollectionPreparer prepares a request to retrieve the next set of results.
15172// It returns nil if no more results exist.
15173func (oeec OutboundEnvironmentEndpointCollection) outboundEnvironmentEndpointCollectionPreparer(ctx context.Context) (*http.Request, error) {
15174	if !oeec.hasNextLink() {
15175		return nil, nil
15176	}
15177	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15178		autorest.AsJSON(),
15179		autorest.AsGet(),
15180		autorest.WithBaseURL(to.String(oeec.NextLink)))
15181}
15182
15183// OutboundEnvironmentEndpointCollectionPage contains a page of OutboundEnvironmentEndpoint values.
15184type OutboundEnvironmentEndpointCollectionPage struct {
15185	fn   func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)
15186	oeec OutboundEnvironmentEndpointCollection
15187}
15188
15189// NextWithContext advances to the next page of values.  If there was an error making
15190// the request the page does not advance and the error is returned.
15191func (page *OutboundEnvironmentEndpointCollectionPage) NextWithContext(ctx context.Context) (err error) {
15192	if tracing.IsEnabled() {
15193		ctx = tracing.StartSpan(ctx, fqdn+"/OutboundEnvironmentEndpointCollectionPage.NextWithContext")
15194		defer func() {
15195			sc := -1
15196			if page.Response().Response.Response != nil {
15197				sc = page.Response().Response.Response.StatusCode
15198			}
15199			tracing.EndSpan(ctx, sc, err)
15200		}()
15201	}
15202	for {
15203		next, err := page.fn(ctx, page.oeec)
15204		if err != nil {
15205			return err
15206		}
15207		page.oeec = next
15208		if !next.hasNextLink() || !next.IsEmpty() {
15209			break
15210		}
15211	}
15212	return nil
15213}
15214
15215// Next advances to the next page of values.  If there was an error making
15216// the request the page does not advance and the error is returned.
15217// Deprecated: Use NextWithContext() instead.
15218func (page *OutboundEnvironmentEndpointCollectionPage) Next() error {
15219	return page.NextWithContext(context.Background())
15220}
15221
15222// NotDone returns true if the page enumeration should be started or is not yet complete.
15223func (page OutboundEnvironmentEndpointCollectionPage) NotDone() bool {
15224	return !page.oeec.IsEmpty()
15225}
15226
15227// Response returns the raw server response from the last page request.
15228func (page OutboundEnvironmentEndpointCollectionPage) Response() OutboundEnvironmentEndpointCollection {
15229	return page.oeec
15230}
15231
15232// Values returns the slice of values for the current page or nil if there are no values.
15233func (page OutboundEnvironmentEndpointCollectionPage) Values() []OutboundEnvironmentEndpoint {
15234	if page.oeec.IsEmpty() {
15235		return nil
15236	}
15237	return *page.oeec.Value
15238}
15239
15240// Creates a new instance of the OutboundEnvironmentEndpointCollectionPage type.
15241func NewOutboundEnvironmentEndpointCollectionPage(cur OutboundEnvironmentEndpointCollection, getNextPage func(context.Context, OutboundEnvironmentEndpointCollection) (OutboundEnvironmentEndpointCollection, error)) OutboundEnvironmentEndpointCollectionPage {
15242	return OutboundEnvironmentEndpointCollectionPage{
15243		fn:   getNextPage,
15244		oeec: cur,
15245	}
15246}
15247
15248// PerfMonCounterCollection collection of performance monitor counters.
15249type PerfMonCounterCollection struct {
15250	autorest.Response `json:"-"`
15251	// Value - Collection of resources.
15252	Value *[]PerfMonResponse `json:"value,omitempty"`
15253	// NextLink - READ-ONLY; Link to next page of resources.
15254	NextLink *string `json:"nextLink,omitempty"`
15255}
15256
15257// MarshalJSON is the custom marshaler for PerfMonCounterCollection.
15258func (pmcc PerfMonCounterCollection) MarshalJSON() ([]byte, error) {
15259	objectMap := make(map[string]interface{})
15260	if pmcc.Value != nil {
15261		objectMap["value"] = pmcc.Value
15262	}
15263	return json.Marshal(objectMap)
15264}
15265
15266// PerfMonCounterCollectionIterator provides access to a complete listing of PerfMonResponse values.
15267type PerfMonCounterCollectionIterator struct {
15268	i    int
15269	page PerfMonCounterCollectionPage
15270}
15271
15272// NextWithContext advances to the next value.  If there was an error making
15273// the request the iterator does not advance and the error is returned.
15274func (iter *PerfMonCounterCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15275	if tracing.IsEnabled() {
15276		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionIterator.NextWithContext")
15277		defer func() {
15278			sc := -1
15279			if iter.Response().Response.Response != nil {
15280				sc = iter.Response().Response.Response.StatusCode
15281			}
15282			tracing.EndSpan(ctx, sc, err)
15283		}()
15284	}
15285	iter.i++
15286	if iter.i < len(iter.page.Values()) {
15287		return nil
15288	}
15289	err = iter.page.NextWithContext(ctx)
15290	if err != nil {
15291		iter.i--
15292		return err
15293	}
15294	iter.i = 0
15295	return nil
15296}
15297
15298// Next advances to the next value.  If there was an error making
15299// the request the iterator does not advance and the error is returned.
15300// Deprecated: Use NextWithContext() instead.
15301func (iter *PerfMonCounterCollectionIterator) Next() error {
15302	return iter.NextWithContext(context.Background())
15303}
15304
15305// NotDone returns true if the enumeration should be started or is not yet complete.
15306func (iter PerfMonCounterCollectionIterator) NotDone() bool {
15307	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15308}
15309
15310// Response returns the raw server response from the last page request.
15311func (iter PerfMonCounterCollectionIterator) Response() PerfMonCounterCollection {
15312	return iter.page.Response()
15313}
15314
15315// Value returns the current value or a zero-initialized value if the
15316// iterator has advanced beyond the end of the collection.
15317func (iter PerfMonCounterCollectionIterator) Value() PerfMonResponse {
15318	if !iter.page.NotDone() {
15319		return PerfMonResponse{}
15320	}
15321	return iter.page.Values()[iter.i]
15322}
15323
15324// Creates a new instance of the PerfMonCounterCollectionIterator type.
15325func NewPerfMonCounterCollectionIterator(page PerfMonCounterCollectionPage) PerfMonCounterCollectionIterator {
15326	return PerfMonCounterCollectionIterator{page: page}
15327}
15328
15329// IsEmpty returns true if the ListResult contains no values.
15330func (pmcc PerfMonCounterCollection) IsEmpty() bool {
15331	return pmcc.Value == nil || len(*pmcc.Value) == 0
15332}
15333
15334// hasNextLink returns true if the NextLink is not empty.
15335func (pmcc PerfMonCounterCollection) hasNextLink() bool {
15336	return pmcc.NextLink != nil && len(*pmcc.NextLink) != 0
15337}
15338
15339// perfMonCounterCollectionPreparer prepares a request to retrieve the next set of results.
15340// It returns nil if no more results exist.
15341func (pmcc PerfMonCounterCollection) perfMonCounterCollectionPreparer(ctx context.Context) (*http.Request, error) {
15342	if !pmcc.hasNextLink() {
15343		return nil, nil
15344	}
15345	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15346		autorest.AsJSON(),
15347		autorest.AsGet(),
15348		autorest.WithBaseURL(to.String(pmcc.NextLink)))
15349}
15350
15351// PerfMonCounterCollectionPage contains a page of PerfMonResponse values.
15352type PerfMonCounterCollectionPage struct {
15353	fn   func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)
15354	pmcc PerfMonCounterCollection
15355}
15356
15357// NextWithContext advances to the next page of values.  If there was an error making
15358// the request the page does not advance and the error is returned.
15359func (page *PerfMonCounterCollectionPage) NextWithContext(ctx context.Context) (err error) {
15360	if tracing.IsEnabled() {
15361		ctx = tracing.StartSpan(ctx, fqdn+"/PerfMonCounterCollectionPage.NextWithContext")
15362		defer func() {
15363			sc := -1
15364			if page.Response().Response.Response != nil {
15365				sc = page.Response().Response.Response.StatusCode
15366			}
15367			tracing.EndSpan(ctx, sc, err)
15368		}()
15369	}
15370	for {
15371		next, err := page.fn(ctx, page.pmcc)
15372		if err != nil {
15373			return err
15374		}
15375		page.pmcc = next
15376		if !next.hasNextLink() || !next.IsEmpty() {
15377			break
15378		}
15379	}
15380	return nil
15381}
15382
15383// Next advances to the next page of values.  If there was an error making
15384// the request the page does not advance and the error is returned.
15385// Deprecated: Use NextWithContext() instead.
15386func (page *PerfMonCounterCollectionPage) Next() error {
15387	return page.NextWithContext(context.Background())
15388}
15389
15390// NotDone returns true if the page enumeration should be started or is not yet complete.
15391func (page PerfMonCounterCollectionPage) NotDone() bool {
15392	return !page.pmcc.IsEmpty()
15393}
15394
15395// Response returns the raw server response from the last page request.
15396func (page PerfMonCounterCollectionPage) Response() PerfMonCounterCollection {
15397	return page.pmcc
15398}
15399
15400// Values returns the slice of values for the current page or nil if there are no values.
15401func (page PerfMonCounterCollectionPage) Values() []PerfMonResponse {
15402	if page.pmcc.IsEmpty() {
15403		return nil
15404	}
15405	return *page.pmcc.Value
15406}
15407
15408// Creates a new instance of the PerfMonCounterCollectionPage type.
15409func NewPerfMonCounterCollectionPage(cur PerfMonCounterCollection, getNextPage func(context.Context, PerfMonCounterCollection) (PerfMonCounterCollection, error)) PerfMonCounterCollectionPage {
15410	return PerfMonCounterCollectionPage{
15411		fn:   getNextPage,
15412		pmcc: cur,
15413	}
15414}
15415
15416// PerfMonResponse performance monitor API response.
15417type PerfMonResponse struct {
15418	// Code - The response code.
15419	Code *string `json:"code,omitempty"`
15420	// Message - The message.
15421	Message *string `json:"message,omitempty"`
15422	// Data - The performance monitor counters.
15423	Data *PerfMonSet `json:"data,omitempty"`
15424}
15425
15426// PerfMonSample performance monitor sample in a set.
15427type PerfMonSample struct {
15428	// Time - Point in time for which counter was measured.
15429	Time *date.Time `json:"time,omitempty"`
15430	// InstanceName - Name of the server on which the measurement is made.
15431	InstanceName *string `json:"instanceName,omitempty"`
15432	// Value - Value of counter at a certain time.
15433	Value *float64 `json:"value,omitempty"`
15434}
15435
15436// PerfMonSet metric information.
15437type PerfMonSet struct {
15438	// Name - Unique key name of the counter.
15439	Name *string `json:"name,omitempty"`
15440	// StartTime - Start time of the period.
15441	StartTime *date.Time `json:"startTime,omitempty"`
15442	// EndTime - End time of the period.
15443	EndTime *date.Time `json:"endTime,omitempty"`
15444	// TimeGrain - Presented time grain.
15445	TimeGrain *string `json:"timeGrain,omitempty"`
15446	// Values - Collection of workers that are active during this time.
15447	Values *[]PerfMonSample `json:"values,omitempty"`
15448}
15449
15450// PremierAddOn premier add-on.
15451type PremierAddOn struct {
15452	autorest.Response `json:"-"`
15453	// PremierAddOnProperties - PremierAddOn resource specific properties
15454	*PremierAddOnProperties `json:"properties,omitempty"`
15455	// ID - READ-ONLY; Resource Id.
15456	ID *string `json:"id,omitempty"`
15457	// Name - READ-ONLY; Resource Name.
15458	Name *string `json:"name,omitempty"`
15459	// Kind - Kind of resource.
15460	Kind *string `json:"kind,omitempty"`
15461	// Location - Resource Location.
15462	Location *string `json:"location,omitempty"`
15463	// Type - READ-ONLY; Resource type.
15464	Type *string `json:"type,omitempty"`
15465	// Tags - Resource tags.
15466	Tags map[string]*string `json:"tags"`
15467}
15468
15469// MarshalJSON is the custom marshaler for PremierAddOn.
15470func (pao PremierAddOn) MarshalJSON() ([]byte, error) {
15471	objectMap := make(map[string]interface{})
15472	if pao.PremierAddOnProperties != nil {
15473		objectMap["properties"] = pao.PremierAddOnProperties
15474	}
15475	if pao.Kind != nil {
15476		objectMap["kind"] = pao.Kind
15477	}
15478	if pao.Location != nil {
15479		objectMap["location"] = pao.Location
15480	}
15481	if pao.Tags != nil {
15482		objectMap["tags"] = pao.Tags
15483	}
15484	return json.Marshal(objectMap)
15485}
15486
15487// UnmarshalJSON is the custom unmarshaler for PremierAddOn struct.
15488func (pao *PremierAddOn) UnmarshalJSON(body []byte) error {
15489	var m map[string]*json.RawMessage
15490	err := json.Unmarshal(body, &m)
15491	if err != nil {
15492		return err
15493	}
15494	for k, v := range m {
15495		switch k {
15496		case "properties":
15497			if v != nil {
15498				var premierAddOnProperties PremierAddOnProperties
15499				err = json.Unmarshal(*v, &premierAddOnProperties)
15500				if err != nil {
15501					return err
15502				}
15503				pao.PremierAddOnProperties = &premierAddOnProperties
15504			}
15505		case "id":
15506			if v != nil {
15507				var ID string
15508				err = json.Unmarshal(*v, &ID)
15509				if err != nil {
15510					return err
15511				}
15512				pao.ID = &ID
15513			}
15514		case "name":
15515			if v != nil {
15516				var name string
15517				err = json.Unmarshal(*v, &name)
15518				if err != nil {
15519					return err
15520				}
15521				pao.Name = &name
15522			}
15523		case "kind":
15524			if v != nil {
15525				var kind string
15526				err = json.Unmarshal(*v, &kind)
15527				if err != nil {
15528					return err
15529				}
15530				pao.Kind = &kind
15531			}
15532		case "location":
15533			if v != nil {
15534				var location string
15535				err = json.Unmarshal(*v, &location)
15536				if err != nil {
15537					return err
15538				}
15539				pao.Location = &location
15540			}
15541		case "type":
15542			if v != nil {
15543				var typeVar string
15544				err = json.Unmarshal(*v, &typeVar)
15545				if err != nil {
15546					return err
15547				}
15548				pao.Type = &typeVar
15549			}
15550		case "tags":
15551			if v != nil {
15552				var tags map[string]*string
15553				err = json.Unmarshal(*v, &tags)
15554				if err != nil {
15555					return err
15556				}
15557				pao.Tags = tags
15558			}
15559		}
15560	}
15561
15562	return nil
15563}
15564
15565// PremierAddOnOffer premier add-on offer.
15566type PremierAddOnOffer struct {
15567	// PremierAddOnOfferProperties - PremierAddOnOffer resource specific properties
15568	*PremierAddOnOfferProperties `json:"properties,omitempty"`
15569	// ID - READ-ONLY; Resource Id.
15570	ID *string `json:"id,omitempty"`
15571	// Name - READ-ONLY; Resource Name.
15572	Name *string `json:"name,omitempty"`
15573	// Kind - Kind of resource.
15574	Kind *string `json:"kind,omitempty"`
15575	// Type - READ-ONLY; Resource type.
15576	Type *string `json:"type,omitempty"`
15577}
15578
15579// MarshalJSON is the custom marshaler for PremierAddOnOffer.
15580func (paoo PremierAddOnOffer) MarshalJSON() ([]byte, error) {
15581	objectMap := make(map[string]interface{})
15582	if paoo.PremierAddOnOfferProperties != nil {
15583		objectMap["properties"] = paoo.PremierAddOnOfferProperties
15584	}
15585	if paoo.Kind != nil {
15586		objectMap["kind"] = paoo.Kind
15587	}
15588	return json.Marshal(objectMap)
15589}
15590
15591// UnmarshalJSON is the custom unmarshaler for PremierAddOnOffer struct.
15592func (paoo *PremierAddOnOffer) UnmarshalJSON(body []byte) error {
15593	var m map[string]*json.RawMessage
15594	err := json.Unmarshal(body, &m)
15595	if err != nil {
15596		return err
15597	}
15598	for k, v := range m {
15599		switch k {
15600		case "properties":
15601			if v != nil {
15602				var premierAddOnOfferProperties PremierAddOnOfferProperties
15603				err = json.Unmarshal(*v, &premierAddOnOfferProperties)
15604				if err != nil {
15605					return err
15606				}
15607				paoo.PremierAddOnOfferProperties = &premierAddOnOfferProperties
15608			}
15609		case "id":
15610			if v != nil {
15611				var ID string
15612				err = json.Unmarshal(*v, &ID)
15613				if err != nil {
15614					return err
15615				}
15616				paoo.ID = &ID
15617			}
15618		case "name":
15619			if v != nil {
15620				var name string
15621				err = json.Unmarshal(*v, &name)
15622				if err != nil {
15623					return err
15624				}
15625				paoo.Name = &name
15626			}
15627		case "kind":
15628			if v != nil {
15629				var kind string
15630				err = json.Unmarshal(*v, &kind)
15631				if err != nil {
15632					return err
15633				}
15634				paoo.Kind = &kind
15635			}
15636		case "type":
15637			if v != nil {
15638				var typeVar string
15639				err = json.Unmarshal(*v, &typeVar)
15640				if err != nil {
15641					return err
15642				}
15643				paoo.Type = &typeVar
15644			}
15645		}
15646	}
15647
15648	return nil
15649}
15650
15651// PremierAddOnOfferCollection collection of premier add-on offers.
15652type PremierAddOnOfferCollection struct {
15653	autorest.Response `json:"-"`
15654	// Value - Collection of resources.
15655	Value *[]PremierAddOnOffer `json:"value,omitempty"`
15656	// NextLink - READ-ONLY; Link to next page of resources.
15657	NextLink *string `json:"nextLink,omitempty"`
15658}
15659
15660// MarshalJSON is the custom marshaler for PremierAddOnOfferCollection.
15661func (paooc PremierAddOnOfferCollection) MarshalJSON() ([]byte, error) {
15662	objectMap := make(map[string]interface{})
15663	if paooc.Value != nil {
15664		objectMap["value"] = paooc.Value
15665	}
15666	return json.Marshal(objectMap)
15667}
15668
15669// PremierAddOnOfferCollectionIterator provides access to a complete listing of PremierAddOnOffer values.
15670type PremierAddOnOfferCollectionIterator struct {
15671	i    int
15672	page PremierAddOnOfferCollectionPage
15673}
15674
15675// NextWithContext advances to the next value.  If there was an error making
15676// the request the iterator does not advance and the error is returned.
15677func (iter *PremierAddOnOfferCollectionIterator) NextWithContext(ctx context.Context) (err error) {
15678	if tracing.IsEnabled() {
15679		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionIterator.NextWithContext")
15680		defer func() {
15681			sc := -1
15682			if iter.Response().Response.Response != nil {
15683				sc = iter.Response().Response.Response.StatusCode
15684			}
15685			tracing.EndSpan(ctx, sc, err)
15686		}()
15687	}
15688	iter.i++
15689	if iter.i < len(iter.page.Values()) {
15690		return nil
15691	}
15692	err = iter.page.NextWithContext(ctx)
15693	if err != nil {
15694		iter.i--
15695		return err
15696	}
15697	iter.i = 0
15698	return nil
15699}
15700
15701// Next advances to the next value.  If there was an error making
15702// the request the iterator does not advance and the error is returned.
15703// Deprecated: Use NextWithContext() instead.
15704func (iter *PremierAddOnOfferCollectionIterator) Next() error {
15705	return iter.NextWithContext(context.Background())
15706}
15707
15708// NotDone returns true if the enumeration should be started or is not yet complete.
15709func (iter PremierAddOnOfferCollectionIterator) NotDone() bool {
15710	return iter.page.NotDone() && iter.i < len(iter.page.Values())
15711}
15712
15713// Response returns the raw server response from the last page request.
15714func (iter PremierAddOnOfferCollectionIterator) Response() PremierAddOnOfferCollection {
15715	return iter.page.Response()
15716}
15717
15718// Value returns the current value or a zero-initialized value if the
15719// iterator has advanced beyond the end of the collection.
15720func (iter PremierAddOnOfferCollectionIterator) Value() PremierAddOnOffer {
15721	if !iter.page.NotDone() {
15722		return PremierAddOnOffer{}
15723	}
15724	return iter.page.Values()[iter.i]
15725}
15726
15727// Creates a new instance of the PremierAddOnOfferCollectionIterator type.
15728func NewPremierAddOnOfferCollectionIterator(page PremierAddOnOfferCollectionPage) PremierAddOnOfferCollectionIterator {
15729	return PremierAddOnOfferCollectionIterator{page: page}
15730}
15731
15732// IsEmpty returns true if the ListResult contains no values.
15733func (paooc PremierAddOnOfferCollection) IsEmpty() bool {
15734	return paooc.Value == nil || len(*paooc.Value) == 0
15735}
15736
15737// hasNextLink returns true if the NextLink is not empty.
15738func (paooc PremierAddOnOfferCollection) hasNextLink() bool {
15739	return paooc.NextLink != nil && len(*paooc.NextLink) != 0
15740}
15741
15742// premierAddOnOfferCollectionPreparer prepares a request to retrieve the next set of results.
15743// It returns nil if no more results exist.
15744func (paooc PremierAddOnOfferCollection) premierAddOnOfferCollectionPreparer(ctx context.Context) (*http.Request, error) {
15745	if !paooc.hasNextLink() {
15746		return nil, nil
15747	}
15748	return autorest.Prepare((&http.Request{}).WithContext(ctx),
15749		autorest.AsJSON(),
15750		autorest.AsGet(),
15751		autorest.WithBaseURL(to.String(paooc.NextLink)))
15752}
15753
15754// PremierAddOnOfferCollectionPage contains a page of PremierAddOnOffer values.
15755type PremierAddOnOfferCollectionPage struct {
15756	fn    func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)
15757	paooc PremierAddOnOfferCollection
15758}
15759
15760// NextWithContext advances to the next page of values.  If there was an error making
15761// the request the page does not advance and the error is returned.
15762func (page *PremierAddOnOfferCollectionPage) NextWithContext(ctx context.Context) (err error) {
15763	if tracing.IsEnabled() {
15764		ctx = tracing.StartSpan(ctx, fqdn+"/PremierAddOnOfferCollectionPage.NextWithContext")
15765		defer func() {
15766			sc := -1
15767			if page.Response().Response.Response != nil {
15768				sc = page.Response().Response.Response.StatusCode
15769			}
15770			tracing.EndSpan(ctx, sc, err)
15771		}()
15772	}
15773	for {
15774		next, err := page.fn(ctx, page.paooc)
15775		if err != nil {
15776			return err
15777		}
15778		page.paooc = next
15779		if !next.hasNextLink() || !next.IsEmpty() {
15780			break
15781		}
15782	}
15783	return nil
15784}
15785
15786// Next advances to the next page of values.  If there was an error making
15787// the request the page does not advance and the error is returned.
15788// Deprecated: Use NextWithContext() instead.
15789func (page *PremierAddOnOfferCollectionPage) Next() error {
15790	return page.NextWithContext(context.Background())
15791}
15792
15793// NotDone returns true if the page enumeration should be started or is not yet complete.
15794func (page PremierAddOnOfferCollectionPage) NotDone() bool {
15795	return !page.paooc.IsEmpty()
15796}
15797
15798// Response returns the raw server response from the last page request.
15799func (page PremierAddOnOfferCollectionPage) Response() PremierAddOnOfferCollection {
15800	return page.paooc
15801}
15802
15803// Values returns the slice of values for the current page or nil if there are no values.
15804func (page PremierAddOnOfferCollectionPage) Values() []PremierAddOnOffer {
15805	if page.paooc.IsEmpty() {
15806		return nil
15807	}
15808	return *page.paooc.Value
15809}
15810
15811// Creates a new instance of the PremierAddOnOfferCollectionPage type.
15812func NewPremierAddOnOfferCollectionPage(cur PremierAddOnOfferCollection, getNextPage func(context.Context, PremierAddOnOfferCollection) (PremierAddOnOfferCollection, error)) PremierAddOnOfferCollectionPage {
15813	return PremierAddOnOfferCollectionPage{
15814		fn:    getNextPage,
15815		paooc: cur,
15816	}
15817}
15818
15819// PremierAddOnOfferProperties premierAddOnOffer resource specific properties
15820type PremierAddOnOfferProperties struct {
15821	// Sku - Premier add on SKU.
15822	Sku *string `json:"sku,omitempty"`
15823	// Product - Premier add on offer Product.
15824	Product *string `json:"product,omitempty"`
15825	// Vendor - Premier add on offer Vendor.
15826	Vendor *string `json:"vendor,omitempty"`
15827	// PromoCodeRequired - <code>true</code> if promotion code is required; otherwise, <code>false</code>.
15828	PromoCodeRequired *bool `json:"promoCodeRequired,omitempty"`
15829	// Quota - Premier add on offer Quota.
15830	Quota *int32 `json:"quota,omitempty"`
15831	// WebHostingPlanRestrictions - App Service plans this offer is restricted to. Possible values include: 'None', 'Free', 'Shared', 'Basic', 'Standard', 'Premium'
15832	WebHostingPlanRestrictions AppServicePlanRestrictions `json:"webHostingPlanRestrictions,omitempty"`
15833	// PrivacyPolicyURL - Privacy policy URL.
15834	PrivacyPolicyURL *string `json:"privacyPolicyUrl,omitempty"`
15835	// LegalTermsURL - Legal terms URL.
15836	LegalTermsURL *string `json:"legalTermsUrl,omitempty"`
15837	// MarketplacePublisher - Marketplace publisher.
15838	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
15839	// MarketplaceOffer - Marketplace offer.
15840	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
15841}
15842
15843// PremierAddOnPatchResource ARM resource for a PremierAddOn.
15844type PremierAddOnPatchResource struct {
15845	// PremierAddOnPatchResourceProperties - PremierAddOnPatchResource resource specific properties
15846	*PremierAddOnPatchResourceProperties `json:"properties,omitempty"`
15847	// ID - READ-ONLY; Resource Id.
15848	ID *string `json:"id,omitempty"`
15849	// Name - READ-ONLY; Resource Name.
15850	Name *string `json:"name,omitempty"`
15851	// Kind - Kind of resource.
15852	Kind *string `json:"kind,omitempty"`
15853	// Type - READ-ONLY; Resource type.
15854	Type *string `json:"type,omitempty"`
15855}
15856
15857// MarshalJSON is the custom marshaler for PremierAddOnPatchResource.
15858func (paopr PremierAddOnPatchResource) MarshalJSON() ([]byte, error) {
15859	objectMap := make(map[string]interface{})
15860	if paopr.PremierAddOnPatchResourceProperties != nil {
15861		objectMap["properties"] = paopr.PremierAddOnPatchResourceProperties
15862	}
15863	if paopr.Kind != nil {
15864		objectMap["kind"] = paopr.Kind
15865	}
15866	return json.Marshal(objectMap)
15867}
15868
15869// UnmarshalJSON is the custom unmarshaler for PremierAddOnPatchResource struct.
15870func (paopr *PremierAddOnPatchResource) UnmarshalJSON(body []byte) error {
15871	var m map[string]*json.RawMessage
15872	err := json.Unmarshal(body, &m)
15873	if err != nil {
15874		return err
15875	}
15876	for k, v := range m {
15877		switch k {
15878		case "properties":
15879			if v != nil {
15880				var premierAddOnPatchResourceProperties PremierAddOnPatchResourceProperties
15881				err = json.Unmarshal(*v, &premierAddOnPatchResourceProperties)
15882				if err != nil {
15883					return err
15884				}
15885				paopr.PremierAddOnPatchResourceProperties = &premierAddOnPatchResourceProperties
15886			}
15887		case "id":
15888			if v != nil {
15889				var ID string
15890				err = json.Unmarshal(*v, &ID)
15891				if err != nil {
15892					return err
15893				}
15894				paopr.ID = &ID
15895			}
15896		case "name":
15897			if v != nil {
15898				var name string
15899				err = json.Unmarshal(*v, &name)
15900				if err != nil {
15901					return err
15902				}
15903				paopr.Name = &name
15904			}
15905		case "kind":
15906			if v != nil {
15907				var kind string
15908				err = json.Unmarshal(*v, &kind)
15909				if err != nil {
15910					return err
15911				}
15912				paopr.Kind = &kind
15913			}
15914		case "type":
15915			if v != nil {
15916				var typeVar string
15917				err = json.Unmarshal(*v, &typeVar)
15918				if err != nil {
15919					return err
15920				}
15921				paopr.Type = &typeVar
15922			}
15923		}
15924	}
15925
15926	return nil
15927}
15928
15929// PremierAddOnPatchResourceProperties premierAddOnPatchResource resource specific properties
15930type PremierAddOnPatchResourceProperties struct {
15931	// Sku - Premier add on SKU.
15932	Sku *string `json:"sku,omitempty"`
15933	// Product - Premier add on Product.
15934	Product *string `json:"product,omitempty"`
15935	// Vendor - Premier add on Vendor.
15936	Vendor *string `json:"vendor,omitempty"`
15937	// MarketplacePublisher - Premier add on Marketplace publisher.
15938	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
15939	// MarketplaceOffer - Premier add on Marketplace offer.
15940	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
15941}
15942
15943// PremierAddOnProperties premierAddOn resource specific properties
15944type PremierAddOnProperties struct {
15945	// Sku - Premier add on SKU.
15946	Sku *string `json:"sku,omitempty"`
15947	// Product - Premier add on Product.
15948	Product *string `json:"product,omitempty"`
15949	// Vendor - Premier add on Vendor.
15950	Vendor *string `json:"vendor,omitempty"`
15951	// MarketplacePublisher - Premier add on Marketplace publisher.
15952	MarketplacePublisher *string `json:"marketplacePublisher,omitempty"`
15953	// MarketplaceOffer - Premier add on Marketplace offer.
15954	MarketplaceOffer *string `json:"marketplaceOffer,omitempty"`
15955}
15956
15957// PrivateAccess description of the parameters of Private Access for a Web Site.
15958type PrivateAccess struct {
15959	autorest.Response `json:"-"`
15960	// PrivateAccessProperties - PrivateAccess resource specific properties
15961	*PrivateAccessProperties `json:"properties,omitempty"`
15962	// ID - READ-ONLY; Resource Id.
15963	ID *string `json:"id,omitempty"`
15964	// Name - READ-ONLY; Resource Name.
15965	Name *string `json:"name,omitempty"`
15966	// Kind - Kind of resource.
15967	Kind *string `json:"kind,omitempty"`
15968	// Type - READ-ONLY; Resource type.
15969	Type *string `json:"type,omitempty"`
15970}
15971
15972// MarshalJSON is the custom marshaler for PrivateAccess.
15973func (pa PrivateAccess) MarshalJSON() ([]byte, error) {
15974	objectMap := make(map[string]interface{})
15975	if pa.PrivateAccessProperties != nil {
15976		objectMap["properties"] = pa.PrivateAccessProperties
15977	}
15978	if pa.Kind != nil {
15979		objectMap["kind"] = pa.Kind
15980	}
15981	return json.Marshal(objectMap)
15982}
15983
15984// UnmarshalJSON is the custom unmarshaler for PrivateAccess struct.
15985func (pa *PrivateAccess) UnmarshalJSON(body []byte) error {
15986	var m map[string]*json.RawMessage
15987	err := json.Unmarshal(body, &m)
15988	if err != nil {
15989		return err
15990	}
15991	for k, v := range m {
15992		switch k {
15993		case "properties":
15994			if v != nil {
15995				var privateAccessProperties PrivateAccessProperties
15996				err = json.Unmarshal(*v, &privateAccessProperties)
15997				if err != nil {
15998					return err
15999				}
16000				pa.PrivateAccessProperties = &privateAccessProperties
16001			}
16002		case "id":
16003			if v != nil {
16004				var ID string
16005				err = json.Unmarshal(*v, &ID)
16006				if err != nil {
16007					return err
16008				}
16009				pa.ID = &ID
16010			}
16011		case "name":
16012			if v != nil {
16013				var name string
16014				err = json.Unmarshal(*v, &name)
16015				if err != nil {
16016					return err
16017				}
16018				pa.Name = &name
16019			}
16020		case "kind":
16021			if v != nil {
16022				var kind string
16023				err = json.Unmarshal(*v, &kind)
16024				if err != nil {
16025					return err
16026				}
16027				pa.Kind = &kind
16028			}
16029		case "type":
16030			if v != nil {
16031				var typeVar string
16032				err = json.Unmarshal(*v, &typeVar)
16033				if err != nil {
16034					return err
16035				}
16036				pa.Type = &typeVar
16037			}
16038		}
16039	}
16040
16041	return nil
16042}
16043
16044// PrivateAccessProperties privateAccess resource specific properties
16045type PrivateAccessProperties struct {
16046	// Enabled - Whether private access is enabled or not.
16047	Enabled *bool `json:"enabled,omitempty"`
16048	// VirtualNetworks - The Virtual Networks (and subnets) allowed to access the site privately.
16049	VirtualNetworks *[]PrivateAccessVirtualNetwork `json:"virtualNetworks,omitempty"`
16050}
16051
16052// PrivateAccessSubnet description of a Virtual Network subnet that is useable for private site access.
16053type PrivateAccessSubnet struct {
16054	// Name - The name of the subnet.
16055	Name *string `json:"name,omitempty"`
16056	// Key - The key (ID) of the subnet.
16057	Key *int32 `json:"key,omitempty"`
16058}
16059
16060// PrivateAccessVirtualNetwork description of a Virtual Network that is useable for private site access.
16061type PrivateAccessVirtualNetwork struct {
16062	// Name - The name of the Virtual Network.
16063	Name *string `json:"name,omitempty"`
16064	// Key - The key (ID) of the Virtual Network.
16065	Key *int32 `json:"key,omitempty"`
16066	// ResourceID - The ARM uri of the Virtual Network
16067	ResourceID *string `json:"resourceId,omitempty"`
16068	// 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.
16069	Subnets *[]PrivateAccessSubnet `json:"subnets,omitempty"`
16070}
16071
16072// PrivateEndpointConnectionResource private Endpoint Connection ARM resource.
16073type PrivateEndpointConnectionResource struct {
16074	autorest.Response `json:"-"`
16075	// RemotePrivateEndpointConnection - Core resource properties
16076	*RemotePrivateEndpointConnection `json:"properties,omitempty"`
16077	// ID - READ-ONLY; Resource Id.
16078	ID *string `json:"id,omitempty"`
16079	// Name - READ-ONLY; Resource Name.
16080	Name *string `json:"name,omitempty"`
16081	// Kind - Kind of resource.
16082	Kind *string `json:"kind,omitempty"`
16083	// Type - READ-ONLY; Resource type.
16084	Type *string `json:"type,omitempty"`
16085}
16086
16087// MarshalJSON is the custom marshaler for PrivateEndpointConnectionResource.
16088func (pecr PrivateEndpointConnectionResource) MarshalJSON() ([]byte, error) {
16089	objectMap := make(map[string]interface{})
16090	if pecr.RemotePrivateEndpointConnection != nil {
16091		objectMap["properties"] = pecr.RemotePrivateEndpointConnection
16092	}
16093	if pecr.Kind != nil {
16094		objectMap["kind"] = pecr.Kind
16095	}
16096	return json.Marshal(objectMap)
16097}
16098
16099// UnmarshalJSON is the custom unmarshaler for PrivateEndpointConnectionResource struct.
16100func (pecr *PrivateEndpointConnectionResource) UnmarshalJSON(body []byte) error {
16101	var m map[string]*json.RawMessage
16102	err := json.Unmarshal(body, &m)
16103	if err != nil {
16104		return err
16105	}
16106	for k, v := range m {
16107		switch k {
16108		case "properties":
16109			if v != nil {
16110				var remotePrivateEndpointConnection RemotePrivateEndpointConnection
16111				err = json.Unmarshal(*v, &remotePrivateEndpointConnection)
16112				if err != nil {
16113					return err
16114				}
16115				pecr.RemotePrivateEndpointConnection = &remotePrivateEndpointConnection
16116			}
16117		case "id":
16118			if v != nil {
16119				var ID string
16120				err = json.Unmarshal(*v, &ID)
16121				if err != nil {
16122					return err
16123				}
16124				pecr.ID = &ID
16125			}
16126		case "name":
16127			if v != nil {
16128				var name string
16129				err = json.Unmarshal(*v, &name)
16130				if err != nil {
16131					return err
16132				}
16133				pecr.Name = &name
16134			}
16135		case "kind":
16136			if v != nil {
16137				var kind string
16138				err = json.Unmarshal(*v, &kind)
16139				if err != nil {
16140					return err
16141				}
16142				pecr.Kind = &kind
16143			}
16144		case "type":
16145			if v != nil {
16146				var typeVar string
16147				err = json.Unmarshal(*v, &typeVar)
16148				if err != nil {
16149					return err
16150				}
16151				pecr.Type = &typeVar
16152			}
16153		}
16154	}
16155
16156	return nil
16157}
16158
16159// PrivateLinkConnectionApprovalRequest a request to approve or reject a private endpoint connection
16160type PrivateLinkConnectionApprovalRequest struct {
16161	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
16162}
16163
16164// PrivateLinkConnectionApprovalRequestResource private Endpoint Connection Approval ARM resource.
16165type PrivateLinkConnectionApprovalRequestResource struct {
16166	// PrivateLinkConnectionApprovalRequest - Core resource properties
16167	*PrivateLinkConnectionApprovalRequest `json:"properties,omitempty"`
16168	// ID - READ-ONLY; Resource Id.
16169	ID *string `json:"id,omitempty"`
16170	// Name - READ-ONLY; Resource Name.
16171	Name *string `json:"name,omitempty"`
16172	// Kind - Kind of resource.
16173	Kind *string `json:"kind,omitempty"`
16174	// Type - READ-ONLY; Resource type.
16175	Type *string `json:"type,omitempty"`
16176}
16177
16178// MarshalJSON is the custom marshaler for PrivateLinkConnectionApprovalRequestResource.
16179func (plcarr PrivateLinkConnectionApprovalRequestResource) MarshalJSON() ([]byte, error) {
16180	objectMap := make(map[string]interface{})
16181	if plcarr.PrivateLinkConnectionApprovalRequest != nil {
16182		objectMap["properties"] = plcarr.PrivateLinkConnectionApprovalRequest
16183	}
16184	if plcarr.Kind != nil {
16185		objectMap["kind"] = plcarr.Kind
16186	}
16187	return json.Marshal(objectMap)
16188}
16189
16190// UnmarshalJSON is the custom unmarshaler for PrivateLinkConnectionApprovalRequestResource struct.
16191func (plcarr *PrivateLinkConnectionApprovalRequestResource) UnmarshalJSON(body []byte) error {
16192	var m map[string]*json.RawMessage
16193	err := json.Unmarshal(body, &m)
16194	if err != nil {
16195		return err
16196	}
16197	for k, v := range m {
16198		switch k {
16199		case "properties":
16200			if v != nil {
16201				var privateLinkConnectionApprovalRequest PrivateLinkConnectionApprovalRequest
16202				err = json.Unmarshal(*v, &privateLinkConnectionApprovalRequest)
16203				if err != nil {
16204					return err
16205				}
16206				plcarr.PrivateLinkConnectionApprovalRequest = &privateLinkConnectionApprovalRequest
16207			}
16208		case "id":
16209			if v != nil {
16210				var ID string
16211				err = json.Unmarshal(*v, &ID)
16212				if err != nil {
16213					return err
16214				}
16215				plcarr.ID = &ID
16216			}
16217		case "name":
16218			if v != nil {
16219				var name string
16220				err = json.Unmarshal(*v, &name)
16221				if err != nil {
16222					return err
16223				}
16224				plcarr.Name = &name
16225			}
16226		case "kind":
16227			if v != nil {
16228				var kind string
16229				err = json.Unmarshal(*v, &kind)
16230				if err != nil {
16231					return err
16232				}
16233				plcarr.Kind = &kind
16234			}
16235		case "type":
16236			if v != nil {
16237				var typeVar string
16238				err = json.Unmarshal(*v, &typeVar)
16239				if err != nil {
16240					return err
16241				}
16242				plcarr.Type = &typeVar
16243			}
16244		}
16245	}
16246
16247	return nil
16248}
16249
16250// PrivateLinkConnectionState the state of a private link connection
16251type PrivateLinkConnectionState struct {
16252	// Status - Status of a private link connection
16253	Status *string `json:"status,omitempty"`
16254	// Description - Description of a private link connection
16255	Description *string `json:"description,omitempty"`
16256	// ActionsRequired - ActionsRequired for a private link connection
16257	ActionsRequired *string `json:"actionsRequired,omitempty"`
16258}
16259
16260// PrivateLinkResource a private link resource
16261type PrivateLinkResource struct {
16262	ID *string `json:"id,omitempty"`
16263	// Name - Name of a private link resource
16264	Name *string `json:"name,omitempty"`
16265	Type *string `json:"type,omitempty"`
16266	// Properties - Properties of a private link resource
16267	Properties *PrivateLinkResourceProperties `json:"properties,omitempty"`
16268}
16269
16270// PrivateLinkResourceProperties properties of a private link resource
16271type PrivateLinkResourceProperties struct {
16272	// GroupID - READ-ONLY; GroupId of a private link resource
16273	GroupID *string `json:"groupId,omitempty"`
16274	// RequiredMembers - READ-ONLY; RequiredMembers of a private link resource
16275	RequiredMembers *[]string `json:"requiredMembers,omitempty"`
16276	// RequiredZoneNames - READ-ONLY; RequiredZoneNames of a private link resource
16277	RequiredZoneNames *[]string `json:"requiredZoneNames,omitempty"`
16278}
16279
16280// PrivateLinkResourcesWrapper wrapper for a collection of private link resources
16281type PrivateLinkResourcesWrapper struct {
16282	autorest.Response `json:"-"`
16283	Value             *[]PrivateLinkResource `json:"value,omitempty"`
16284}
16285
16286// ProcessInfo process Information.
16287type ProcessInfo struct {
16288	autorest.Response `json:"-"`
16289	// ProcessInfoProperties - ProcessInfo resource specific properties
16290	*ProcessInfoProperties `json:"properties,omitempty"`
16291	// ID - READ-ONLY; Resource Id.
16292	ID *string `json:"id,omitempty"`
16293	// Name - READ-ONLY; Resource Name.
16294	Name *string `json:"name,omitempty"`
16295	// Kind - Kind of resource.
16296	Kind *string `json:"kind,omitempty"`
16297	// Type - READ-ONLY; Resource type.
16298	Type *string `json:"type,omitempty"`
16299}
16300
16301// MarshalJSON is the custom marshaler for ProcessInfo.
16302func (pi ProcessInfo) MarshalJSON() ([]byte, error) {
16303	objectMap := make(map[string]interface{})
16304	if pi.ProcessInfoProperties != nil {
16305		objectMap["properties"] = pi.ProcessInfoProperties
16306	}
16307	if pi.Kind != nil {
16308		objectMap["kind"] = pi.Kind
16309	}
16310	return json.Marshal(objectMap)
16311}
16312
16313// UnmarshalJSON is the custom unmarshaler for ProcessInfo struct.
16314func (pi *ProcessInfo) UnmarshalJSON(body []byte) error {
16315	var m map[string]*json.RawMessage
16316	err := json.Unmarshal(body, &m)
16317	if err != nil {
16318		return err
16319	}
16320	for k, v := range m {
16321		switch k {
16322		case "properties":
16323			if v != nil {
16324				var processInfoProperties ProcessInfoProperties
16325				err = json.Unmarshal(*v, &processInfoProperties)
16326				if err != nil {
16327					return err
16328				}
16329				pi.ProcessInfoProperties = &processInfoProperties
16330			}
16331		case "id":
16332			if v != nil {
16333				var ID string
16334				err = json.Unmarshal(*v, &ID)
16335				if err != nil {
16336					return err
16337				}
16338				pi.ID = &ID
16339			}
16340		case "name":
16341			if v != nil {
16342				var name string
16343				err = json.Unmarshal(*v, &name)
16344				if err != nil {
16345					return err
16346				}
16347				pi.Name = &name
16348			}
16349		case "kind":
16350			if v != nil {
16351				var kind string
16352				err = json.Unmarshal(*v, &kind)
16353				if err != nil {
16354					return err
16355				}
16356				pi.Kind = &kind
16357			}
16358		case "type":
16359			if v != nil {
16360				var typeVar string
16361				err = json.Unmarshal(*v, &typeVar)
16362				if err != nil {
16363					return err
16364				}
16365				pi.Type = &typeVar
16366			}
16367		}
16368	}
16369
16370	return nil
16371}
16372
16373// ProcessInfoCollection collection of Kudu process information elements.
16374type ProcessInfoCollection struct {
16375	autorest.Response `json:"-"`
16376	// Value - Collection of resources.
16377	Value *[]ProcessInfo `json:"value,omitempty"`
16378	// NextLink - READ-ONLY; Link to next page of resources.
16379	NextLink *string `json:"nextLink,omitempty"`
16380}
16381
16382// MarshalJSON is the custom marshaler for ProcessInfoCollection.
16383func (pic ProcessInfoCollection) MarshalJSON() ([]byte, error) {
16384	objectMap := make(map[string]interface{})
16385	if pic.Value != nil {
16386		objectMap["value"] = pic.Value
16387	}
16388	return json.Marshal(objectMap)
16389}
16390
16391// ProcessInfoCollectionIterator provides access to a complete listing of ProcessInfo values.
16392type ProcessInfoCollectionIterator struct {
16393	i    int
16394	page ProcessInfoCollectionPage
16395}
16396
16397// NextWithContext advances to the next value.  If there was an error making
16398// the request the iterator does not advance and the error is returned.
16399func (iter *ProcessInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16400	if tracing.IsEnabled() {
16401		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionIterator.NextWithContext")
16402		defer func() {
16403			sc := -1
16404			if iter.Response().Response.Response != nil {
16405				sc = iter.Response().Response.Response.StatusCode
16406			}
16407			tracing.EndSpan(ctx, sc, err)
16408		}()
16409	}
16410	iter.i++
16411	if iter.i < len(iter.page.Values()) {
16412		return nil
16413	}
16414	err = iter.page.NextWithContext(ctx)
16415	if err != nil {
16416		iter.i--
16417		return err
16418	}
16419	iter.i = 0
16420	return nil
16421}
16422
16423// Next advances to the next value.  If there was an error making
16424// the request the iterator does not advance and the error is returned.
16425// Deprecated: Use NextWithContext() instead.
16426func (iter *ProcessInfoCollectionIterator) Next() error {
16427	return iter.NextWithContext(context.Background())
16428}
16429
16430// NotDone returns true if the enumeration should be started or is not yet complete.
16431func (iter ProcessInfoCollectionIterator) NotDone() bool {
16432	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16433}
16434
16435// Response returns the raw server response from the last page request.
16436func (iter ProcessInfoCollectionIterator) Response() ProcessInfoCollection {
16437	return iter.page.Response()
16438}
16439
16440// Value returns the current value or a zero-initialized value if the
16441// iterator has advanced beyond the end of the collection.
16442func (iter ProcessInfoCollectionIterator) Value() ProcessInfo {
16443	if !iter.page.NotDone() {
16444		return ProcessInfo{}
16445	}
16446	return iter.page.Values()[iter.i]
16447}
16448
16449// Creates a new instance of the ProcessInfoCollectionIterator type.
16450func NewProcessInfoCollectionIterator(page ProcessInfoCollectionPage) ProcessInfoCollectionIterator {
16451	return ProcessInfoCollectionIterator{page: page}
16452}
16453
16454// IsEmpty returns true if the ListResult contains no values.
16455func (pic ProcessInfoCollection) IsEmpty() bool {
16456	return pic.Value == nil || len(*pic.Value) == 0
16457}
16458
16459// hasNextLink returns true if the NextLink is not empty.
16460func (pic ProcessInfoCollection) hasNextLink() bool {
16461	return pic.NextLink != nil && len(*pic.NextLink) != 0
16462}
16463
16464// processInfoCollectionPreparer prepares a request to retrieve the next set of results.
16465// It returns nil if no more results exist.
16466func (pic ProcessInfoCollection) processInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
16467	if !pic.hasNextLink() {
16468		return nil, nil
16469	}
16470	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16471		autorest.AsJSON(),
16472		autorest.AsGet(),
16473		autorest.WithBaseURL(to.String(pic.NextLink)))
16474}
16475
16476// ProcessInfoCollectionPage contains a page of ProcessInfo values.
16477type ProcessInfoCollectionPage struct {
16478	fn  func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)
16479	pic ProcessInfoCollection
16480}
16481
16482// NextWithContext advances to the next page of values.  If there was an error making
16483// the request the page does not advance and the error is returned.
16484func (page *ProcessInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
16485	if tracing.IsEnabled() {
16486		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessInfoCollectionPage.NextWithContext")
16487		defer func() {
16488			sc := -1
16489			if page.Response().Response.Response != nil {
16490				sc = page.Response().Response.Response.StatusCode
16491			}
16492			tracing.EndSpan(ctx, sc, err)
16493		}()
16494	}
16495	for {
16496		next, err := page.fn(ctx, page.pic)
16497		if err != nil {
16498			return err
16499		}
16500		page.pic = next
16501		if !next.hasNextLink() || !next.IsEmpty() {
16502			break
16503		}
16504	}
16505	return nil
16506}
16507
16508// Next advances to the next page of values.  If there was an error making
16509// the request the page does not advance and the error is returned.
16510// Deprecated: Use NextWithContext() instead.
16511func (page *ProcessInfoCollectionPage) Next() error {
16512	return page.NextWithContext(context.Background())
16513}
16514
16515// NotDone returns true if the page enumeration should be started or is not yet complete.
16516func (page ProcessInfoCollectionPage) NotDone() bool {
16517	return !page.pic.IsEmpty()
16518}
16519
16520// Response returns the raw server response from the last page request.
16521func (page ProcessInfoCollectionPage) Response() ProcessInfoCollection {
16522	return page.pic
16523}
16524
16525// Values returns the slice of values for the current page or nil if there are no values.
16526func (page ProcessInfoCollectionPage) Values() []ProcessInfo {
16527	if page.pic.IsEmpty() {
16528		return nil
16529	}
16530	return *page.pic.Value
16531}
16532
16533// Creates a new instance of the ProcessInfoCollectionPage type.
16534func NewProcessInfoCollectionPage(cur ProcessInfoCollection, getNextPage func(context.Context, ProcessInfoCollection) (ProcessInfoCollection, error)) ProcessInfoCollectionPage {
16535	return ProcessInfoCollectionPage{
16536		fn:  getNextPage,
16537		pic: cur,
16538	}
16539}
16540
16541// ProcessInfoProperties processInfo resource specific properties
16542type ProcessInfoProperties struct {
16543	// Identifier - READ-ONLY; ARM Identifier for deployment.
16544	Identifier *int32 `json:"identifier,omitempty"`
16545	// DeploymentName - Deployment name.
16546	DeploymentName *string `json:"deployment_name,omitempty"`
16547	// Href - HRef URI.
16548	Href *string `json:"href,omitempty"`
16549	// Minidump - Minidump URI.
16550	Minidump *string `json:"minidump,omitempty"`
16551	// IsProfileRunning - Is profile running?
16552	IsProfileRunning *bool `json:"is_profile_running,omitempty"`
16553	// IsIisProfileRunning - Is the IIS Profile running?
16554	IsIisProfileRunning *bool `json:"is_iis_profile_running,omitempty"`
16555	// IisProfileTimeoutInSeconds - IIS Profile timeout (seconds).
16556	IisProfileTimeoutInSeconds *float64 `json:"iis_profile_timeout_in_seconds,omitempty"`
16557	// Parent - Parent process.
16558	Parent *string `json:"parent,omitempty"`
16559	// Children - Child process list.
16560	Children *[]string `json:"children,omitempty"`
16561	// Threads - Thread list.
16562	Threads *[]ProcessThreadInfo `json:"threads,omitempty"`
16563	// OpenFileHandles - List of open files.
16564	OpenFileHandles *[]string `json:"open_file_handles,omitempty"`
16565	// Modules - List of modules.
16566	Modules *[]ProcessModuleInfo `json:"modules,omitempty"`
16567	// FileName - File name of this process.
16568	FileName *string `json:"file_name,omitempty"`
16569	// CommandLine - Command line.
16570	CommandLine *string `json:"command_line,omitempty"`
16571	// UserName - User name.
16572	UserName *string `json:"user_name,omitempty"`
16573	// HandleCount - Handle count.
16574	HandleCount *int32 `json:"handle_count,omitempty"`
16575	// ModuleCount - Module count.
16576	ModuleCount *int32 `json:"module_count,omitempty"`
16577	// ThreadCount - Thread count.
16578	ThreadCount *int32 `json:"thread_count,omitempty"`
16579	// StartTime - Start time.
16580	StartTime *date.Time `json:"start_time,omitempty"`
16581	// TotalCPUTime - Total CPU time.
16582	TotalCPUTime *string `json:"total_cpu_time,omitempty"`
16583	// UserCPUTime - User CPU time.
16584	UserCPUTime *string `json:"user_cpu_time,omitempty"`
16585	// PrivilegedCPUTime - Privileged CPU time.
16586	PrivilegedCPUTime *string `json:"privileged_cpu_time,omitempty"`
16587	// WorkingSet - Working set.
16588	WorkingSet *int64 `json:"working_set,omitempty"`
16589	// PeakWorkingSet - Peak working set.
16590	PeakWorkingSet *int64 `json:"peak_working_set,omitempty"`
16591	// PrivateMemory - Private memory size.
16592	PrivateMemory *int64 `json:"private_memory,omitempty"`
16593	// VirtualMemory - Virtual memory size.
16594	VirtualMemory *int64 `json:"virtual_memory,omitempty"`
16595	// PeakVirtualMemory - Peak virtual memory usage.
16596	PeakVirtualMemory *int64 `json:"peak_virtual_memory,omitempty"`
16597	// PagedSystemMemory - Paged system memory.
16598	PagedSystemMemory *int64 `json:"paged_system_memory,omitempty"`
16599	// NonPagedSystemMemory - Non-paged system memory.
16600	NonPagedSystemMemory *int64 `json:"non_paged_system_memory,omitempty"`
16601	// PagedMemory - Paged memory.
16602	PagedMemory *int64 `json:"paged_memory,omitempty"`
16603	// PeakPagedMemory - Peak paged memory.
16604	PeakPagedMemory *int64 `json:"peak_paged_memory,omitempty"`
16605	// TimeStamp - Time stamp.
16606	TimeStamp *date.Time `json:"time_stamp,omitempty"`
16607	// EnvironmentVariables - List of environment variables.
16608	EnvironmentVariables map[string]*string `json:"environment_variables"`
16609	// IsScmSite - Is this the SCM site?
16610	IsScmSite *bool `json:"is_scm_site,omitempty"`
16611	// IsWebjob - Is this a Web Job?
16612	IsWebjob *bool `json:"is_webjob,omitempty"`
16613	// Description - Description of process.
16614	Description *string `json:"description,omitempty"`
16615}
16616
16617// MarshalJSON is the custom marshaler for ProcessInfoProperties.
16618func (pi ProcessInfoProperties) MarshalJSON() ([]byte, error) {
16619	objectMap := make(map[string]interface{})
16620	if pi.DeploymentName != nil {
16621		objectMap["deployment_name"] = pi.DeploymentName
16622	}
16623	if pi.Href != nil {
16624		objectMap["href"] = pi.Href
16625	}
16626	if pi.Minidump != nil {
16627		objectMap["minidump"] = pi.Minidump
16628	}
16629	if pi.IsProfileRunning != nil {
16630		objectMap["is_profile_running"] = pi.IsProfileRunning
16631	}
16632	if pi.IsIisProfileRunning != nil {
16633		objectMap["is_iis_profile_running"] = pi.IsIisProfileRunning
16634	}
16635	if pi.IisProfileTimeoutInSeconds != nil {
16636		objectMap["iis_profile_timeout_in_seconds"] = pi.IisProfileTimeoutInSeconds
16637	}
16638	if pi.Parent != nil {
16639		objectMap["parent"] = pi.Parent
16640	}
16641	if pi.Children != nil {
16642		objectMap["children"] = pi.Children
16643	}
16644	if pi.Threads != nil {
16645		objectMap["threads"] = pi.Threads
16646	}
16647	if pi.OpenFileHandles != nil {
16648		objectMap["open_file_handles"] = pi.OpenFileHandles
16649	}
16650	if pi.Modules != nil {
16651		objectMap["modules"] = pi.Modules
16652	}
16653	if pi.FileName != nil {
16654		objectMap["file_name"] = pi.FileName
16655	}
16656	if pi.CommandLine != nil {
16657		objectMap["command_line"] = pi.CommandLine
16658	}
16659	if pi.UserName != nil {
16660		objectMap["user_name"] = pi.UserName
16661	}
16662	if pi.HandleCount != nil {
16663		objectMap["handle_count"] = pi.HandleCount
16664	}
16665	if pi.ModuleCount != nil {
16666		objectMap["module_count"] = pi.ModuleCount
16667	}
16668	if pi.ThreadCount != nil {
16669		objectMap["thread_count"] = pi.ThreadCount
16670	}
16671	if pi.StartTime != nil {
16672		objectMap["start_time"] = pi.StartTime
16673	}
16674	if pi.TotalCPUTime != nil {
16675		objectMap["total_cpu_time"] = pi.TotalCPUTime
16676	}
16677	if pi.UserCPUTime != nil {
16678		objectMap["user_cpu_time"] = pi.UserCPUTime
16679	}
16680	if pi.PrivilegedCPUTime != nil {
16681		objectMap["privileged_cpu_time"] = pi.PrivilegedCPUTime
16682	}
16683	if pi.WorkingSet != nil {
16684		objectMap["working_set"] = pi.WorkingSet
16685	}
16686	if pi.PeakWorkingSet != nil {
16687		objectMap["peak_working_set"] = pi.PeakWorkingSet
16688	}
16689	if pi.PrivateMemory != nil {
16690		objectMap["private_memory"] = pi.PrivateMemory
16691	}
16692	if pi.VirtualMemory != nil {
16693		objectMap["virtual_memory"] = pi.VirtualMemory
16694	}
16695	if pi.PeakVirtualMemory != nil {
16696		objectMap["peak_virtual_memory"] = pi.PeakVirtualMemory
16697	}
16698	if pi.PagedSystemMemory != nil {
16699		objectMap["paged_system_memory"] = pi.PagedSystemMemory
16700	}
16701	if pi.NonPagedSystemMemory != nil {
16702		objectMap["non_paged_system_memory"] = pi.NonPagedSystemMemory
16703	}
16704	if pi.PagedMemory != nil {
16705		objectMap["paged_memory"] = pi.PagedMemory
16706	}
16707	if pi.PeakPagedMemory != nil {
16708		objectMap["peak_paged_memory"] = pi.PeakPagedMemory
16709	}
16710	if pi.TimeStamp != nil {
16711		objectMap["time_stamp"] = pi.TimeStamp
16712	}
16713	if pi.EnvironmentVariables != nil {
16714		objectMap["environment_variables"] = pi.EnvironmentVariables
16715	}
16716	if pi.IsScmSite != nil {
16717		objectMap["is_scm_site"] = pi.IsScmSite
16718	}
16719	if pi.IsWebjob != nil {
16720		objectMap["is_webjob"] = pi.IsWebjob
16721	}
16722	if pi.Description != nil {
16723		objectMap["description"] = pi.Description
16724	}
16725	return json.Marshal(objectMap)
16726}
16727
16728// ProcessModuleInfo process Module Information.
16729type ProcessModuleInfo struct {
16730	autorest.Response `json:"-"`
16731	// ProcessModuleInfoProperties - ProcessModuleInfo resource specific properties
16732	*ProcessModuleInfoProperties `json:"properties,omitempty"`
16733	// ID - READ-ONLY; Resource Id.
16734	ID *string `json:"id,omitempty"`
16735	// Name - READ-ONLY; Resource Name.
16736	Name *string `json:"name,omitempty"`
16737	// Kind - Kind of resource.
16738	Kind *string `json:"kind,omitempty"`
16739	// Type - READ-ONLY; Resource type.
16740	Type *string `json:"type,omitempty"`
16741}
16742
16743// MarshalJSON is the custom marshaler for ProcessModuleInfo.
16744func (pmi ProcessModuleInfo) MarshalJSON() ([]byte, error) {
16745	objectMap := make(map[string]interface{})
16746	if pmi.ProcessModuleInfoProperties != nil {
16747		objectMap["properties"] = pmi.ProcessModuleInfoProperties
16748	}
16749	if pmi.Kind != nil {
16750		objectMap["kind"] = pmi.Kind
16751	}
16752	return json.Marshal(objectMap)
16753}
16754
16755// UnmarshalJSON is the custom unmarshaler for ProcessModuleInfo struct.
16756func (pmi *ProcessModuleInfo) UnmarshalJSON(body []byte) error {
16757	var m map[string]*json.RawMessage
16758	err := json.Unmarshal(body, &m)
16759	if err != nil {
16760		return err
16761	}
16762	for k, v := range m {
16763		switch k {
16764		case "properties":
16765			if v != nil {
16766				var processModuleInfoProperties ProcessModuleInfoProperties
16767				err = json.Unmarshal(*v, &processModuleInfoProperties)
16768				if err != nil {
16769					return err
16770				}
16771				pmi.ProcessModuleInfoProperties = &processModuleInfoProperties
16772			}
16773		case "id":
16774			if v != nil {
16775				var ID string
16776				err = json.Unmarshal(*v, &ID)
16777				if err != nil {
16778					return err
16779				}
16780				pmi.ID = &ID
16781			}
16782		case "name":
16783			if v != nil {
16784				var name string
16785				err = json.Unmarshal(*v, &name)
16786				if err != nil {
16787					return err
16788				}
16789				pmi.Name = &name
16790			}
16791		case "kind":
16792			if v != nil {
16793				var kind string
16794				err = json.Unmarshal(*v, &kind)
16795				if err != nil {
16796					return err
16797				}
16798				pmi.Kind = &kind
16799			}
16800		case "type":
16801			if v != nil {
16802				var typeVar string
16803				err = json.Unmarshal(*v, &typeVar)
16804				if err != nil {
16805					return err
16806				}
16807				pmi.Type = &typeVar
16808			}
16809		}
16810	}
16811
16812	return nil
16813}
16814
16815// ProcessModuleInfoCollection collection of Kudu thread information elements.
16816type ProcessModuleInfoCollection struct {
16817	autorest.Response `json:"-"`
16818	// Value - Collection of resources.
16819	Value *[]ProcessModuleInfo `json:"value,omitempty"`
16820	// NextLink - READ-ONLY; Link to next page of resources.
16821	NextLink *string `json:"nextLink,omitempty"`
16822}
16823
16824// MarshalJSON is the custom marshaler for ProcessModuleInfoCollection.
16825func (pmic ProcessModuleInfoCollection) MarshalJSON() ([]byte, error) {
16826	objectMap := make(map[string]interface{})
16827	if pmic.Value != nil {
16828		objectMap["value"] = pmic.Value
16829	}
16830	return json.Marshal(objectMap)
16831}
16832
16833// ProcessModuleInfoCollectionIterator provides access to a complete listing of ProcessModuleInfo values.
16834type ProcessModuleInfoCollectionIterator struct {
16835	i    int
16836	page ProcessModuleInfoCollectionPage
16837}
16838
16839// NextWithContext advances to the next value.  If there was an error making
16840// the request the iterator does not advance and the error is returned.
16841func (iter *ProcessModuleInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
16842	if tracing.IsEnabled() {
16843		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionIterator.NextWithContext")
16844		defer func() {
16845			sc := -1
16846			if iter.Response().Response.Response != nil {
16847				sc = iter.Response().Response.Response.StatusCode
16848			}
16849			tracing.EndSpan(ctx, sc, err)
16850		}()
16851	}
16852	iter.i++
16853	if iter.i < len(iter.page.Values()) {
16854		return nil
16855	}
16856	err = iter.page.NextWithContext(ctx)
16857	if err != nil {
16858		iter.i--
16859		return err
16860	}
16861	iter.i = 0
16862	return nil
16863}
16864
16865// Next advances to the next value.  If there was an error making
16866// the request the iterator does not advance and the error is returned.
16867// Deprecated: Use NextWithContext() instead.
16868func (iter *ProcessModuleInfoCollectionIterator) Next() error {
16869	return iter.NextWithContext(context.Background())
16870}
16871
16872// NotDone returns true if the enumeration should be started or is not yet complete.
16873func (iter ProcessModuleInfoCollectionIterator) NotDone() bool {
16874	return iter.page.NotDone() && iter.i < len(iter.page.Values())
16875}
16876
16877// Response returns the raw server response from the last page request.
16878func (iter ProcessModuleInfoCollectionIterator) Response() ProcessModuleInfoCollection {
16879	return iter.page.Response()
16880}
16881
16882// Value returns the current value or a zero-initialized value if the
16883// iterator has advanced beyond the end of the collection.
16884func (iter ProcessModuleInfoCollectionIterator) Value() ProcessModuleInfo {
16885	if !iter.page.NotDone() {
16886		return ProcessModuleInfo{}
16887	}
16888	return iter.page.Values()[iter.i]
16889}
16890
16891// Creates a new instance of the ProcessModuleInfoCollectionIterator type.
16892func NewProcessModuleInfoCollectionIterator(page ProcessModuleInfoCollectionPage) ProcessModuleInfoCollectionIterator {
16893	return ProcessModuleInfoCollectionIterator{page: page}
16894}
16895
16896// IsEmpty returns true if the ListResult contains no values.
16897func (pmic ProcessModuleInfoCollection) IsEmpty() bool {
16898	return pmic.Value == nil || len(*pmic.Value) == 0
16899}
16900
16901// hasNextLink returns true if the NextLink is not empty.
16902func (pmic ProcessModuleInfoCollection) hasNextLink() bool {
16903	return pmic.NextLink != nil && len(*pmic.NextLink) != 0
16904}
16905
16906// processModuleInfoCollectionPreparer prepares a request to retrieve the next set of results.
16907// It returns nil if no more results exist.
16908func (pmic ProcessModuleInfoCollection) processModuleInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
16909	if !pmic.hasNextLink() {
16910		return nil, nil
16911	}
16912	return autorest.Prepare((&http.Request{}).WithContext(ctx),
16913		autorest.AsJSON(),
16914		autorest.AsGet(),
16915		autorest.WithBaseURL(to.String(pmic.NextLink)))
16916}
16917
16918// ProcessModuleInfoCollectionPage contains a page of ProcessModuleInfo values.
16919type ProcessModuleInfoCollectionPage struct {
16920	fn   func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)
16921	pmic ProcessModuleInfoCollection
16922}
16923
16924// NextWithContext advances to the next page of values.  If there was an error making
16925// the request the page does not advance and the error is returned.
16926func (page *ProcessModuleInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
16927	if tracing.IsEnabled() {
16928		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessModuleInfoCollectionPage.NextWithContext")
16929		defer func() {
16930			sc := -1
16931			if page.Response().Response.Response != nil {
16932				sc = page.Response().Response.Response.StatusCode
16933			}
16934			tracing.EndSpan(ctx, sc, err)
16935		}()
16936	}
16937	for {
16938		next, err := page.fn(ctx, page.pmic)
16939		if err != nil {
16940			return err
16941		}
16942		page.pmic = next
16943		if !next.hasNextLink() || !next.IsEmpty() {
16944			break
16945		}
16946	}
16947	return nil
16948}
16949
16950// Next advances to the next page of values.  If there was an error making
16951// the request the page does not advance and the error is returned.
16952// Deprecated: Use NextWithContext() instead.
16953func (page *ProcessModuleInfoCollectionPage) Next() error {
16954	return page.NextWithContext(context.Background())
16955}
16956
16957// NotDone returns true if the page enumeration should be started or is not yet complete.
16958func (page ProcessModuleInfoCollectionPage) NotDone() bool {
16959	return !page.pmic.IsEmpty()
16960}
16961
16962// Response returns the raw server response from the last page request.
16963func (page ProcessModuleInfoCollectionPage) Response() ProcessModuleInfoCollection {
16964	return page.pmic
16965}
16966
16967// Values returns the slice of values for the current page or nil if there are no values.
16968func (page ProcessModuleInfoCollectionPage) Values() []ProcessModuleInfo {
16969	if page.pmic.IsEmpty() {
16970		return nil
16971	}
16972	return *page.pmic.Value
16973}
16974
16975// Creates a new instance of the ProcessModuleInfoCollectionPage type.
16976func NewProcessModuleInfoCollectionPage(cur ProcessModuleInfoCollection, getNextPage func(context.Context, ProcessModuleInfoCollection) (ProcessModuleInfoCollection, error)) ProcessModuleInfoCollectionPage {
16977	return ProcessModuleInfoCollectionPage{
16978		fn:   getNextPage,
16979		pmic: cur,
16980	}
16981}
16982
16983// ProcessModuleInfoProperties processModuleInfo resource specific properties
16984type ProcessModuleInfoProperties struct {
16985	// BaseAddress - Base address. Used as module identifier in ARM resource URI.
16986	BaseAddress *string `json:"base_address,omitempty"`
16987	// FileName - File name.
16988	FileName *string `json:"file_name,omitempty"`
16989	// Href - HRef URI.
16990	Href *string `json:"href,omitempty"`
16991	// FilePath - File path.
16992	FilePath *string `json:"file_path,omitempty"`
16993	// ModuleMemorySize - Module memory size.
16994	ModuleMemorySize *int32 `json:"module_memory_size,omitempty"`
16995	// FileVersion - File version.
16996	FileVersion *string `json:"file_version,omitempty"`
16997	// FileDescription - File description.
16998	FileDescription *string `json:"file_description,omitempty"`
16999	// Product - Product name.
17000	Product *string `json:"product,omitempty"`
17001	// ProductVersion - Product version.
17002	ProductVersion *string `json:"product_version,omitempty"`
17003	// IsDebug - Is debug?
17004	IsDebug *bool `json:"is_debug,omitempty"`
17005	// Language - Module language (locale).
17006	Language *string `json:"language,omitempty"`
17007}
17008
17009// ProcessThreadInfo process Thread Information.
17010type ProcessThreadInfo struct {
17011	// ProcessThreadInfoProperties - ProcessThreadInfo resource specific properties
17012	*ProcessThreadInfoProperties `json:"properties,omitempty"`
17013	// ID - READ-ONLY; Resource Id.
17014	ID *string `json:"id,omitempty"`
17015	// Name - READ-ONLY; Resource Name.
17016	Name *string `json:"name,omitempty"`
17017	// Kind - Kind of resource.
17018	Kind *string `json:"kind,omitempty"`
17019	// Type - READ-ONLY; Resource type.
17020	Type *string `json:"type,omitempty"`
17021}
17022
17023// MarshalJSON is the custom marshaler for ProcessThreadInfo.
17024func (pti ProcessThreadInfo) MarshalJSON() ([]byte, error) {
17025	objectMap := make(map[string]interface{})
17026	if pti.ProcessThreadInfoProperties != nil {
17027		objectMap["properties"] = pti.ProcessThreadInfoProperties
17028	}
17029	if pti.Kind != nil {
17030		objectMap["kind"] = pti.Kind
17031	}
17032	return json.Marshal(objectMap)
17033}
17034
17035// UnmarshalJSON is the custom unmarshaler for ProcessThreadInfo struct.
17036func (pti *ProcessThreadInfo) UnmarshalJSON(body []byte) error {
17037	var m map[string]*json.RawMessage
17038	err := json.Unmarshal(body, &m)
17039	if err != nil {
17040		return err
17041	}
17042	for k, v := range m {
17043		switch k {
17044		case "properties":
17045			if v != nil {
17046				var processThreadInfoProperties ProcessThreadInfoProperties
17047				err = json.Unmarshal(*v, &processThreadInfoProperties)
17048				if err != nil {
17049					return err
17050				}
17051				pti.ProcessThreadInfoProperties = &processThreadInfoProperties
17052			}
17053		case "id":
17054			if v != nil {
17055				var ID string
17056				err = json.Unmarshal(*v, &ID)
17057				if err != nil {
17058					return err
17059				}
17060				pti.ID = &ID
17061			}
17062		case "name":
17063			if v != nil {
17064				var name string
17065				err = json.Unmarshal(*v, &name)
17066				if err != nil {
17067					return err
17068				}
17069				pti.Name = &name
17070			}
17071		case "kind":
17072			if v != nil {
17073				var kind string
17074				err = json.Unmarshal(*v, &kind)
17075				if err != nil {
17076					return err
17077				}
17078				pti.Kind = &kind
17079			}
17080		case "type":
17081			if v != nil {
17082				var typeVar string
17083				err = json.Unmarshal(*v, &typeVar)
17084				if err != nil {
17085					return err
17086				}
17087				pti.Type = &typeVar
17088			}
17089		}
17090	}
17091
17092	return nil
17093}
17094
17095// ProcessThreadInfoCollection collection of Kudu thread information elements.
17096type ProcessThreadInfoCollection struct {
17097	autorest.Response `json:"-"`
17098	// Value - Collection of resources.
17099	Value *[]ProcessThreadInfo `json:"value,omitempty"`
17100	// NextLink - READ-ONLY; Link to next page of resources.
17101	NextLink *string `json:"nextLink,omitempty"`
17102}
17103
17104// MarshalJSON is the custom marshaler for ProcessThreadInfoCollection.
17105func (ptic ProcessThreadInfoCollection) MarshalJSON() ([]byte, error) {
17106	objectMap := make(map[string]interface{})
17107	if ptic.Value != nil {
17108		objectMap["value"] = ptic.Value
17109	}
17110	return json.Marshal(objectMap)
17111}
17112
17113// ProcessThreadInfoCollectionIterator provides access to a complete listing of ProcessThreadInfo values.
17114type ProcessThreadInfoCollectionIterator struct {
17115	i    int
17116	page ProcessThreadInfoCollectionPage
17117}
17118
17119// NextWithContext advances to the next value.  If there was an error making
17120// the request the iterator does not advance and the error is returned.
17121func (iter *ProcessThreadInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17122	if tracing.IsEnabled() {
17123		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionIterator.NextWithContext")
17124		defer func() {
17125			sc := -1
17126			if iter.Response().Response.Response != nil {
17127				sc = iter.Response().Response.Response.StatusCode
17128			}
17129			tracing.EndSpan(ctx, sc, err)
17130		}()
17131	}
17132	iter.i++
17133	if iter.i < len(iter.page.Values()) {
17134		return nil
17135	}
17136	err = iter.page.NextWithContext(ctx)
17137	if err != nil {
17138		iter.i--
17139		return err
17140	}
17141	iter.i = 0
17142	return nil
17143}
17144
17145// Next advances to the next value.  If there was an error making
17146// the request the iterator does not advance and the error is returned.
17147// Deprecated: Use NextWithContext() instead.
17148func (iter *ProcessThreadInfoCollectionIterator) Next() error {
17149	return iter.NextWithContext(context.Background())
17150}
17151
17152// NotDone returns true if the enumeration should be started or is not yet complete.
17153func (iter ProcessThreadInfoCollectionIterator) NotDone() bool {
17154	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17155}
17156
17157// Response returns the raw server response from the last page request.
17158func (iter ProcessThreadInfoCollectionIterator) Response() ProcessThreadInfoCollection {
17159	return iter.page.Response()
17160}
17161
17162// Value returns the current value or a zero-initialized value if the
17163// iterator has advanced beyond the end of the collection.
17164func (iter ProcessThreadInfoCollectionIterator) Value() ProcessThreadInfo {
17165	if !iter.page.NotDone() {
17166		return ProcessThreadInfo{}
17167	}
17168	return iter.page.Values()[iter.i]
17169}
17170
17171// Creates a new instance of the ProcessThreadInfoCollectionIterator type.
17172func NewProcessThreadInfoCollectionIterator(page ProcessThreadInfoCollectionPage) ProcessThreadInfoCollectionIterator {
17173	return ProcessThreadInfoCollectionIterator{page: page}
17174}
17175
17176// IsEmpty returns true if the ListResult contains no values.
17177func (ptic ProcessThreadInfoCollection) IsEmpty() bool {
17178	return ptic.Value == nil || len(*ptic.Value) == 0
17179}
17180
17181// hasNextLink returns true if the NextLink is not empty.
17182func (ptic ProcessThreadInfoCollection) hasNextLink() bool {
17183	return ptic.NextLink != nil && len(*ptic.NextLink) != 0
17184}
17185
17186// processThreadInfoCollectionPreparer prepares a request to retrieve the next set of results.
17187// It returns nil if no more results exist.
17188func (ptic ProcessThreadInfoCollection) processThreadInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
17189	if !ptic.hasNextLink() {
17190		return nil, nil
17191	}
17192	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17193		autorest.AsJSON(),
17194		autorest.AsGet(),
17195		autorest.WithBaseURL(to.String(ptic.NextLink)))
17196}
17197
17198// ProcessThreadInfoCollectionPage contains a page of ProcessThreadInfo values.
17199type ProcessThreadInfoCollectionPage struct {
17200	fn   func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)
17201	ptic ProcessThreadInfoCollection
17202}
17203
17204// NextWithContext advances to the next page of values.  If there was an error making
17205// the request the page does not advance and the error is returned.
17206func (page *ProcessThreadInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
17207	if tracing.IsEnabled() {
17208		ctx = tracing.StartSpan(ctx, fqdn+"/ProcessThreadInfoCollectionPage.NextWithContext")
17209		defer func() {
17210			sc := -1
17211			if page.Response().Response.Response != nil {
17212				sc = page.Response().Response.Response.StatusCode
17213			}
17214			tracing.EndSpan(ctx, sc, err)
17215		}()
17216	}
17217	for {
17218		next, err := page.fn(ctx, page.ptic)
17219		if err != nil {
17220			return err
17221		}
17222		page.ptic = next
17223		if !next.hasNextLink() || !next.IsEmpty() {
17224			break
17225		}
17226	}
17227	return nil
17228}
17229
17230// Next advances to the next page of values.  If there was an error making
17231// the request the page does not advance and the error is returned.
17232// Deprecated: Use NextWithContext() instead.
17233func (page *ProcessThreadInfoCollectionPage) Next() error {
17234	return page.NextWithContext(context.Background())
17235}
17236
17237// NotDone returns true if the page enumeration should be started or is not yet complete.
17238func (page ProcessThreadInfoCollectionPage) NotDone() bool {
17239	return !page.ptic.IsEmpty()
17240}
17241
17242// Response returns the raw server response from the last page request.
17243func (page ProcessThreadInfoCollectionPage) Response() ProcessThreadInfoCollection {
17244	return page.ptic
17245}
17246
17247// Values returns the slice of values for the current page or nil if there are no values.
17248func (page ProcessThreadInfoCollectionPage) Values() []ProcessThreadInfo {
17249	if page.ptic.IsEmpty() {
17250		return nil
17251	}
17252	return *page.ptic.Value
17253}
17254
17255// Creates a new instance of the ProcessThreadInfoCollectionPage type.
17256func NewProcessThreadInfoCollectionPage(cur ProcessThreadInfoCollection, getNextPage func(context.Context, ProcessThreadInfoCollection) (ProcessThreadInfoCollection, error)) ProcessThreadInfoCollectionPage {
17257	return ProcessThreadInfoCollectionPage{
17258		fn:   getNextPage,
17259		ptic: cur,
17260	}
17261}
17262
17263// ProcessThreadInfoProperties processThreadInfo resource specific properties
17264type ProcessThreadInfoProperties struct {
17265	// Identifier - READ-ONLY; Site extension ID.
17266	Identifier *int32 `json:"identifier,omitempty"`
17267	// Href - HRef URI.
17268	Href *string `json:"href,omitempty"`
17269	// Process - Process URI.
17270	Process *string `json:"process,omitempty"`
17271	// StartAddress - Start address.
17272	StartAddress *string `json:"start_address,omitempty"`
17273	// CurrentPriority - Current thread priority.
17274	CurrentPriority *int32 `json:"current_priority,omitempty"`
17275	// PriorityLevel - Thread priority level.
17276	PriorityLevel *string `json:"priority_level,omitempty"`
17277	// BasePriority - Base priority.
17278	BasePriority *int32 `json:"base_priority,omitempty"`
17279	// StartTime - Start time.
17280	StartTime *date.Time `json:"start_time,omitempty"`
17281	// TotalProcessorTime - Total processor time.
17282	TotalProcessorTime *string `json:"total_processor_time,omitempty"`
17283	// UserProcessorTime - User processor time.
17284	UserProcessorTime *string `json:"user_processor_time,omitempty"`
17285	// State - Thread state.
17286	State *string `json:"state,omitempty"`
17287	// WaitReason - Wait reason.
17288	WaitReason *string `json:"wait_reason,omitempty"`
17289}
17290
17291// MarshalJSON is the custom marshaler for ProcessThreadInfoProperties.
17292func (pti ProcessThreadInfoProperties) MarshalJSON() ([]byte, error) {
17293	objectMap := make(map[string]interface{})
17294	if pti.Href != nil {
17295		objectMap["href"] = pti.Href
17296	}
17297	if pti.Process != nil {
17298		objectMap["process"] = pti.Process
17299	}
17300	if pti.StartAddress != nil {
17301		objectMap["start_address"] = pti.StartAddress
17302	}
17303	if pti.CurrentPriority != nil {
17304		objectMap["current_priority"] = pti.CurrentPriority
17305	}
17306	if pti.PriorityLevel != nil {
17307		objectMap["priority_level"] = pti.PriorityLevel
17308	}
17309	if pti.BasePriority != nil {
17310		objectMap["base_priority"] = pti.BasePriority
17311	}
17312	if pti.StartTime != nil {
17313		objectMap["start_time"] = pti.StartTime
17314	}
17315	if pti.TotalProcessorTime != nil {
17316		objectMap["total_processor_time"] = pti.TotalProcessorTime
17317	}
17318	if pti.UserProcessorTime != nil {
17319		objectMap["user_processor_time"] = pti.UserProcessorTime
17320	}
17321	if pti.State != nil {
17322		objectMap["state"] = pti.State
17323	}
17324	if pti.WaitReason != nil {
17325		objectMap["wait_reason"] = pti.WaitReason
17326	}
17327	return json.Marshal(objectMap)
17328}
17329
17330// ProxyOnlyResource azure proxy only resource. This resource is not tracked by Azure Resource Manager.
17331type ProxyOnlyResource struct {
17332	// ID - READ-ONLY; Resource Id.
17333	ID *string `json:"id,omitempty"`
17334	// Name - READ-ONLY; Resource Name.
17335	Name *string `json:"name,omitempty"`
17336	// Kind - Kind of resource.
17337	Kind *string `json:"kind,omitempty"`
17338	// Type - READ-ONLY; Resource type.
17339	Type *string `json:"type,omitempty"`
17340}
17341
17342// MarshalJSON is the custom marshaler for ProxyOnlyResource.
17343func (por ProxyOnlyResource) MarshalJSON() ([]byte, error) {
17344	objectMap := make(map[string]interface{})
17345	if por.Kind != nil {
17346		objectMap["kind"] = por.Kind
17347	}
17348	return json.Marshal(objectMap)
17349}
17350
17351// PublicCertificate public certificate object
17352type PublicCertificate struct {
17353	autorest.Response `json:"-"`
17354	// PublicCertificateProperties - PublicCertificate resource specific properties
17355	*PublicCertificateProperties `json:"properties,omitempty"`
17356	// ID - READ-ONLY; Resource Id.
17357	ID *string `json:"id,omitempty"`
17358	// Name - READ-ONLY; Resource Name.
17359	Name *string `json:"name,omitempty"`
17360	// Kind - Kind of resource.
17361	Kind *string `json:"kind,omitempty"`
17362	// Type - READ-ONLY; Resource type.
17363	Type *string `json:"type,omitempty"`
17364}
17365
17366// MarshalJSON is the custom marshaler for PublicCertificate.
17367func (pc PublicCertificate) MarshalJSON() ([]byte, error) {
17368	objectMap := make(map[string]interface{})
17369	if pc.PublicCertificateProperties != nil {
17370		objectMap["properties"] = pc.PublicCertificateProperties
17371	}
17372	if pc.Kind != nil {
17373		objectMap["kind"] = pc.Kind
17374	}
17375	return json.Marshal(objectMap)
17376}
17377
17378// UnmarshalJSON is the custom unmarshaler for PublicCertificate struct.
17379func (pc *PublicCertificate) UnmarshalJSON(body []byte) error {
17380	var m map[string]*json.RawMessage
17381	err := json.Unmarshal(body, &m)
17382	if err != nil {
17383		return err
17384	}
17385	for k, v := range m {
17386		switch k {
17387		case "properties":
17388			if v != nil {
17389				var publicCertificateProperties PublicCertificateProperties
17390				err = json.Unmarshal(*v, &publicCertificateProperties)
17391				if err != nil {
17392					return err
17393				}
17394				pc.PublicCertificateProperties = &publicCertificateProperties
17395			}
17396		case "id":
17397			if v != nil {
17398				var ID string
17399				err = json.Unmarshal(*v, &ID)
17400				if err != nil {
17401					return err
17402				}
17403				pc.ID = &ID
17404			}
17405		case "name":
17406			if v != nil {
17407				var name string
17408				err = json.Unmarshal(*v, &name)
17409				if err != nil {
17410					return err
17411				}
17412				pc.Name = &name
17413			}
17414		case "kind":
17415			if v != nil {
17416				var kind string
17417				err = json.Unmarshal(*v, &kind)
17418				if err != nil {
17419					return err
17420				}
17421				pc.Kind = &kind
17422			}
17423		case "type":
17424			if v != nil {
17425				var typeVar string
17426				err = json.Unmarshal(*v, &typeVar)
17427				if err != nil {
17428					return err
17429				}
17430				pc.Type = &typeVar
17431			}
17432		}
17433	}
17434
17435	return nil
17436}
17437
17438// PublicCertificateCollection collection of public certificates
17439type PublicCertificateCollection struct {
17440	autorest.Response `json:"-"`
17441	// Value - Collection of resources.
17442	Value *[]PublicCertificate `json:"value,omitempty"`
17443	// NextLink - READ-ONLY; Link to next page of resources.
17444	NextLink *string `json:"nextLink,omitempty"`
17445}
17446
17447// MarshalJSON is the custom marshaler for PublicCertificateCollection.
17448func (pcc PublicCertificateCollection) MarshalJSON() ([]byte, error) {
17449	objectMap := make(map[string]interface{})
17450	if pcc.Value != nil {
17451		objectMap["value"] = pcc.Value
17452	}
17453	return json.Marshal(objectMap)
17454}
17455
17456// PublicCertificateCollectionIterator provides access to a complete listing of PublicCertificate values.
17457type PublicCertificateCollectionIterator struct {
17458	i    int
17459	page PublicCertificateCollectionPage
17460}
17461
17462// NextWithContext advances to the next value.  If there was an error making
17463// the request the iterator does not advance and the error is returned.
17464func (iter *PublicCertificateCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17465	if tracing.IsEnabled() {
17466		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionIterator.NextWithContext")
17467		defer func() {
17468			sc := -1
17469			if iter.Response().Response.Response != nil {
17470				sc = iter.Response().Response.Response.StatusCode
17471			}
17472			tracing.EndSpan(ctx, sc, err)
17473		}()
17474	}
17475	iter.i++
17476	if iter.i < len(iter.page.Values()) {
17477		return nil
17478	}
17479	err = iter.page.NextWithContext(ctx)
17480	if err != nil {
17481		iter.i--
17482		return err
17483	}
17484	iter.i = 0
17485	return nil
17486}
17487
17488// Next advances to the next value.  If there was an error making
17489// the request the iterator does not advance and the error is returned.
17490// Deprecated: Use NextWithContext() instead.
17491func (iter *PublicCertificateCollectionIterator) Next() error {
17492	return iter.NextWithContext(context.Background())
17493}
17494
17495// NotDone returns true if the enumeration should be started or is not yet complete.
17496func (iter PublicCertificateCollectionIterator) NotDone() bool {
17497	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17498}
17499
17500// Response returns the raw server response from the last page request.
17501func (iter PublicCertificateCollectionIterator) Response() PublicCertificateCollection {
17502	return iter.page.Response()
17503}
17504
17505// Value returns the current value or a zero-initialized value if the
17506// iterator has advanced beyond the end of the collection.
17507func (iter PublicCertificateCollectionIterator) Value() PublicCertificate {
17508	if !iter.page.NotDone() {
17509		return PublicCertificate{}
17510	}
17511	return iter.page.Values()[iter.i]
17512}
17513
17514// Creates a new instance of the PublicCertificateCollectionIterator type.
17515func NewPublicCertificateCollectionIterator(page PublicCertificateCollectionPage) PublicCertificateCollectionIterator {
17516	return PublicCertificateCollectionIterator{page: page}
17517}
17518
17519// IsEmpty returns true if the ListResult contains no values.
17520func (pcc PublicCertificateCollection) IsEmpty() bool {
17521	return pcc.Value == nil || len(*pcc.Value) == 0
17522}
17523
17524// hasNextLink returns true if the NextLink is not empty.
17525func (pcc PublicCertificateCollection) hasNextLink() bool {
17526	return pcc.NextLink != nil && len(*pcc.NextLink) != 0
17527}
17528
17529// publicCertificateCollectionPreparer prepares a request to retrieve the next set of results.
17530// It returns nil if no more results exist.
17531func (pcc PublicCertificateCollection) publicCertificateCollectionPreparer(ctx context.Context) (*http.Request, error) {
17532	if !pcc.hasNextLink() {
17533		return nil, nil
17534	}
17535	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17536		autorest.AsJSON(),
17537		autorest.AsGet(),
17538		autorest.WithBaseURL(to.String(pcc.NextLink)))
17539}
17540
17541// PublicCertificateCollectionPage contains a page of PublicCertificate values.
17542type PublicCertificateCollectionPage struct {
17543	fn  func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)
17544	pcc PublicCertificateCollection
17545}
17546
17547// NextWithContext advances to the next page of values.  If there was an error making
17548// the request the page does not advance and the error is returned.
17549func (page *PublicCertificateCollectionPage) NextWithContext(ctx context.Context) (err error) {
17550	if tracing.IsEnabled() {
17551		ctx = tracing.StartSpan(ctx, fqdn+"/PublicCertificateCollectionPage.NextWithContext")
17552		defer func() {
17553			sc := -1
17554			if page.Response().Response.Response != nil {
17555				sc = page.Response().Response.Response.StatusCode
17556			}
17557			tracing.EndSpan(ctx, sc, err)
17558		}()
17559	}
17560	for {
17561		next, err := page.fn(ctx, page.pcc)
17562		if err != nil {
17563			return err
17564		}
17565		page.pcc = next
17566		if !next.hasNextLink() || !next.IsEmpty() {
17567			break
17568		}
17569	}
17570	return nil
17571}
17572
17573// Next advances to the next page of values.  If there was an error making
17574// the request the page does not advance and the error is returned.
17575// Deprecated: Use NextWithContext() instead.
17576func (page *PublicCertificateCollectionPage) Next() error {
17577	return page.NextWithContext(context.Background())
17578}
17579
17580// NotDone returns true if the page enumeration should be started or is not yet complete.
17581func (page PublicCertificateCollectionPage) NotDone() bool {
17582	return !page.pcc.IsEmpty()
17583}
17584
17585// Response returns the raw server response from the last page request.
17586func (page PublicCertificateCollectionPage) Response() PublicCertificateCollection {
17587	return page.pcc
17588}
17589
17590// Values returns the slice of values for the current page or nil if there are no values.
17591func (page PublicCertificateCollectionPage) Values() []PublicCertificate {
17592	if page.pcc.IsEmpty() {
17593		return nil
17594	}
17595	return *page.pcc.Value
17596}
17597
17598// Creates a new instance of the PublicCertificateCollectionPage type.
17599func NewPublicCertificateCollectionPage(cur PublicCertificateCollection, getNextPage func(context.Context, PublicCertificateCollection) (PublicCertificateCollection, error)) PublicCertificateCollectionPage {
17600	return PublicCertificateCollectionPage{
17601		fn:  getNextPage,
17602		pcc: cur,
17603	}
17604}
17605
17606// PublicCertificateProperties publicCertificate resource specific properties
17607type PublicCertificateProperties struct {
17608	// Blob - Public Certificate byte array
17609	Blob *[]byte `json:"blob,omitempty"`
17610	// PublicCertificateLocation - Public Certificate Location. Possible values include: 'PublicCertificateLocationCurrentUserMy', 'PublicCertificateLocationLocalMachineMy', 'PublicCertificateLocationUnknown'
17611	PublicCertificateLocation PublicCertificateLocation `json:"publicCertificateLocation,omitempty"`
17612	// Thumbprint - READ-ONLY; Certificate Thumbprint
17613	Thumbprint *string `json:"thumbprint,omitempty"`
17614}
17615
17616// MarshalJSON is the custom marshaler for PublicCertificateProperties.
17617func (pc PublicCertificateProperties) MarshalJSON() ([]byte, error) {
17618	objectMap := make(map[string]interface{})
17619	if pc.Blob != nil {
17620		objectMap["blob"] = pc.Blob
17621	}
17622	if pc.PublicCertificateLocation != "" {
17623		objectMap["publicCertificateLocation"] = pc.PublicCertificateLocation
17624	}
17625	return json.Marshal(objectMap)
17626}
17627
17628// PushSettings push settings for the App.
17629type PushSettings struct {
17630	autorest.Response `json:"-"`
17631	// PushSettingsProperties - PushSettings resource specific properties
17632	*PushSettingsProperties `json:"properties,omitempty"`
17633	// ID - READ-ONLY; Resource Id.
17634	ID *string `json:"id,omitempty"`
17635	// Name - READ-ONLY; Resource Name.
17636	Name *string `json:"name,omitempty"`
17637	// Kind - Kind of resource.
17638	Kind *string `json:"kind,omitempty"`
17639	// Type - READ-ONLY; Resource type.
17640	Type *string `json:"type,omitempty"`
17641}
17642
17643// MarshalJSON is the custom marshaler for PushSettings.
17644func (ps PushSettings) MarshalJSON() ([]byte, error) {
17645	objectMap := make(map[string]interface{})
17646	if ps.PushSettingsProperties != nil {
17647		objectMap["properties"] = ps.PushSettingsProperties
17648	}
17649	if ps.Kind != nil {
17650		objectMap["kind"] = ps.Kind
17651	}
17652	return json.Marshal(objectMap)
17653}
17654
17655// UnmarshalJSON is the custom unmarshaler for PushSettings struct.
17656func (ps *PushSettings) UnmarshalJSON(body []byte) error {
17657	var m map[string]*json.RawMessage
17658	err := json.Unmarshal(body, &m)
17659	if err != nil {
17660		return err
17661	}
17662	for k, v := range m {
17663		switch k {
17664		case "properties":
17665			if v != nil {
17666				var pushSettingsProperties PushSettingsProperties
17667				err = json.Unmarshal(*v, &pushSettingsProperties)
17668				if err != nil {
17669					return err
17670				}
17671				ps.PushSettingsProperties = &pushSettingsProperties
17672			}
17673		case "id":
17674			if v != nil {
17675				var ID string
17676				err = json.Unmarshal(*v, &ID)
17677				if err != nil {
17678					return err
17679				}
17680				ps.ID = &ID
17681			}
17682		case "name":
17683			if v != nil {
17684				var name string
17685				err = json.Unmarshal(*v, &name)
17686				if err != nil {
17687					return err
17688				}
17689				ps.Name = &name
17690			}
17691		case "kind":
17692			if v != nil {
17693				var kind string
17694				err = json.Unmarshal(*v, &kind)
17695				if err != nil {
17696					return err
17697				}
17698				ps.Kind = &kind
17699			}
17700		case "type":
17701			if v != nil {
17702				var typeVar string
17703				err = json.Unmarshal(*v, &typeVar)
17704				if err != nil {
17705					return err
17706				}
17707				ps.Type = &typeVar
17708			}
17709		}
17710	}
17711
17712	return nil
17713}
17714
17715// PushSettingsProperties pushSettings resource specific properties
17716type PushSettingsProperties struct {
17717	// IsPushEnabled - Gets or sets a flag indicating whether the Push endpoint is enabled.
17718	IsPushEnabled *bool `json:"isPushEnabled,omitempty"`
17719	// TagWhitelistJSON - Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push registration endpoint.
17720	TagWhitelistJSON *string `json:"tagWhitelistJson,omitempty"`
17721	// TagsRequiringAuth - Gets or sets a JSON string containing a list of tags that require user authentication to be used in the push registration endpoint.
17722	// Tags can consist of alphanumeric characters and the following:
17723	// '_', '@', '#', '.', ':', '-'.
17724	// Validation should be performed at the PushRequestHandler.
17725	TagsRequiringAuth *string `json:"tagsRequiringAuth,omitempty"`
17726	// 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.
17727	DynamicTagsJSON *string `json:"dynamicTagsJson,omitempty"`
17728}
17729
17730// RampUpRule routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or
17731// to gradually change routing % based on performance.
17732type RampUpRule struct {
17733	// ActionHostName - Hostname of a slot to which the traffic will be redirected if decided to. E.g. myapp-stage.azurewebsites.net.
17734	ActionHostName *string `json:"actionHostName,omitempty"`
17735	// ReroutePercentage - Percentage of the traffic which will be redirected to <code>ActionHostName</code>.
17736	ReroutePercentage *float64 `json:"reroutePercentage,omitempty"`
17737	// ChangeStep - In auto ramp up scenario this is the step to add/remove from <code>ReroutePercentage</code> until it reaches \n<code>MinReroutePercentage</code> or
17738	// <code>MaxReroutePercentage</code>. Site metrics are checked every N minutes specified in <code>ChangeIntervalInMinutes</code>.\nCustom decision algorithm
17739	// can be provided in TiPCallback site extension which URL can be specified in <code>ChangeDecisionCallbackUrl</code>.
17740	ChangeStep *float64 `json:"changeStep,omitempty"`
17741	// ChangeIntervalInMinutes - Specifies interval in minutes to reevaluate ReroutePercentage.
17742	ChangeIntervalInMinutes *int32 `json:"changeIntervalInMinutes,omitempty"`
17743	// MinReroutePercentage - Specifies lower boundary above which ReroutePercentage will stay.
17744	MinReroutePercentage *float64 `json:"minReroutePercentage,omitempty"`
17745	// MaxReroutePercentage - Specifies upper boundary below which ReroutePercentage will stay.
17746	MaxReroutePercentage *float64 `json:"maxReroutePercentage,omitempty"`
17747	// 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.
17748	// https://www.siteextensions.net/packages/TiPCallback/
17749	ChangeDecisionCallbackURL *string `json:"changeDecisionCallbackUrl,omitempty"`
17750	// Name - Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment.
17751	Name *string `json:"name,omitempty"`
17752}
17753
17754// ReadCloser ...
17755type ReadCloser struct {
17756	autorest.Response `json:"-"`
17757	Value             *io.ReadCloser `json:"value,omitempty"`
17758}
17759
17760// Recommendation represents a recommendation result generated by the recommendation engine.
17761type Recommendation struct {
17762	// RecommendationProperties - Recommendation resource specific properties
17763	*RecommendationProperties `json:"properties,omitempty"`
17764	// ID - READ-ONLY; Resource Id.
17765	ID *string `json:"id,omitempty"`
17766	// Name - READ-ONLY; Resource Name.
17767	Name *string `json:"name,omitempty"`
17768	// Kind - Kind of resource.
17769	Kind *string `json:"kind,omitempty"`
17770	// Type - READ-ONLY; Resource type.
17771	Type *string `json:"type,omitempty"`
17772}
17773
17774// MarshalJSON is the custom marshaler for Recommendation.
17775func (r Recommendation) MarshalJSON() ([]byte, error) {
17776	objectMap := make(map[string]interface{})
17777	if r.RecommendationProperties != nil {
17778		objectMap["properties"] = r.RecommendationProperties
17779	}
17780	if r.Kind != nil {
17781		objectMap["kind"] = r.Kind
17782	}
17783	return json.Marshal(objectMap)
17784}
17785
17786// UnmarshalJSON is the custom unmarshaler for Recommendation struct.
17787func (r *Recommendation) UnmarshalJSON(body []byte) error {
17788	var m map[string]*json.RawMessage
17789	err := json.Unmarshal(body, &m)
17790	if err != nil {
17791		return err
17792	}
17793	for k, v := range m {
17794		switch k {
17795		case "properties":
17796			if v != nil {
17797				var recommendationProperties RecommendationProperties
17798				err = json.Unmarshal(*v, &recommendationProperties)
17799				if err != nil {
17800					return err
17801				}
17802				r.RecommendationProperties = &recommendationProperties
17803			}
17804		case "id":
17805			if v != nil {
17806				var ID string
17807				err = json.Unmarshal(*v, &ID)
17808				if err != nil {
17809					return err
17810				}
17811				r.ID = &ID
17812			}
17813		case "name":
17814			if v != nil {
17815				var name string
17816				err = json.Unmarshal(*v, &name)
17817				if err != nil {
17818					return err
17819				}
17820				r.Name = &name
17821			}
17822		case "kind":
17823			if v != nil {
17824				var kind string
17825				err = json.Unmarshal(*v, &kind)
17826				if err != nil {
17827					return err
17828				}
17829				r.Kind = &kind
17830			}
17831		case "type":
17832			if v != nil {
17833				var typeVar string
17834				err = json.Unmarshal(*v, &typeVar)
17835				if err != nil {
17836					return err
17837				}
17838				r.Type = &typeVar
17839			}
17840		}
17841	}
17842
17843	return nil
17844}
17845
17846// RecommendationCollection collection of recommendations.
17847type RecommendationCollection struct {
17848	autorest.Response `json:"-"`
17849	// Value - Collection of resources.
17850	Value *[]Recommendation `json:"value,omitempty"`
17851	// NextLink - READ-ONLY; Link to next page of resources.
17852	NextLink *string `json:"nextLink,omitempty"`
17853}
17854
17855// MarshalJSON is the custom marshaler for RecommendationCollection.
17856func (rc RecommendationCollection) MarshalJSON() ([]byte, error) {
17857	objectMap := make(map[string]interface{})
17858	if rc.Value != nil {
17859		objectMap["value"] = rc.Value
17860	}
17861	return json.Marshal(objectMap)
17862}
17863
17864// RecommendationCollectionIterator provides access to a complete listing of Recommendation values.
17865type RecommendationCollectionIterator struct {
17866	i    int
17867	page RecommendationCollectionPage
17868}
17869
17870// NextWithContext advances to the next value.  If there was an error making
17871// the request the iterator does not advance and the error is returned.
17872func (iter *RecommendationCollectionIterator) NextWithContext(ctx context.Context) (err error) {
17873	if tracing.IsEnabled() {
17874		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionIterator.NextWithContext")
17875		defer func() {
17876			sc := -1
17877			if iter.Response().Response.Response != nil {
17878				sc = iter.Response().Response.Response.StatusCode
17879			}
17880			tracing.EndSpan(ctx, sc, err)
17881		}()
17882	}
17883	iter.i++
17884	if iter.i < len(iter.page.Values()) {
17885		return nil
17886	}
17887	err = iter.page.NextWithContext(ctx)
17888	if err != nil {
17889		iter.i--
17890		return err
17891	}
17892	iter.i = 0
17893	return nil
17894}
17895
17896// Next advances to the next value.  If there was an error making
17897// the request the iterator does not advance and the error is returned.
17898// Deprecated: Use NextWithContext() instead.
17899func (iter *RecommendationCollectionIterator) Next() error {
17900	return iter.NextWithContext(context.Background())
17901}
17902
17903// NotDone returns true if the enumeration should be started or is not yet complete.
17904func (iter RecommendationCollectionIterator) NotDone() bool {
17905	return iter.page.NotDone() && iter.i < len(iter.page.Values())
17906}
17907
17908// Response returns the raw server response from the last page request.
17909func (iter RecommendationCollectionIterator) Response() RecommendationCollection {
17910	return iter.page.Response()
17911}
17912
17913// Value returns the current value or a zero-initialized value if the
17914// iterator has advanced beyond the end of the collection.
17915func (iter RecommendationCollectionIterator) Value() Recommendation {
17916	if !iter.page.NotDone() {
17917		return Recommendation{}
17918	}
17919	return iter.page.Values()[iter.i]
17920}
17921
17922// Creates a new instance of the RecommendationCollectionIterator type.
17923func NewRecommendationCollectionIterator(page RecommendationCollectionPage) RecommendationCollectionIterator {
17924	return RecommendationCollectionIterator{page: page}
17925}
17926
17927// IsEmpty returns true if the ListResult contains no values.
17928func (rc RecommendationCollection) IsEmpty() bool {
17929	return rc.Value == nil || len(*rc.Value) == 0
17930}
17931
17932// hasNextLink returns true if the NextLink is not empty.
17933func (rc RecommendationCollection) hasNextLink() bool {
17934	return rc.NextLink != nil && len(*rc.NextLink) != 0
17935}
17936
17937// recommendationCollectionPreparer prepares a request to retrieve the next set of results.
17938// It returns nil if no more results exist.
17939func (rc RecommendationCollection) recommendationCollectionPreparer(ctx context.Context) (*http.Request, error) {
17940	if !rc.hasNextLink() {
17941		return nil, nil
17942	}
17943	return autorest.Prepare((&http.Request{}).WithContext(ctx),
17944		autorest.AsJSON(),
17945		autorest.AsGet(),
17946		autorest.WithBaseURL(to.String(rc.NextLink)))
17947}
17948
17949// RecommendationCollectionPage contains a page of Recommendation values.
17950type RecommendationCollectionPage struct {
17951	fn func(context.Context, RecommendationCollection) (RecommendationCollection, error)
17952	rc RecommendationCollection
17953}
17954
17955// NextWithContext advances to the next page of values.  If there was an error making
17956// the request the page does not advance and the error is returned.
17957func (page *RecommendationCollectionPage) NextWithContext(ctx context.Context) (err error) {
17958	if tracing.IsEnabled() {
17959		ctx = tracing.StartSpan(ctx, fqdn+"/RecommendationCollectionPage.NextWithContext")
17960		defer func() {
17961			sc := -1
17962			if page.Response().Response.Response != nil {
17963				sc = page.Response().Response.Response.StatusCode
17964			}
17965			tracing.EndSpan(ctx, sc, err)
17966		}()
17967	}
17968	for {
17969		next, err := page.fn(ctx, page.rc)
17970		if err != nil {
17971			return err
17972		}
17973		page.rc = next
17974		if !next.hasNextLink() || !next.IsEmpty() {
17975			break
17976		}
17977	}
17978	return nil
17979}
17980
17981// Next advances to the next page of values.  If there was an error making
17982// the request the page does not advance and the error is returned.
17983// Deprecated: Use NextWithContext() instead.
17984func (page *RecommendationCollectionPage) Next() error {
17985	return page.NextWithContext(context.Background())
17986}
17987
17988// NotDone returns true if the page enumeration should be started or is not yet complete.
17989func (page RecommendationCollectionPage) NotDone() bool {
17990	return !page.rc.IsEmpty()
17991}
17992
17993// Response returns the raw server response from the last page request.
17994func (page RecommendationCollectionPage) Response() RecommendationCollection {
17995	return page.rc
17996}
17997
17998// Values returns the slice of values for the current page or nil if there are no values.
17999func (page RecommendationCollectionPage) Values() []Recommendation {
18000	if page.rc.IsEmpty() {
18001		return nil
18002	}
18003	return *page.rc.Value
18004}
18005
18006// Creates a new instance of the RecommendationCollectionPage type.
18007func NewRecommendationCollectionPage(cur RecommendationCollection, getNextPage func(context.Context, RecommendationCollection) (RecommendationCollection, error)) RecommendationCollectionPage {
18008	return RecommendationCollectionPage{
18009		fn: getNextPage,
18010		rc: cur,
18011	}
18012}
18013
18014// RecommendationProperties recommendation resource specific properties
18015type RecommendationProperties struct {
18016	// CreationTime - Timestamp when this instance was created.
18017	CreationTime *date.Time `json:"creationTime,omitempty"`
18018	// RecommendationID - A GUID value that each recommendation object is associated with.
18019	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
18020	// ResourceID - Full ARM resource ID string that this recommendation object is associated with.
18021	ResourceID *string `json:"resourceId,omitempty"`
18022	// ResourceScope - Name of a resource type this recommendation applies, e.g. Subscription, ServerFarm, Site. Possible values include: 'ServerFarm', 'Subscription', 'WebSite'
18023	ResourceScope ResourceScopeType `json:"resourceScope,omitempty"`
18024	// RuleName - Unique name of the rule.
18025	RuleName *string `json:"ruleName,omitempty"`
18026	// DisplayName - UI friendly name of the rule (may not be unique).
18027	DisplayName *string `json:"displayName,omitempty"`
18028	// Message - Recommendation text.
18029	Message *string `json:"message,omitempty"`
18030	// Level - Level indicating how critical this recommendation can impact. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
18031	Level NotificationLevel `json:"level,omitempty"`
18032	// Channels - List of channels that this recommendation can apply. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
18033	Channels Channels `json:"channels,omitempty"`
18034	// CategoryTags - READ-ONLY; The list of category tags that this recommendation belongs to.
18035	CategoryTags *[]string `json:"categoryTags,omitempty"`
18036	// ActionName - Name of action recommended by this object.
18037	ActionName *string `json:"actionName,omitempty"`
18038	// Enabled - True if this recommendation is still valid (i.e. "actionable"). False if it is invalid.
18039	Enabled *int32 `json:"enabled,omitempty"`
18040	// States - The list of states of this recommendation. If it's null then it should be considered "Active".
18041	States *[]string `json:"states,omitempty"`
18042	// StartTime - The beginning time in UTC of a range that the recommendation refers to.
18043	StartTime *date.Time `json:"startTime,omitempty"`
18044	// EndTime - The end time in UTC of a range that the recommendation refers to.
18045	EndTime *date.Time `json:"endTime,omitempty"`
18046	// NextNotificationTime - When to notify this recommendation next in UTC. Null means that this will never be notified anymore.
18047	NextNotificationTime *date.Time `json:"nextNotificationTime,omitempty"`
18048	// NotificationExpirationTime - Date and time in UTC when this notification expires.
18049	NotificationExpirationTime *date.Time `json:"notificationExpirationTime,omitempty"`
18050	// NotifiedTime - Last timestamp in UTC this instance was actually notified. Null means that this recommendation hasn't been notified yet.
18051	NotifiedTime *date.Time `json:"notifiedTime,omitempty"`
18052	// Score - A metric value measured by the rule.
18053	Score *float64 `json:"score,omitempty"`
18054	// IsDynamic - True if this is associated with a dynamically added rule
18055	IsDynamic *bool `json:"isDynamic,omitempty"`
18056	// ExtensionName - Extension name of the portal if exists.
18057	ExtensionName *string `json:"extensionName,omitempty"`
18058	// BladeName - Deep link to a blade on the portal.
18059	BladeName *string `json:"bladeName,omitempty"`
18060	// ForwardLink - Forward link to an external document associated with the rule.
18061	ForwardLink *string `json:"forwardLink,omitempty"`
18062}
18063
18064// MarshalJSON is the custom marshaler for RecommendationProperties.
18065func (r RecommendationProperties) MarshalJSON() ([]byte, error) {
18066	objectMap := make(map[string]interface{})
18067	if r.CreationTime != nil {
18068		objectMap["creationTime"] = r.CreationTime
18069	}
18070	if r.RecommendationID != nil {
18071		objectMap["recommendationId"] = r.RecommendationID
18072	}
18073	if r.ResourceID != nil {
18074		objectMap["resourceId"] = r.ResourceID
18075	}
18076	if r.ResourceScope != "" {
18077		objectMap["resourceScope"] = r.ResourceScope
18078	}
18079	if r.RuleName != nil {
18080		objectMap["ruleName"] = r.RuleName
18081	}
18082	if r.DisplayName != nil {
18083		objectMap["displayName"] = r.DisplayName
18084	}
18085	if r.Message != nil {
18086		objectMap["message"] = r.Message
18087	}
18088	if r.Level != "" {
18089		objectMap["level"] = r.Level
18090	}
18091	if r.Channels != "" {
18092		objectMap["channels"] = r.Channels
18093	}
18094	if r.ActionName != nil {
18095		objectMap["actionName"] = r.ActionName
18096	}
18097	if r.Enabled != nil {
18098		objectMap["enabled"] = r.Enabled
18099	}
18100	if r.States != nil {
18101		objectMap["states"] = r.States
18102	}
18103	if r.StartTime != nil {
18104		objectMap["startTime"] = r.StartTime
18105	}
18106	if r.EndTime != nil {
18107		objectMap["endTime"] = r.EndTime
18108	}
18109	if r.NextNotificationTime != nil {
18110		objectMap["nextNotificationTime"] = r.NextNotificationTime
18111	}
18112	if r.NotificationExpirationTime != nil {
18113		objectMap["notificationExpirationTime"] = r.NotificationExpirationTime
18114	}
18115	if r.NotifiedTime != nil {
18116		objectMap["notifiedTime"] = r.NotifiedTime
18117	}
18118	if r.Score != nil {
18119		objectMap["score"] = r.Score
18120	}
18121	if r.IsDynamic != nil {
18122		objectMap["isDynamic"] = r.IsDynamic
18123	}
18124	if r.ExtensionName != nil {
18125		objectMap["extensionName"] = r.ExtensionName
18126	}
18127	if r.BladeName != nil {
18128		objectMap["bladeName"] = r.BladeName
18129	}
18130	if r.ForwardLink != nil {
18131		objectMap["forwardLink"] = r.ForwardLink
18132	}
18133	return json.Marshal(objectMap)
18134}
18135
18136// RecommendationRule represents a recommendation rule that the recommendation engine can perform.
18137type RecommendationRule struct {
18138	autorest.Response `json:"-"`
18139	// RecommendationRuleProperties - RecommendationRule resource specific properties
18140	*RecommendationRuleProperties `json:"properties,omitempty"`
18141	// ID - READ-ONLY; Resource Id.
18142	ID *string `json:"id,omitempty"`
18143	// Name - READ-ONLY; Resource Name.
18144	Name *string `json:"name,omitempty"`
18145	// Kind - Kind of resource.
18146	Kind *string `json:"kind,omitempty"`
18147	// Type - READ-ONLY; Resource type.
18148	Type *string `json:"type,omitempty"`
18149}
18150
18151// MarshalJSON is the custom marshaler for RecommendationRule.
18152func (rr RecommendationRule) MarshalJSON() ([]byte, error) {
18153	objectMap := make(map[string]interface{})
18154	if rr.RecommendationRuleProperties != nil {
18155		objectMap["properties"] = rr.RecommendationRuleProperties
18156	}
18157	if rr.Kind != nil {
18158		objectMap["kind"] = rr.Kind
18159	}
18160	return json.Marshal(objectMap)
18161}
18162
18163// UnmarshalJSON is the custom unmarshaler for RecommendationRule struct.
18164func (rr *RecommendationRule) UnmarshalJSON(body []byte) error {
18165	var m map[string]*json.RawMessage
18166	err := json.Unmarshal(body, &m)
18167	if err != nil {
18168		return err
18169	}
18170	for k, v := range m {
18171		switch k {
18172		case "properties":
18173			if v != nil {
18174				var recommendationRuleProperties RecommendationRuleProperties
18175				err = json.Unmarshal(*v, &recommendationRuleProperties)
18176				if err != nil {
18177					return err
18178				}
18179				rr.RecommendationRuleProperties = &recommendationRuleProperties
18180			}
18181		case "id":
18182			if v != nil {
18183				var ID string
18184				err = json.Unmarshal(*v, &ID)
18185				if err != nil {
18186					return err
18187				}
18188				rr.ID = &ID
18189			}
18190		case "name":
18191			if v != nil {
18192				var name string
18193				err = json.Unmarshal(*v, &name)
18194				if err != nil {
18195					return err
18196				}
18197				rr.Name = &name
18198			}
18199		case "kind":
18200			if v != nil {
18201				var kind string
18202				err = json.Unmarshal(*v, &kind)
18203				if err != nil {
18204					return err
18205				}
18206				rr.Kind = &kind
18207			}
18208		case "type":
18209			if v != nil {
18210				var typeVar string
18211				err = json.Unmarshal(*v, &typeVar)
18212				if err != nil {
18213					return err
18214				}
18215				rr.Type = &typeVar
18216			}
18217		}
18218	}
18219
18220	return nil
18221}
18222
18223// RecommendationRuleProperties recommendationRule resource specific properties
18224type RecommendationRuleProperties struct {
18225	// RecommendationName - Unique name of the rule.
18226	RecommendationName *string `json:"recommendationName,omitempty"`
18227	// DisplayName - UI friendly name of the rule.
18228	DisplayName *string `json:"displayName,omitempty"`
18229	// Message - Localized name of the rule (Good for UI).
18230	Message *string `json:"message,omitempty"`
18231	// RecommendationID - Recommendation ID of an associated recommendation object tied to the rule, if exists.
18232	// If such an object doesn't exist, it is set to null.
18233	RecommendationID *uuid.UUID `json:"recommendationId,omitempty"`
18234	// Description - Localized detailed description of the rule.
18235	Description *string `json:"description,omitempty"`
18236	// ActionName - Name of action that is recommended by this rule in string.
18237	ActionName *string `json:"actionName,omitempty"`
18238	// Level - Level of impact indicating how critical this rule is. Possible values include: 'NotificationLevelCritical', 'NotificationLevelWarning', 'NotificationLevelInformation', 'NotificationLevelNonUrgentSuggestion'
18239	Level NotificationLevel `json:"level,omitempty"`
18240	// Channels - List of available channels that this rule applies. Possible values include: 'Notification', 'API', 'Email', 'Webhook', 'All'
18241	Channels Channels `json:"channels,omitempty"`
18242	// CategoryTags - READ-ONLY; The list of category tags that this recommendation rule belongs to.
18243	CategoryTags *[]string `json:"categoryTags,omitempty"`
18244	// IsDynamic - True if this is associated with a dynamically added rule
18245	IsDynamic *bool `json:"isDynamic,omitempty"`
18246	// ExtensionName - Extension name of the portal if exists. Applicable to dynamic rule only.
18247	ExtensionName *string `json:"extensionName,omitempty"`
18248	// BladeName - Deep link to a blade on the portal. Applicable to dynamic rule only.
18249	BladeName *string `json:"bladeName,omitempty"`
18250	// ForwardLink - Forward link to an external document associated with the rule. Applicable to dynamic rule only.
18251	ForwardLink *string `json:"forwardLink,omitempty"`
18252}
18253
18254// MarshalJSON is the custom marshaler for RecommendationRuleProperties.
18255func (rr RecommendationRuleProperties) MarshalJSON() ([]byte, error) {
18256	objectMap := make(map[string]interface{})
18257	if rr.RecommendationName != nil {
18258		objectMap["recommendationName"] = rr.RecommendationName
18259	}
18260	if rr.DisplayName != nil {
18261		objectMap["displayName"] = rr.DisplayName
18262	}
18263	if rr.Message != nil {
18264		objectMap["message"] = rr.Message
18265	}
18266	if rr.RecommendationID != nil {
18267		objectMap["recommendationId"] = rr.RecommendationID
18268	}
18269	if rr.Description != nil {
18270		objectMap["description"] = rr.Description
18271	}
18272	if rr.ActionName != nil {
18273		objectMap["actionName"] = rr.ActionName
18274	}
18275	if rr.Level != "" {
18276		objectMap["level"] = rr.Level
18277	}
18278	if rr.Channels != "" {
18279		objectMap["channels"] = rr.Channels
18280	}
18281	if rr.IsDynamic != nil {
18282		objectMap["isDynamic"] = rr.IsDynamic
18283	}
18284	if rr.ExtensionName != nil {
18285		objectMap["extensionName"] = rr.ExtensionName
18286	}
18287	if rr.BladeName != nil {
18288		objectMap["bladeName"] = rr.BladeName
18289	}
18290	if rr.ForwardLink != nil {
18291		objectMap["forwardLink"] = rr.ForwardLink
18292	}
18293	return json.Marshal(objectMap)
18294}
18295
18296// ReissueCertificateOrderRequest class representing certificate reissue request.
18297type ReissueCertificateOrderRequest struct {
18298	// ReissueCertificateOrderRequestProperties - ReissueCertificateOrderRequest resource specific properties
18299	*ReissueCertificateOrderRequestProperties `json:"properties,omitempty"`
18300	// ID - READ-ONLY; Resource Id.
18301	ID *string `json:"id,omitempty"`
18302	// Name - READ-ONLY; Resource Name.
18303	Name *string `json:"name,omitempty"`
18304	// Kind - Kind of resource.
18305	Kind *string `json:"kind,omitempty"`
18306	// Type - READ-ONLY; Resource type.
18307	Type *string `json:"type,omitempty"`
18308}
18309
18310// MarshalJSON is the custom marshaler for ReissueCertificateOrderRequest.
18311func (rcor ReissueCertificateOrderRequest) MarshalJSON() ([]byte, error) {
18312	objectMap := make(map[string]interface{})
18313	if rcor.ReissueCertificateOrderRequestProperties != nil {
18314		objectMap["properties"] = rcor.ReissueCertificateOrderRequestProperties
18315	}
18316	if rcor.Kind != nil {
18317		objectMap["kind"] = rcor.Kind
18318	}
18319	return json.Marshal(objectMap)
18320}
18321
18322// UnmarshalJSON is the custom unmarshaler for ReissueCertificateOrderRequest struct.
18323func (rcor *ReissueCertificateOrderRequest) UnmarshalJSON(body []byte) error {
18324	var m map[string]*json.RawMessage
18325	err := json.Unmarshal(body, &m)
18326	if err != nil {
18327		return err
18328	}
18329	for k, v := range m {
18330		switch k {
18331		case "properties":
18332			if v != nil {
18333				var reissueCertificateOrderRequestProperties ReissueCertificateOrderRequestProperties
18334				err = json.Unmarshal(*v, &reissueCertificateOrderRequestProperties)
18335				if err != nil {
18336					return err
18337				}
18338				rcor.ReissueCertificateOrderRequestProperties = &reissueCertificateOrderRequestProperties
18339			}
18340		case "id":
18341			if v != nil {
18342				var ID string
18343				err = json.Unmarshal(*v, &ID)
18344				if err != nil {
18345					return err
18346				}
18347				rcor.ID = &ID
18348			}
18349		case "name":
18350			if v != nil {
18351				var name string
18352				err = json.Unmarshal(*v, &name)
18353				if err != nil {
18354					return err
18355				}
18356				rcor.Name = &name
18357			}
18358		case "kind":
18359			if v != nil {
18360				var kind string
18361				err = json.Unmarshal(*v, &kind)
18362				if err != nil {
18363					return err
18364				}
18365				rcor.Kind = &kind
18366			}
18367		case "type":
18368			if v != nil {
18369				var typeVar string
18370				err = json.Unmarshal(*v, &typeVar)
18371				if err != nil {
18372					return err
18373				}
18374				rcor.Type = &typeVar
18375			}
18376		}
18377	}
18378
18379	return nil
18380}
18381
18382// ReissueCertificateOrderRequestProperties reissueCertificateOrderRequest resource specific properties
18383type ReissueCertificateOrderRequestProperties struct {
18384	// KeySize - Certificate Key Size.
18385	KeySize *int32 `json:"keySize,omitempty"`
18386	// DelayExistingRevokeInHours - Delay in hours to revoke existing certificate after the new certificate is issued.
18387	DelayExistingRevokeInHours *int32 `json:"delayExistingRevokeInHours,omitempty"`
18388	// Csr - Csr to be used for re-key operation.
18389	Csr *string `json:"csr,omitempty"`
18390	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
18391	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
18392}
18393
18394// RelayServiceConnectionEntity hybrid Connection for an App Service app.
18395type RelayServiceConnectionEntity struct {
18396	autorest.Response `json:"-"`
18397	// RelayServiceConnectionEntityProperties - RelayServiceConnectionEntity resource specific properties
18398	*RelayServiceConnectionEntityProperties `json:"properties,omitempty"`
18399	// ID - READ-ONLY; Resource Id.
18400	ID *string `json:"id,omitempty"`
18401	// Name - READ-ONLY; Resource Name.
18402	Name *string `json:"name,omitempty"`
18403	// Kind - Kind of resource.
18404	Kind *string `json:"kind,omitempty"`
18405	// Type - READ-ONLY; Resource type.
18406	Type *string `json:"type,omitempty"`
18407}
18408
18409// MarshalJSON is the custom marshaler for RelayServiceConnectionEntity.
18410func (rsce RelayServiceConnectionEntity) MarshalJSON() ([]byte, error) {
18411	objectMap := make(map[string]interface{})
18412	if rsce.RelayServiceConnectionEntityProperties != nil {
18413		objectMap["properties"] = rsce.RelayServiceConnectionEntityProperties
18414	}
18415	if rsce.Kind != nil {
18416		objectMap["kind"] = rsce.Kind
18417	}
18418	return json.Marshal(objectMap)
18419}
18420
18421// UnmarshalJSON is the custom unmarshaler for RelayServiceConnectionEntity struct.
18422func (rsce *RelayServiceConnectionEntity) UnmarshalJSON(body []byte) error {
18423	var m map[string]*json.RawMessage
18424	err := json.Unmarshal(body, &m)
18425	if err != nil {
18426		return err
18427	}
18428	for k, v := range m {
18429		switch k {
18430		case "properties":
18431			if v != nil {
18432				var relayServiceConnectionEntityProperties RelayServiceConnectionEntityProperties
18433				err = json.Unmarshal(*v, &relayServiceConnectionEntityProperties)
18434				if err != nil {
18435					return err
18436				}
18437				rsce.RelayServiceConnectionEntityProperties = &relayServiceConnectionEntityProperties
18438			}
18439		case "id":
18440			if v != nil {
18441				var ID string
18442				err = json.Unmarshal(*v, &ID)
18443				if err != nil {
18444					return err
18445				}
18446				rsce.ID = &ID
18447			}
18448		case "name":
18449			if v != nil {
18450				var name string
18451				err = json.Unmarshal(*v, &name)
18452				if err != nil {
18453					return err
18454				}
18455				rsce.Name = &name
18456			}
18457		case "kind":
18458			if v != nil {
18459				var kind string
18460				err = json.Unmarshal(*v, &kind)
18461				if err != nil {
18462					return err
18463				}
18464				rsce.Kind = &kind
18465			}
18466		case "type":
18467			if v != nil {
18468				var typeVar string
18469				err = json.Unmarshal(*v, &typeVar)
18470				if err != nil {
18471					return err
18472				}
18473				rsce.Type = &typeVar
18474			}
18475		}
18476	}
18477
18478	return nil
18479}
18480
18481// RelayServiceConnectionEntityProperties relayServiceConnectionEntity resource specific properties
18482type RelayServiceConnectionEntityProperties struct {
18483	EntityName               *string `json:"entityName,omitempty"`
18484	EntityConnectionString   *string `json:"entityConnectionString,omitempty"`
18485	ResourceType             *string `json:"resourceType,omitempty"`
18486	ResourceConnectionString *string `json:"resourceConnectionString,omitempty"`
18487	Hostname                 *string `json:"hostname,omitempty"`
18488	Port                     *int32  `json:"port,omitempty"`
18489	BiztalkURI               *string `json:"biztalkUri,omitempty"`
18490}
18491
18492// RemotePrivateEndpointConnection a remote private endpoint connection
18493type RemotePrivateEndpointConnection struct {
18494	// ProvisioningState - READ-ONLY
18495	ProvisioningState *string `json:"provisioningState,omitempty"`
18496	// PrivateEndpoint - PrivateEndpoint of a remote private endpoint connection
18497	PrivateEndpoint                   *ArmIDWrapper               `json:"privateEndpoint,omitempty"`
18498	PrivateLinkServiceConnectionState *PrivateLinkConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
18499}
18500
18501// MarshalJSON is the custom marshaler for RemotePrivateEndpointConnection.
18502func (rpec RemotePrivateEndpointConnection) MarshalJSON() ([]byte, error) {
18503	objectMap := make(map[string]interface{})
18504	if rpec.PrivateEndpoint != nil {
18505		objectMap["privateEndpoint"] = rpec.PrivateEndpoint
18506	}
18507	if rpec.PrivateLinkServiceConnectionState != nil {
18508		objectMap["privateLinkServiceConnectionState"] = rpec.PrivateLinkServiceConnectionState
18509	}
18510	return json.Marshal(objectMap)
18511}
18512
18513// Rendering instructions for rendering the data
18514type Rendering struct {
18515	// Type - Rendering Type. Possible values include: 'NoGraph', 'Table', 'TimeSeries', 'TimeSeriesPerInstance'
18516	Type RenderingType `json:"type,omitempty"`
18517	// Title - Title of data
18518	Title *string `json:"title,omitempty"`
18519	// Description - Description of the data that will help it be interpreted
18520	Description *string `json:"description,omitempty"`
18521}
18522
18523// RenewCertificateOrderRequest class representing certificate renew request.
18524type RenewCertificateOrderRequest struct {
18525	// RenewCertificateOrderRequestProperties - RenewCertificateOrderRequest resource specific properties
18526	*RenewCertificateOrderRequestProperties `json:"properties,omitempty"`
18527	// ID - READ-ONLY; Resource Id.
18528	ID *string `json:"id,omitempty"`
18529	// Name - READ-ONLY; Resource Name.
18530	Name *string `json:"name,omitempty"`
18531	// Kind - Kind of resource.
18532	Kind *string `json:"kind,omitempty"`
18533	// Type - READ-ONLY; Resource type.
18534	Type *string `json:"type,omitempty"`
18535}
18536
18537// MarshalJSON is the custom marshaler for RenewCertificateOrderRequest.
18538func (rcor RenewCertificateOrderRequest) MarshalJSON() ([]byte, error) {
18539	objectMap := make(map[string]interface{})
18540	if rcor.RenewCertificateOrderRequestProperties != nil {
18541		objectMap["properties"] = rcor.RenewCertificateOrderRequestProperties
18542	}
18543	if rcor.Kind != nil {
18544		objectMap["kind"] = rcor.Kind
18545	}
18546	return json.Marshal(objectMap)
18547}
18548
18549// UnmarshalJSON is the custom unmarshaler for RenewCertificateOrderRequest struct.
18550func (rcor *RenewCertificateOrderRequest) UnmarshalJSON(body []byte) error {
18551	var m map[string]*json.RawMessage
18552	err := json.Unmarshal(body, &m)
18553	if err != nil {
18554		return err
18555	}
18556	for k, v := range m {
18557		switch k {
18558		case "properties":
18559			if v != nil {
18560				var renewCertificateOrderRequestProperties RenewCertificateOrderRequestProperties
18561				err = json.Unmarshal(*v, &renewCertificateOrderRequestProperties)
18562				if err != nil {
18563					return err
18564				}
18565				rcor.RenewCertificateOrderRequestProperties = &renewCertificateOrderRequestProperties
18566			}
18567		case "id":
18568			if v != nil {
18569				var ID string
18570				err = json.Unmarshal(*v, &ID)
18571				if err != nil {
18572					return err
18573				}
18574				rcor.ID = &ID
18575			}
18576		case "name":
18577			if v != nil {
18578				var name string
18579				err = json.Unmarshal(*v, &name)
18580				if err != nil {
18581					return err
18582				}
18583				rcor.Name = &name
18584			}
18585		case "kind":
18586			if v != nil {
18587				var kind string
18588				err = json.Unmarshal(*v, &kind)
18589				if err != nil {
18590					return err
18591				}
18592				rcor.Kind = &kind
18593			}
18594		case "type":
18595			if v != nil {
18596				var typeVar string
18597				err = json.Unmarshal(*v, &typeVar)
18598				if err != nil {
18599					return err
18600				}
18601				rcor.Type = &typeVar
18602			}
18603		}
18604	}
18605
18606	return nil
18607}
18608
18609// RenewCertificateOrderRequestProperties renewCertificateOrderRequest resource specific properties
18610type RenewCertificateOrderRequestProperties struct {
18611	// KeySize - Certificate Key Size.
18612	KeySize *int32 `json:"keySize,omitempty"`
18613	// Csr - Csr to be used for re-key operation.
18614	Csr *string `json:"csr,omitempty"`
18615	// IsPrivateKeyExternal - Should we change the ASC type (from managed private key to external private key and vice versa).
18616	IsPrivateKeyExternal *bool `json:"isPrivateKeyExternal,omitempty"`
18617}
18618
18619// RequestsBasedTrigger trigger based on total requests.
18620type RequestsBasedTrigger struct {
18621	// Count - Request Count.
18622	Count *int32 `json:"count,omitempty"`
18623	// TimeInterval - Time interval.
18624	TimeInterval *string `json:"timeInterval,omitempty"`
18625}
18626
18627// Resource azure resource. This resource is tracked in Azure Resource Manager
18628type Resource struct {
18629	// ID - READ-ONLY; Resource Id.
18630	ID *string `json:"id,omitempty"`
18631	// Name - READ-ONLY; Resource Name.
18632	Name *string `json:"name,omitempty"`
18633	// Kind - Kind of resource.
18634	Kind *string `json:"kind,omitempty"`
18635	// Location - Resource Location.
18636	Location *string `json:"location,omitempty"`
18637	// Type - READ-ONLY; Resource type.
18638	Type *string `json:"type,omitempty"`
18639	// Tags - Resource tags.
18640	Tags map[string]*string `json:"tags"`
18641}
18642
18643// MarshalJSON is the custom marshaler for Resource.
18644func (r Resource) MarshalJSON() ([]byte, error) {
18645	objectMap := make(map[string]interface{})
18646	if r.Kind != nil {
18647		objectMap["kind"] = r.Kind
18648	}
18649	if r.Location != nil {
18650		objectMap["location"] = r.Location
18651	}
18652	if r.Tags != nil {
18653		objectMap["tags"] = r.Tags
18654	}
18655	return json.Marshal(objectMap)
18656}
18657
18658// ResourceCollection collection of resources.
18659type ResourceCollection struct {
18660	autorest.Response `json:"-"`
18661	// Value - Collection of resources.
18662	Value *[]string `json:"value,omitempty"`
18663	// NextLink - READ-ONLY; Link to next page of resources.
18664	NextLink *string `json:"nextLink,omitempty"`
18665}
18666
18667// MarshalJSON is the custom marshaler for ResourceCollection.
18668func (rc ResourceCollection) MarshalJSON() ([]byte, error) {
18669	objectMap := make(map[string]interface{})
18670	if rc.Value != nil {
18671		objectMap["value"] = rc.Value
18672	}
18673	return json.Marshal(objectMap)
18674}
18675
18676// ResourceCollectionIterator provides access to a complete listing of string values.
18677type ResourceCollectionIterator struct {
18678	i    int
18679	page ResourceCollectionPage
18680}
18681
18682// NextWithContext advances to the next value.  If there was an error making
18683// the request the iterator does not advance and the error is returned.
18684func (iter *ResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18685	if tracing.IsEnabled() {
18686		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionIterator.NextWithContext")
18687		defer func() {
18688			sc := -1
18689			if iter.Response().Response.Response != nil {
18690				sc = iter.Response().Response.Response.StatusCode
18691			}
18692			tracing.EndSpan(ctx, sc, err)
18693		}()
18694	}
18695	iter.i++
18696	if iter.i < len(iter.page.Values()) {
18697		return nil
18698	}
18699	err = iter.page.NextWithContext(ctx)
18700	if err != nil {
18701		iter.i--
18702		return err
18703	}
18704	iter.i = 0
18705	return nil
18706}
18707
18708// Next advances to the next value.  If there was an error making
18709// the request the iterator does not advance and the error is returned.
18710// Deprecated: Use NextWithContext() instead.
18711func (iter *ResourceCollectionIterator) Next() error {
18712	return iter.NextWithContext(context.Background())
18713}
18714
18715// NotDone returns true if the enumeration should be started or is not yet complete.
18716func (iter ResourceCollectionIterator) NotDone() bool {
18717	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18718}
18719
18720// Response returns the raw server response from the last page request.
18721func (iter ResourceCollectionIterator) Response() ResourceCollection {
18722	return iter.page.Response()
18723}
18724
18725// Value returns the current value or a zero-initialized value if the
18726// iterator has advanced beyond the end of the collection.
18727func (iter ResourceCollectionIterator) Value() string {
18728	if !iter.page.NotDone() {
18729		return ""
18730	}
18731	return iter.page.Values()[iter.i]
18732}
18733
18734// Creates a new instance of the ResourceCollectionIterator type.
18735func NewResourceCollectionIterator(page ResourceCollectionPage) ResourceCollectionIterator {
18736	return ResourceCollectionIterator{page: page}
18737}
18738
18739// IsEmpty returns true if the ListResult contains no values.
18740func (rc ResourceCollection) IsEmpty() bool {
18741	return rc.Value == nil || len(*rc.Value) == 0
18742}
18743
18744// hasNextLink returns true if the NextLink is not empty.
18745func (rc ResourceCollection) hasNextLink() bool {
18746	return rc.NextLink != nil && len(*rc.NextLink) != 0
18747}
18748
18749// resourceCollectionPreparer prepares a request to retrieve the next set of results.
18750// It returns nil if no more results exist.
18751func (rc ResourceCollection) resourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
18752	if !rc.hasNextLink() {
18753		return nil, nil
18754	}
18755	return autorest.Prepare((&http.Request{}).WithContext(ctx),
18756		autorest.AsJSON(),
18757		autorest.AsGet(),
18758		autorest.WithBaseURL(to.String(rc.NextLink)))
18759}
18760
18761// ResourceCollectionPage contains a page of string values.
18762type ResourceCollectionPage struct {
18763	fn func(context.Context, ResourceCollection) (ResourceCollection, error)
18764	rc ResourceCollection
18765}
18766
18767// NextWithContext advances to the next page of values.  If there was an error making
18768// the request the page does not advance and the error is returned.
18769func (page *ResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
18770	if tracing.IsEnabled() {
18771		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceCollectionPage.NextWithContext")
18772		defer func() {
18773			sc := -1
18774			if page.Response().Response.Response != nil {
18775				sc = page.Response().Response.Response.StatusCode
18776			}
18777			tracing.EndSpan(ctx, sc, err)
18778		}()
18779	}
18780	for {
18781		next, err := page.fn(ctx, page.rc)
18782		if err != nil {
18783			return err
18784		}
18785		page.rc = next
18786		if !next.hasNextLink() || !next.IsEmpty() {
18787			break
18788		}
18789	}
18790	return nil
18791}
18792
18793// Next advances to the next page of values.  If there was an error making
18794// the request the page does not advance and the error is returned.
18795// Deprecated: Use NextWithContext() instead.
18796func (page *ResourceCollectionPage) Next() error {
18797	return page.NextWithContext(context.Background())
18798}
18799
18800// NotDone returns true if the page enumeration should be started or is not yet complete.
18801func (page ResourceCollectionPage) NotDone() bool {
18802	return !page.rc.IsEmpty()
18803}
18804
18805// Response returns the raw server response from the last page request.
18806func (page ResourceCollectionPage) Response() ResourceCollection {
18807	return page.rc
18808}
18809
18810// Values returns the slice of values for the current page or nil if there are no values.
18811func (page ResourceCollectionPage) Values() []string {
18812	if page.rc.IsEmpty() {
18813		return nil
18814	}
18815	return *page.rc.Value
18816}
18817
18818// Creates a new instance of the ResourceCollectionPage type.
18819func NewResourceCollectionPage(cur ResourceCollection, getNextPage func(context.Context, ResourceCollection) (ResourceCollection, error)) ResourceCollectionPage {
18820	return ResourceCollectionPage{
18821		fn: getNextPage,
18822		rc: cur,
18823	}
18824}
18825
18826// ResourceHealthMetadata used for getting ResourceHealthCheck settings.
18827type ResourceHealthMetadata struct {
18828	autorest.Response `json:"-"`
18829	// ResourceHealthMetadataProperties - ResourceHealthMetadata resource specific properties
18830	*ResourceHealthMetadataProperties `json:"properties,omitempty"`
18831	// ID - READ-ONLY; Resource Id.
18832	ID *string `json:"id,omitempty"`
18833	// Name - READ-ONLY; Resource Name.
18834	Name *string `json:"name,omitempty"`
18835	// Kind - Kind of resource.
18836	Kind *string `json:"kind,omitempty"`
18837	// Type - READ-ONLY; Resource type.
18838	Type *string `json:"type,omitempty"`
18839}
18840
18841// MarshalJSON is the custom marshaler for ResourceHealthMetadata.
18842func (rhm ResourceHealthMetadata) MarshalJSON() ([]byte, error) {
18843	objectMap := make(map[string]interface{})
18844	if rhm.ResourceHealthMetadataProperties != nil {
18845		objectMap["properties"] = rhm.ResourceHealthMetadataProperties
18846	}
18847	if rhm.Kind != nil {
18848		objectMap["kind"] = rhm.Kind
18849	}
18850	return json.Marshal(objectMap)
18851}
18852
18853// UnmarshalJSON is the custom unmarshaler for ResourceHealthMetadata struct.
18854func (rhm *ResourceHealthMetadata) UnmarshalJSON(body []byte) error {
18855	var m map[string]*json.RawMessage
18856	err := json.Unmarshal(body, &m)
18857	if err != nil {
18858		return err
18859	}
18860	for k, v := range m {
18861		switch k {
18862		case "properties":
18863			if v != nil {
18864				var resourceHealthMetadataProperties ResourceHealthMetadataProperties
18865				err = json.Unmarshal(*v, &resourceHealthMetadataProperties)
18866				if err != nil {
18867					return err
18868				}
18869				rhm.ResourceHealthMetadataProperties = &resourceHealthMetadataProperties
18870			}
18871		case "id":
18872			if v != nil {
18873				var ID string
18874				err = json.Unmarshal(*v, &ID)
18875				if err != nil {
18876					return err
18877				}
18878				rhm.ID = &ID
18879			}
18880		case "name":
18881			if v != nil {
18882				var name string
18883				err = json.Unmarshal(*v, &name)
18884				if err != nil {
18885					return err
18886				}
18887				rhm.Name = &name
18888			}
18889		case "kind":
18890			if v != nil {
18891				var kind string
18892				err = json.Unmarshal(*v, &kind)
18893				if err != nil {
18894					return err
18895				}
18896				rhm.Kind = &kind
18897			}
18898		case "type":
18899			if v != nil {
18900				var typeVar string
18901				err = json.Unmarshal(*v, &typeVar)
18902				if err != nil {
18903					return err
18904				}
18905				rhm.Type = &typeVar
18906			}
18907		}
18908	}
18909
18910	return nil
18911}
18912
18913// ResourceHealthMetadataCollection collection of resource health metadata.
18914type ResourceHealthMetadataCollection struct {
18915	autorest.Response `json:"-"`
18916	// Value - Collection of resources.
18917	Value *[]ResourceHealthMetadata `json:"value,omitempty"`
18918	// NextLink - READ-ONLY; Link to next page of resources.
18919	NextLink *string `json:"nextLink,omitempty"`
18920}
18921
18922// MarshalJSON is the custom marshaler for ResourceHealthMetadataCollection.
18923func (rhmc ResourceHealthMetadataCollection) MarshalJSON() ([]byte, error) {
18924	objectMap := make(map[string]interface{})
18925	if rhmc.Value != nil {
18926		objectMap["value"] = rhmc.Value
18927	}
18928	return json.Marshal(objectMap)
18929}
18930
18931// ResourceHealthMetadataCollectionIterator provides access to a complete listing of ResourceHealthMetadata
18932// values.
18933type ResourceHealthMetadataCollectionIterator struct {
18934	i    int
18935	page ResourceHealthMetadataCollectionPage
18936}
18937
18938// NextWithContext advances to the next value.  If there was an error making
18939// the request the iterator does not advance and the error is returned.
18940func (iter *ResourceHealthMetadataCollectionIterator) NextWithContext(ctx context.Context) (err error) {
18941	if tracing.IsEnabled() {
18942		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionIterator.NextWithContext")
18943		defer func() {
18944			sc := -1
18945			if iter.Response().Response.Response != nil {
18946				sc = iter.Response().Response.Response.StatusCode
18947			}
18948			tracing.EndSpan(ctx, sc, err)
18949		}()
18950	}
18951	iter.i++
18952	if iter.i < len(iter.page.Values()) {
18953		return nil
18954	}
18955	err = iter.page.NextWithContext(ctx)
18956	if err != nil {
18957		iter.i--
18958		return err
18959	}
18960	iter.i = 0
18961	return nil
18962}
18963
18964// Next advances to the next value.  If there was an error making
18965// the request the iterator does not advance and the error is returned.
18966// Deprecated: Use NextWithContext() instead.
18967func (iter *ResourceHealthMetadataCollectionIterator) Next() error {
18968	return iter.NextWithContext(context.Background())
18969}
18970
18971// NotDone returns true if the enumeration should be started or is not yet complete.
18972func (iter ResourceHealthMetadataCollectionIterator) NotDone() bool {
18973	return iter.page.NotDone() && iter.i < len(iter.page.Values())
18974}
18975
18976// Response returns the raw server response from the last page request.
18977func (iter ResourceHealthMetadataCollectionIterator) Response() ResourceHealthMetadataCollection {
18978	return iter.page.Response()
18979}
18980
18981// Value returns the current value or a zero-initialized value if the
18982// iterator has advanced beyond the end of the collection.
18983func (iter ResourceHealthMetadataCollectionIterator) Value() ResourceHealthMetadata {
18984	if !iter.page.NotDone() {
18985		return ResourceHealthMetadata{}
18986	}
18987	return iter.page.Values()[iter.i]
18988}
18989
18990// Creates a new instance of the ResourceHealthMetadataCollectionIterator type.
18991func NewResourceHealthMetadataCollectionIterator(page ResourceHealthMetadataCollectionPage) ResourceHealthMetadataCollectionIterator {
18992	return ResourceHealthMetadataCollectionIterator{page: page}
18993}
18994
18995// IsEmpty returns true if the ListResult contains no values.
18996func (rhmc ResourceHealthMetadataCollection) IsEmpty() bool {
18997	return rhmc.Value == nil || len(*rhmc.Value) == 0
18998}
18999
19000// hasNextLink returns true if the NextLink is not empty.
19001func (rhmc ResourceHealthMetadataCollection) hasNextLink() bool {
19002	return rhmc.NextLink != nil && len(*rhmc.NextLink) != 0
19003}
19004
19005// resourceHealthMetadataCollectionPreparer prepares a request to retrieve the next set of results.
19006// It returns nil if no more results exist.
19007func (rhmc ResourceHealthMetadataCollection) resourceHealthMetadataCollectionPreparer(ctx context.Context) (*http.Request, error) {
19008	if !rhmc.hasNextLink() {
19009		return nil, nil
19010	}
19011	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19012		autorest.AsJSON(),
19013		autorest.AsGet(),
19014		autorest.WithBaseURL(to.String(rhmc.NextLink)))
19015}
19016
19017// ResourceHealthMetadataCollectionPage contains a page of ResourceHealthMetadata values.
19018type ResourceHealthMetadataCollectionPage struct {
19019	fn   func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)
19020	rhmc ResourceHealthMetadataCollection
19021}
19022
19023// NextWithContext advances to the next page of values.  If there was an error making
19024// the request the page does not advance and the error is returned.
19025func (page *ResourceHealthMetadataCollectionPage) NextWithContext(ctx context.Context) (err error) {
19026	if tracing.IsEnabled() {
19027		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceHealthMetadataCollectionPage.NextWithContext")
19028		defer func() {
19029			sc := -1
19030			if page.Response().Response.Response != nil {
19031				sc = page.Response().Response.Response.StatusCode
19032			}
19033			tracing.EndSpan(ctx, sc, err)
19034		}()
19035	}
19036	for {
19037		next, err := page.fn(ctx, page.rhmc)
19038		if err != nil {
19039			return err
19040		}
19041		page.rhmc = next
19042		if !next.hasNextLink() || !next.IsEmpty() {
19043			break
19044		}
19045	}
19046	return nil
19047}
19048
19049// Next advances to the next page of values.  If there was an error making
19050// the request the page does not advance and the error is returned.
19051// Deprecated: Use NextWithContext() instead.
19052func (page *ResourceHealthMetadataCollectionPage) Next() error {
19053	return page.NextWithContext(context.Background())
19054}
19055
19056// NotDone returns true if the page enumeration should be started or is not yet complete.
19057func (page ResourceHealthMetadataCollectionPage) NotDone() bool {
19058	return !page.rhmc.IsEmpty()
19059}
19060
19061// Response returns the raw server response from the last page request.
19062func (page ResourceHealthMetadataCollectionPage) Response() ResourceHealthMetadataCollection {
19063	return page.rhmc
19064}
19065
19066// Values returns the slice of values for the current page or nil if there are no values.
19067func (page ResourceHealthMetadataCollectionPage) Values() []ResourceHealthMetadata {
19068	if page.rhmc.IsEmpty() {
19069		return nil
19070	}
19071	return *page.rhmc.Value
19072}
19073
19074// Creates a new instance of the ResourceHealthMetadataCollectionPage type.
19075func NewResourceHealthMetadataCollectionPage(cur ResourceHealthMetadataCollection, getNextPage func(context.Context, ResourceHealthMetadataCollection) (ResourceHealthMetadataCollection, error)) ResourceHealthMetadataCollectionPage {
19076	return ResourceHealthMetadataCollectionPage{
19077		fn:   getNextPage,
19078		rhmc: cur,
19079	}
19080}
19081
19082// ResourceHealthMetadataProperties resourceHealthMetadata resource specific properties
19083type ResourceHealthMetadataProperties struct {
19084	// Category - The category that the resource matches in the RHC Policy File
19085	Category *string `json:"category,omitempty"`
19086	// SignalAvailability - Is there a health signal for the resource
19087	SignalAvailability *bool `json:"signalAvailability,omitempty"`
19088}
19089
19090// ResourceMetricAvailability metrics availability and retention.
19091type ResourceMetricAvailability struct {
19092	// TimeGrain - READ-ONLY; Time grain .
19093	TimeGrain *string `json:"timeGrain,omitempty"`
19094	// Retention - READ-ONLY; Retention period for the current time grain.
19095	Retention *string `json:"retention,omitempty"`
19096}
19097
19098// ResourceMetricDefinition metadata for the metrics.
19099type ResourceMetricDefinition struct {
19100	// ResourceMetricDefinitionProperties - ResourceMetricDefinition resource specific properties
19101	*ResourceMetricDefinitionProperties `json:"properties,omitempty"`
19102	// ID - READ-ONLY; Resource Id.
19103	ID *string `json:"id,omitempty"`
19104	// Name - READ-ONLY; Resource Name.
19105	Name *string `json:"name,omitempty"`
19106	// Kind - Kind of resource.
19107	Kind *string `json:"kind,omitempty"`
19108	// Type - READ-ONLY; Resource type.
19109	Type *string `json:"type,omitempty"`
19110}
19111
19112// MarshalJSON is the custom marshaler for ResourceMetricDefinition.
19113func (rmd ResourceMetricDefinition) MarshalJSON() ([]byte, error) {
19114	objectMap := make(map[string]interface{})
19115	if rmd.ResourceMetricDefinitionProperties != nil {
19116		objectMap["properties"] = rmd.ResourceMetricDefinitionProperties
19117	}
19118	if rmd.Kind != nil {
19119		objectMap["kind"] = rmd.Kind
19120	}
19121	return json.Marshal(objectMap)
19122}
19123
19124// UnmarshalJSON is the custom unmarshaler for ResourceMetricDefinition struct.
19125func (rmd *ResourceMetricDefinition) UnmarshalJSON(body []byte) error {
19126	var m map[string]*json.RawMessage
19127	err := json.Unmarshal(body, &m)
19128	if err != nil {
19129		return err
19130	}
19131	for k, v := range m {
19132		switch k {
19133		case "properties":
19134			if v != nil {
19135				var resourceMetricDefinitionProperties ResourceMetricDefinitionProperties
19136				err = json.Unmarshal(*v, &resourceMetricDefinitionProperties)
19137				if err != nil {
19138					return err
19139				}
19140				rmd.ResourceMetricDefinitionProperties = &resourceMetricDefinitionProperties
19141			}
19142		case "id":
19143			if v != nil {
19144				var ID string
19145				err = json.Unmarshal(*v, &ID)
19146				if err != nil {
19147					return err
19148				}
19149				rmd.ID = &ID
19150			}
19151		case "name":
19152			if v != nil {
19153				var name string
19154				err = json.Unmarshal(*v, &name)
19155				if err != nil {
19156					return err
19157				}
19158				rmd.Name = &name
19159			}
19160		case "kind":
19161			if v != nil {
19162				var kind string
19163				err = json.Unmarshal(*v, &kind)
19164				if err != nil {
19165					return err
19166				}
19167				rmd.Kind = &kind
19168			}
19169		case "type":
19170			if v != nil {
19171				var typeVar string
19172				err = json.Unmarshal(*v, &typeVar)
19173				if err != nil {
19174					return err
19175				}
19176				rmd.Type = &typeVar
19177			}
19178		}
19179	}
19180
19181	return nil
19182}
19183
19184// ResourceMetricDefinitionCollection collection of metric definitions.
19185type ResourceMetricDefinitionCollection struct {
19186	autorest.Response `json:"-"`
19187	// Value - Collection of resources.
19188	Value *[]ResourceMetricDefinition `json:"value,omitempty"`
19189	// NextLink - READ-ONLY; Link to next page of resources.
19190	NextLink *string `json:"nextLink,omitempty"`
19191}
19192
19193// MarshalJSON is the custom marshaler for ResourceMetricDefinitionCollection.
19194func (rmdc ResourceMetricDefinitionCollection) MarshalJSON() ([]byte, error) {
19195	objectMap := make(map[string]interface{})
19196	if rmdc.Value != nil {
19197		objectMap["value"] = rmdc.Value
19198	}
19199	return json.Marshal(objectMap)
19200}
19201
19202// ResourceMetricDefinitionCollectionIterator provides access to a complete listing of
19203// ResourceMetricDefinition values.
19204type ResourceMetricDefinitionCollectionIterator struct {
19205	i    int
19206	page ResourceMetricDefinitionCollectionPage
19207}
19208
19209// NextWithContext advances to the next value.  If there was an error making
19210// the request the iterator does not advance and the error is returned.
19211func (iter *ResourceMetricDefinitionCollectionIterator) NextWithContext(ctx context.Context) (err error) {
19212	if tracing.IsEnabled() {
19213		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionIterator.NextWithContext")
19214		defer func() {
19215			sc := -1
19216			if iter.Response().Response.Response != nil {
19217				sc = iter.Response().Response.Response.StatusCode
19218			}
19219			tracing.EndSpan(ctx, sc, err)
19220		}()
19221	}
19222	iter.i++
19223	if iter.i < len(iter.page.Values()) {
19224		return nil
19225	}
19226	err = iter.page.NextWithContext(ctx)
19227	if err != nil {
19228		iter.i--
19229		return err
19230	}
19231	iter.i = 0
19232	return nil
19233}
19234
19235// Next advances to the next value.  If there was an error making
19236// the request the iterator does not advance and the error is returned.
19237// Deprecated: Use NextWithContext() instead.
19238func (iter *ResourceMetricDefinitionCollectionIterator) Next() error {
19239	return iter.NextWithContext(context.Background())
19240}
19241
19242// NotDone returns true if the enumeration should be started or is not yet complete.
19243func (iter ResourceMetricDefinitionCollectionIterator) NotDone() bool {
19244	return iter.page.NotDone() && iter.i < len(iter.page.Values())
19245}
19246
19247// Response returns the raw server response from the last page request.
19248func (iter ResourceMetricDefinitionCollectionIterator) Response() ResourceMetricDefinitionCollection {
19249	return iter.page.Response()
19250}
19251
19252// Value returns the current value or a zero-initialized value if the
19253// iterator has advanced beyond the end of the collection.
19254func (iter ResourceMetricDefinitionCollectionIterator) Value() ResourceMetricDefinition {
19255	if !iter.page.NotDone() {
19256		return ResourceMetricDefinition{}
19257	}
19258	return iter.page.Values()[iter.i]
19259}
19260
19261// Creates a new instance of the ResourceMetricDefinitionCollectionIterator type.
19262func NewResourceMetricDefinitionCollectionIterator(page ResourceMetricDefinitionCollectionPage) ResourceMetricDefinitionCollectionIterator {
19263	return ResourceMetricDefinitionCollectionIterator{page: page}
19264}
19265
19266// IsEmpty returns true if the ListResult contains no values.
19267func (rmdc ResourceMetricDefinitionCollection) IsEmpty() bool {
19268	return rmdc.Value == nil || len(*rmdc.Value) == 0
19269}
19270
19271// hasNextLink returns true if the NextLink is not empty.
19272func (rmdc ResourceMetricDefinitionCollection) hasNextLink() bool {
19273	return rmdc.NextLink != nil && len(*rmdc.NextLink) != 0
19274}
19275
19276// resourceMetricDefinitionCollectionPreparer prepares a request to retrieve the next set of results.
19277// It returns nil if no more results exist.
19278func (rmdc ResourceMetricDefinitionCollection) resourceMetricDefinitionCollectionPreparer(ctx context.Context) (*http.Request, error) {
19279	if !rmdc.hasNextLink() {
19280		return nil, nil
19281	}
19282	return autorest.Prepare((&http.Request{}).WithContext(ctx),
19283		autorest.AsJSON(),
19284		autorest.AsGet(),
19285		autorest.WithBaseURL(to.String(rmdc.NextLink)))
19286}
19287
19288// ResourceMetricDefinitionCollectionPage contains a page of ResourceMetricDefinition values.
19289type ResourceMetricDefinitionCollectionPage struct {
19290	fn   func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)
19291	rmdc ResourceMetricDefinitionCollection
19292}
19293
19294// NextWithContext advances to the next page of values.  If there was an error making
19295// the request the page does not advance and the error is returned.
19296func (page *ResourceMetricDefinitionCollectionPage) NextWithContext(ctx context.Context) (err error) {
19297	if tracing.IsEnabled() {
19298		ctx = tracing.StartSpan(ctx, fqdn+"/ResourceMetricDefinitionCollectionPage.NextWithContext")
19299		defer func() {
19300			sc := -1
19301			if page.Response().Response.Response != nil {
19302				sc = page.Response().Response.Response.StatusCode
19303			}
19304			tracing.EndSpan(ctx, sc, err)
19305		}()
19306	}
19307	for {
19308		next, err := page.fn(ctx, page.rmdc)
19309		if err != nil {
19310			return err
19311		}
19312		page.rmdc = next
19313		if !next.hasNextLink() || !next.IsEmpty() {
19314			break
19315		}
19316	}
19317	return nil
19318}
19319
19320// Next advances to the next page of values.  If there was an error making
19321// the request the page does not advance and the error is returned.
19322// Deprecated: Use NextWithContext() instead.
19323func (page *ResourceMetricDefinitionCollectionPage) Next() error {
19324	return page.NextWithContext(context.Background())
19325}
19326
19327// NotDone returns true if the page enumeration should be started or is not yet complete.
19328func (page ResourceMetricDefinitionCollectionPage) NotDone() bool {
19329	return !page.rmdc.IsEmpty()
19330}
19331
19332// Response returns the raw server response from the last page request.
19333func (page ResourceMetricDefinitionCollectionPage) Response() ResourceMetricDefinitionCollection {
19334	return page.rmdc
19335}
19336
19337// Values returns the slice of values for the current page or nil if there are no values.
19338func (page ResourceMetricDefinitionCollectionPage) Values() []ResourceMetricDefinition {
19339	if page.rmdc.IsEmpty() {
19340		return nil
19341	}
19342	return *page.rmdc.Value
19343}
19344
19345// Creates a new instance of the ResourceMetricDefinitionCollectionPage type.
19346func NewResourceMetricDefinitionCollectionPage(cur ResourceMetricDefinitionCollection, getNextPage func(context.Context, ResourceMetricDefinitionCollection) (ResourceMetricDefinitionCollection, error)) ResourceMetricDefinitionCollectionPage {
19347	return ResourceMetricDefinitionCollectionPage{
19348		fn:   getNextPage,
19349		rmdc: cur,
19350	}
19351}
19352
19353// ResourceMetricDefinitionProperties resourceMetricDefinition resource specific properties
19354type ResourceMetricDefinitionProperties struct {
19355	// Unit - READ-ONLY; Unit of the metric.
19356	Unit *string `json:"unit,omitempty"`
19357	// PrimaryAggregationType - READ-ONLY; Primary aggregation type.
19358	PrimaryAggregationType *string `json:"primaryAggregationType,omitempty"`
19359	// MetricAvailabilities - READ-ONLY; List of time grains supported for the metric together with retention period.
19360	MetricAvailabilities *[]ResourceMetricAvailability `json:"metricAvailabilities,omitempty"`
19361	// ResourceURI - READ-ONLY; Resource URI.
19362	ResourceURI *string `json:"resourceUri,omitempty"`
19363	// Properties - READ-ONLY; Resource metric definition properties.
19364	Properties map[string]*string `json:"properties"`
19365}
19366
19367// MarshalJSON is the custom marshaler for ResourceMetricDefinitionProperties.
19368func (rmd ResourceMetricDefinitionProperties) MarshalJSON() ([]byte, error) {
19369	objectMap := make(map[string]interface{})
19370	return json.Marshal(objectMap)
19371}
19372
19373// ResourceNameAvailability information regarding availability of a resource name.
19374type ResourceNameAvailability struct {
19375	autorest.Response `json:"-"`
19376	// NameAvailable - <code>true</code> indicates name is valid and available. <code>false</code> indicates the name is invalid, unavailable, or both.
19377	NameAvailable *bool `json:"nameAvailable,omitempty"`
19378	// 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'
19379	Reason InAvailabilityReasonType `json:"reason,omitempty"`
19380	// 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.
19381	Message *string `json:"message,omitempty"`
19382}
19383
19384// ResourceNameAvailabilityRequest resource name availability request content.
19385type ResourceNameAvailabilityRequest struct {
19386	// Name - Resource name to verify.
19387	Name *string `json:"name,omitempty"`
19388	// Type - Resource type used for verification. Possible values include: 'CheckNameResourceTypesSite', 'CheckNameResourceTypesSlot', 'CheckNameResourceTypesHostingEnvironment', 'CheckNameResourceTypesPublishingUser', 'CheckNameResourceTypesMicrosoftWebsites', 'CheckNameResourceTypesMicrosoftWebsitesslots', 'CheckNameResourceTypesMicrosoftWebhostingEnvironments', 'CheckNameResourceTypesMicrosoftWebpublishingUsers'
19389	Type CheckNameResourceTypes `json:"type,omitempty"`
19390	// IsFqdn - Is fully qualified domain name.
19391	IsFqdn *bool `json:"isFqdn,omitempty"`
19392}
19393
19394// ResponseMetaData ...
19395type ResponseMetaData struct {
19396	// DataSource - Source of the Data
19397	DataSource *DataSource `json:"dataSource,omitempty"`
19398}
19399
19400// RestoreRequest description of a restore request.
19401type RestoreRequest struct {
19402	autorest.Response `json:"-"`
19403	// RestoreRequestProperties - RestoreRequest resource specific properties
19404	*RestoreRequestProperties `json:"properties,omitempty"`
19405	// ID - READ-ONLY; Resource Id.
19406	ID *string `json:"id,omitempty"`
19407	// Name - READ-ONLY; Resource Name.
19408	Name *string `json:"name,omitempty"`
19409	// Kind - Kind of resource.
19410	Kind *string `json:"kind,omitempty"`
19411	// Type - READ-ONLY; Resource type.
19412	Type *string `json:"type,omitempty"`
19413}
19414
19415// MarshalJSON is the custom marshaler for RestoreRequest.
19416func (rr RestoreRequest) MarshalJSON() ([]byte, error) {
19417	objectMap := make(map[string]interface{})
19418	if rr.RestoreRequestProperties != nil {
19419		objectMap["properties"] = rr.RestoreRequestProperties
19420	}
19421	if rr.Kind != nil {
19422		objectMap["kind"] = rr.Kind
19423	}
19424	return json.Marshal(objectMap)
19425}
19426
19427// UnmarshalJSON is the custom unmarshaler for RestoreRequest struct.
19428func (rr *RestoreRequest) UnmarshalJSON(body []byte) error {
19429	var m map[string]*json.RawMessage
19430	err := json.Unmarshal(body, &m)
19431	if err != nil {
19432		return err
19433	}
19434	for k, v := range m {
19435		switch k {
19436		case "properties":
19437			if v != nil {
19438				var restoreRequestProperties RestoreRequestProperties
19439				err = json.Unmarshal(*v, &restoreRequestProperties)
19440				if err != nil {
19441					return err
19442				}
19443				rr.RestoreRequestProperties = &restoreRequestProperties
19444			}
19445		case "id":
19446			if v != nil {
19447				var ID string
19448				err = json.Unmarshal(*v, &ID)
19449				if err != nil {
19450					return err
19451				}
19452				rr.ID = &ID
19453			}
19454		case "name":
19455			if v != nil {
19456				var name string
19457				err = json.Unmarshal(*v, &name)
19458				if err != nil {
19459					return err
19460				}
19461				rr.Name = &name
19462			}
19463		case "kind":
19464			if v != nil {
19465				var kind string
19466				err = json.Unmarshal(*v, &kind)
19467				if err != nil {
19468					return err
19469				}
19470				rr.Kind = &kind
19471			}
19472		case "type":
19473			if v != nil {
19474				var typeVar string
19475				err = json.Unmarshal(*v, &typeVar)
19476				if err != nil {
19477					return err
19478				}
19479				rr.Type = &typeVar
19480			}
19481		}
19482	}
19483
19484	return nil
19485}
19486
19487// RestoreRequestProperties restoreRequest resource specific properties
19488type RestoreRequestProperties struct {
19489	// StorageAccountURL - SAS URL to the container.
19490	StorageAccountURL *string `json:"storageAccountUrl,omitempty"`
19491	// BlobName - Name of a blob which contains the backup.
19492	BlobName *string `json:"blobName,omitempty"`
19493	// 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.
19494	Overwrite *bool `json:"overwrite,omitempty"`
19495	// SiteName - Name of an app.
19496	SiteName *string `json:"siteName,omitempty"`
19497	// Databases - Collection of databases which should be restored. This list has to match the list of databases included in the backup.
19498	Databases *[]DatabaseBackupSetting `json:"databases,omitempty"`
19499	// 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
19500	// the app's object when it is being restored, but that might fail due to conflicts during the operation.
19501	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
19502	// IgnoreDatabases - Ignore the databases and only restore the site content
19503	IgnoreDatabases *bool `json:"ignoreDatabases,omitempty"`
19504	// AppServicePlan - Specify app service plan that will own restored site.
19505	AppServicePlan *string `json:"appServicePlan,omitempty"`
19506	// OperationType - Operation type. Possible values include: 'BackupRestoreOperationTypeDefault', 'BackupRestoreOperationTypeClone', 'BackupRestoreOperationTypeRelocation', 'BackupRestoreOperationTypeSnapshot', 'BackupRestoreOperationTypeCloudFS'
19507	OperationType BackupRestoreOperationType `json:"operationType,omitempty"`
19508	// AdjustConnectionStrings - <code>true</code> if SiteConfig.ConnectionStrings should be set in new app; otherwise, <code>false</code>.
19509	AdjustConnectionStrings *bool `json:"adjustConnectionStrings,omitempty"`
19510	// HostingEnvironment - App Service Environment name, if needed (only when restoring an app to an App Service Environment).
19511	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
19512}
19513
19514// ServiceSpecification resource metrics service provided by Microsoft.Insights resource provider.
19515type ServiceSpecification struct {
19516	MetricSpecifications *[]MetricSpecification `json:"metricSpecifications,omitempty"`
19517	LogSpecifications    *[]LogSpecification    `json:"logSpecifications,omitempty"`
19518}
19519
19520// SetObject ...
19521type SetObject struct {
19522	autorest.Response `json:"-"`
19523	Value             interface{} `json:"value,omitempty"`
19524}
19525
19526// Site a web app, a mobile app backend, or an API app.
19527type Site struct {
19528	autorest.Response `json:"-"`
19529	// SiteProperties - Site resource specific properties
19530	*SiteProperties `json:"properties,omitempty"`
19531	Identity        *ManagedServiceIdentity `json:"identity,omitempty"`
19532	// ID - READ-ONLY; Resource Id.
19533	ID *string `json:"id,omitempty"`
19534	// Name - READ-ONLY; Resource Name.
19535	Name *string `json:"name,omitempty"`
19536	// Kind - Kind of resource.
19537	Kind *string `json:"kind,omitempty"`
19538	// Location - Resource Location.
19539	Location *string `json:"location,omitempty"`
19540	// Type - READ-ONLY; Resource type.
19541	Type *string `json:"type,omitempty"`
19542	// Tags - Resource tags.
19543	Tags map[string]*string `json:"tags"`
19544}
19545
19546// MarshalJSON is the custom marshaler for Site.
19547func (s Site) MarshalJSON() ([]byte, error) {
19548	objectMap := make(map[string]interface{})
19549	if s.SiteProperties != nil {
19550		objectMap["properties"] = s.SiteProperties
19551	}
19552	if s.Identity != nil {
19553		objectMap["identity"] = s.Identity
19554	}
19555	if s.Kind != nil {
19556		objectMap["kind"] = s.Kind
19557	}
19558	if s.Location != nil {
19559		objectMap["location"] = s.Location
19560	}
19561	if s.Tags != nil {
19562		objectMap["tags"] = s.Tags
19563	}
19564	return json.Marshal(objectMap)
19565}
19566
19567// UnmarshalJSON is the custom unmarshaler for Site struct.
19568func (s *Site) UnmarshalJSON(body []byte) error {
19569	var m map[string]*json.RawMessage
19570	err := json.Unmarshal(body, &m)
19571	if err != nil {
19572		return err
19573	}
19574	for k, v := range m {
19575		switch k {
19576		case "properties":
19577			if v != nil {
19578				var siteProperties SiteProperties
19579				err = json.Unmarshal(*v, &siteProperties)
19580				if err != nil {
19581					return err
19582				}
19583				s.SiteProperties = &siteProperties
19584			}
19585		case "identity":
19586			if v != nil {
19587				var identity ManagedServiceIdentity
19588				err = json.Unmarshal(*v, &identity)
19589				if err != nil {
19590					return err
19591				}
19592				s.Identity = &identity
19593			}
19594		case "id":
19595			if v != nil {
19596				var ID string
19597				err = json.Unmarshal(*v, &ID)
19598				if err != nil {
19599					return err
19600				}
19601				s.ID = &ID
19602			}
19603		case "name":
19604			if v != nil {
19605				var name string
19606				err = json.Unmarshal(*v, &name)
19607				if err != nil {
19608					return err
19609				}
19610				s.Name = &name
19611			}
19612		case "kind":
19613			if v != nil {
19614				var kind string
19615				err = json.Unmarshal(*v, &kind)
19616				if err != nil {
19617					return err
19618				}
19619				s.Kind = &kind
19620			}
19621		case "location":
19622			if v != nil {
19623				var location string
19624				err = json.Unmarshal(*v, &location)
19625				if err != nil {
19626					return err
19627				}
19628				s.Location = &location
19629			}
19630		case "type":
19631			if v != nil {
19632				var typeVar string
19633				err = json.Unmarshal(*v, &typeVar)
19634				if err != nil {
19635					return err
19636				}
19637				s.Type = &typeVar
19638			}
19639		case "tags":
19640			if v != nil {
19641				var tags map[string]*string
19642				err = json.Unmarshal(*v, &tags)
19643				if err != nil {
19644					return err
19645				}
19646				s.Tags = tags
19647			}
19648		}
19649	}
19650
19651	return nil
19652}
19653
19654// SiteAuthSettings configuration settings for the Azure App Service Authentication / Authorization
19655// feature.
19656type SiteAuthSettings struct {
19657	autorest.Response `json:"-"`
19658	// SiteAuthSettingsProperties - SiteAuthSettings resource specific properties
19659	*SiteAuthSettingsProperties `json:"properties,omitempty"`
19660	// ID - READ-ONLY; Resource Id.
19661	ID *string `json:"id,omitempty"`
19662	// Name - READ-ONLY; Resource Name.
19663	Name *string `json:"name,omitempty"`
19664	// Kind - Kind of resource.
19665	Kind *string `json:"kind,omitempty"`
19666	// Type - READ-ONLY; Resource type.
19667	Type *string `json:"type,omitempty"`
19668}
19669
19670// MarshalJSON is the custom marshaler for SiteAuthSettings.
19671func (sas SiteAuthSettings) MarshalJSON() ([]byte, error) {
19672	objectMap := make(map[string]interface{})
19673	if sas.SiteAuthSettingsProperties != nil {
19674		objectMap["properties"] = sas.SiteAuthSettingsProperties
19675	}
19676	if sas.Kind != nil {
19677		objectMap["kind"] = sas.Kind
19678	}
19679	return json.Marshal(objectMap)
19680}
19681
19682// UnmarshalJSON is the custom unmarshaler for SiteAuthSettings struct.
19683func (sas *SiteAuthSettings) UnmarshalJSON(body []byte) error {
19684	var m map[string]*json.RawMessage
19685	err := json.Unmarshal(body, &m)
19686	if err != nil {
19687		return err
19688	}
19689	for k, v := range m {
19690		switch k {
19691		case "properties":
19692			if v != nil {
19693				var siteAuthSettingsProperties SiteAuthSettingsProperties
19694				err = json.Unmarshal(*v, &siteAuthSettingsProperties)
19695				if err != nil {
19696					return err
19697				}
19698				sas.SiteAuthSettingsProperties = &siteAuthSettingsProperties
19699			}
19700		case "id":
19701			if v != nil {
19702				var ID string
19703				err = json.Unmarshal(*v, &ID)
19704				if err != nil {
19705					return err
19706				}
19707				sas.ID = &ID
19708			}
19709		case "name":
19710			if v != nil {
19711				var name string
19712				err = json.Unmarshal(*v, &name)
19713				if err != nil {
19714					return err
19715				}
19716				sas.Name = &name
19717			}
19718		case "kind":
19719			if v != nil {
19720				var kind string
19721				err = json.Unmarshal(*v, &kind)
19722				if err != nil {
19723					return err
19724				}
19725				sas.Kind = &kind
19726			}
19727		case "type":
19728			if v != nil {
19729				var typeVar string
19730				err = json.Unmarshal(*v, &typeVar)
19731				if err != nil {
19732					return err
19733				}
19734				sas.Type = &typeVar
19735			}
19736		}
19737	}
19738
19739	return nil
19740}
19741
19742// SiteAuthSettingsProperties siteAuthSettings resource specific properties
19743type SiteAuthSettingsProperties struct {
19744	// Enabled - <code>true</code> if the Authentication / Authorization feature is enabled for the current app; otherwise, <code>false</code>.
19745	Enabled *bool `json:"enabled,omitempty"`
19746	// RuntimeVersion - The RuntimeVersion of the Authentication / Authorization feature in use for the current app.
19747	// The setting in this value can control the behavior of certain features in the Authentication / Authorization module.
19748	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
19749	// UnauthenticatedClientAction - The action to take when an unauthenticated client attempts to access the app. Possible values include: 'RedirectToLoginPage', 'AllowAnonymous'
19750	UnauthenticatedClientAction UnauthenticatedClientAction `json:"unauthenticatedClientAction,omitempty"`
19751	// TokenStoreEnabled - <code>true</code> to durably store platform-specific security tokens that are obtained during login flows; otherwise, <code>false</code>.
19752	//  The default is <code>false</code>.
19753	TokenStoreEnabled *bool `json:"tokenStoreEnabled,omitempty"`
19754	// 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.
19755	// This is an advanced setting typically only needed by Windows Store application backends.
19756	// Note that URLs within the current domain are always implicitly allowed.
19757	AllowedExternalRedirectUrls *[]string `json:"allowedExternalRedirectUrls,omitempty"`
19758	// DefaultProvider - The default authentication provider to use when multiple providers are configured.
19759	// This setting is only needed if multiple providers are configured and the unauthenticated client
19760	// action is set to "RedirectToLoginPage". Possible values include: 'BuiltInAuthenticationProviderAzureActiveDirectory', 'BuiltInAuthenticationProviderFacebook', 'BuiltInAuthenticationProviderGoogle', 'BuiltInAuthenticationProviderMicrosoftAccount', 'BuiltInAuthenticationProviderTwitter', 'BuiltInAuthenticationProviderGithub'
19761	DefaultProvider BuiltInAuthenticationProvider `json:"defaultProvider,omitempty"`
19762	// TokenRefreshExtensionHours - The number of hours after session token expiration that a session token can be used to
19763	// call the token refresh API. The default is 72 hours.
19764	TokenRefreshExtensionHours *float64 `json:"tokenRefreshExtensionHours,omitempty"`
19765	// ClientID - The Client ID of this relying party application, known as the client_id.
19766	// This setting is required for enabling OpenID Connection authentication with Azure Active Directory or
19767	// other 3rd party OpenID Connect providers.
19768	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
19769	ClientID *string `json:"clientId,omitempty"`
19770	// ClientSecret - The Client Secret of this relying party application (in Azure Active Directory, this is also referred to as the Key).
19771	// This setting is optional. If no client secret is configured, the OpenID Connect implicit auth flow is used to authenticate end users.
19772	// Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users.
19773	// More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html
19774	ClientSecret *string `json:"clientSecret,omitempty"`
19775	// ClientSecretSettingName - The app setting name that contains the client secret of the relying party application.
19776	ClientSecretSettingName *string `json:"clientSecretSettingName,omitempty"`
19777	// ClientSecretCertificateThumbprint - An alternative to the client secret, that is the thumbprint of a certificate used for signing purposes. This property acts as
19778	// a replacement for the Client Secret. It is also optional.
19779	ClientSecretCertificateThumbprint *string `json:"clientSecretCertificateThumbprint,omitempty"`
19780	// Issuer - The OpenID Connect Issuer URI that represents the entity which issues access tokens for this application.
19781	// When using Azure Active Directory, this value is the URI of the directory tenant, e.g. https://sts.windows.net/{tenant-guid}/.
19782	// This URI is a case-sensitive identifier for the token issuer.
19783	// More information on OpenID Connect Discovery: http://openid.net/specs/openid-connect-discovery-1_0.html
19784	Issuer *string `json:"issuer,omitempty"`
19785	// ValidateIssuer - Gets a value indicating whether the issuer should be a valid HTTPS url and be validated as such.
19786	ValidateIssuer *bool `json:"validateIssuer,omitempty"`
19787	// AllowedAudiences - Allowed audience values to consider when validating JWTs issued by
19788	// Azure Active Directory. Note that the <code>ClientID</code> value is always considered an
19789	// allowed audience, regardless of this setting.
19790	AllowedAudiences *[]string `json:"allowedAudiences,omitempty"`
19791	// AdditionalLoginParams - Login parameters to send to the OpenID Connect authorization endpoint when
19792	// a user logs in. Each parameter must be in the form "key=value".
19793	AdditionalLoginParams *[]string `json:"additionalLoginParams,omitempty"`
19794	// AadClaimsAuthorization - Gets a JSON string containing the Azure AD Acl settings.
19795	AadClaimsAuthorization *string `json:"aadClaimsAuthorization,omitempty"`
19796	// GoogleClientID - The OpenID Connect Client ID for the Google web application.
19797	// This setting is required for enabling Google Sign-In.
19798	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
19799	GoogleClientID *string `json:"googleClientId,omitempty"`
19800	// GoogleClientSecret - The client secret associated with the Google web application.
19801	// This setting is required for enabling Google Sign-In.
19802	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
19803	GoogleClientSecret *string `json:"googleClientSecret,omitempty"`
19804	// GoogleClientSecretSettingName - The app setting name that contains the client secret associated with
19805	// the Google web application.
19806	GoogleClientSecretSettingName *string `json:"googleClientSecretSettingName,omitempty"`
19807	// GoogleOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication.
19808	// This setting is optional. If not specified, "openid", "profile", and "email" are used as default scopes.
19809	// Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/
19810	GoogleOAuthScopes *[]string `json:"googleOAuthScopes,omitempty"`
19811	// FacebookAppID - The App ID of the Facebook app used for login.
19812	// This setting is required for enabling Facebook Login.
19813	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
19814	FacebookAppID *string `json:"facebookAppId,omitempty"`
19815	// FacebookAppSecret - The App Secret of the Facebook app used for Facebook Login.
19816	// This setting is required for enabling Facebook Login.
19817	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
19818	FacebookAppSecret *string `json:"facebookAppSecret,omitempty"`
19819	// FacebookAppSecretSettingName - The app setting name that contains the app secret used for Facebook Login.
19820	FacebookAppSecretSettingName *string `json:"facebookAppSecretSettingName,omitempty"`
19821	// FacebookOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication.
19822	// This setting is optional.
19823	// Facebook Login documentation: https://developers.facebook.com/docs/facebook-login
19824	FacebookOAuthScopes *[]string `json:"facebookOAuthScopes,omitempty"`
19825	// GitHubClientID - The Client Id of the GitHub app used for login.
19826	// This setting is required for enabling Github login
19827	GitHubClientID *string `json:"gitHubClientId,omitempty"`
19828	// GitHubClientSecret - The Client Secret of the GitHub app used for Github Login.
19829	// This setting is required for enabling Github login.
19830	GitHubClientSecret *string `json:"gitHubClientSecret,omitempty"`
19831	// GitHubClientSecretSettingName - The app setting name that contains the client secret of the Github
19832	// app used for GitHub Login.
19833	GitHubClientSecretSettingName *string `json:"gitHubClientSecretSettingName,omitempty"`
19834	// GitHubOAuthScopes - The OAuth 2.0 scopes that will be requested as part of GitHub Login authentication.
19835	// This setting is optional
19836	GitHubOAuthScopes *[]string `json:"gitHubOAuthScopes,omitempty"`
19837	// TwitterConsumerKey - The OAuth 1.0a consumer key of the Twitter application used for sign-in.
19838	// This setting is required for enabling Twitter Sign-In.
19839	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
19840	TwitterConsumerKey *string `json:"twitterConsumerKey,omitempty"`
19841	// TwitterConsumerSecret - The OAuth 1.0a consumer secret of the Twitter application used for sign-in.
19842	// This setting is required for enabling Twitter Sign-In.
19843	// Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in
19844	TwitterConsumerSecret *string `json:"twitterConsumerSecret,omitempty"`
19845	// TwitterConsumerSecretSettingName - The app setting name that contains the OAuth 1.0a consumer secret of the Twitter
19846	// application used for sign-in.
19847	TwitterConsumerSecretSettingName *string `json:"twitterConsumerSecretSettingName,omitempty"`
19848	// MicrosoftAccountClientID - The OAuth 2.0 client ID that was created for the app used for authentication.
19849	// This setting is required for enabling Microsoft Account authentication.
19850	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
19851	MicrosoftAccountClientID *string `json:"microsoftAccountClientId,omitempty"`
19852	// MicrosoftAccountClientSecret - The OAuth 2.0 client secret that was created for the app used for authentication.
19853	// This setting is required for enabling Microsoft Account authentication.
19854	// Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm
19855	MicrosoftAccountClientSecret *string `json:"microsoftAccountClientSecret,omitempty"`
19856	// MicrosoftAccountClientSecretSettingName - The app setting name containing the OAuth 2.0 client secret that was created for the
19857	// app used for authentication.
19858	MicrosoftAccountClientSecretSettingName *string `json:"microsoftAccountClientSecretSettingName,omitempty"`
19859	// MicrosoftAccountOAuthScopes - The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication.
19860	// This setting is optional. If not specified, "wl.basic" is used as the default scope.
19861	// Microsoft Account Scopes and permissions documentation: https://msdn.microsoft.com/en-us/library/dn631845.aspx
19862	MicrosoftAccountOAuthScopes *[]string `json:"microsoftAccountOAuthScopes,omitempty"`
19863	// IsAuthFromFile - "true" if the auth config settings should be read from a file,
19864	// "false" otherwise
19865	IsAuthFromFile *string `json:"isAuthFromFile,omitempty"`
19866	// AuthFilePath - The path of the config file containing auth settings.
19867	// If the path is relative, base will the site's root directory.
19868	AuthFilePath *string `json:"authFilePath,omitempty"`
19869}
19870
19871// SiteAuthSettingsV2 ...
19872type SiteAuthSettingsV2 struct {
19873	autorest.Response `json:"-"`
19874	// SiteAuthSettingsV2Properties - SiteAuthSettingsV2 resource specific properties
19875	*SiteAuthSettingsV2Properties `json:"properties,omitempty"`
19876	// ID - READ-ONLY; Resource Id.
19877	ID *string `json:"id,omitempty"`
19878	// Name - READ-ONLY; Resource Name.
19879	Name *string `json:"name,omitempty"`
19880	// Kind - Kind of resource.
19881	Kind *string `json:"kind,omitempty"`
19882	// Type - READ-ONLY; Resource type.
19883	Type *string `json:"type,omitempty"`
19884}
19885
19886// MarshalJSON is the custom marshaler for SiteAuthSettingsV2.
19887func (sasv SiteAuthSettingsV2) MarshalJSON() ([]byte, error) {
19888	objectMap := make(map[string]interface{})
19889	if sasv.SiteAuthSettingsV2Properties != nil {
19890		objectMap["properties"] = sasv.SiteAuthSettingsV2Properties
19891	}
19892	if sasv.Kind != nil {
19893		objectMap["kind"] = sasv.Kind
19894	}
19895	return json.Marshal(objectMap)
19896}
19897
19898// UnmarshalJSON is the custom unmarshaler for SiteAuthSettingsV2 struct.
19899func (sasv *SiteAuthSettingsV2) UnmarshalJSON(body []byte) error {
19900	var m map[string]*json.RawMessage
19901	err := json.Unmarshal(body, &m)
19902	if err != nil {
19903		return err
19904	}
19905	for k, v := range m {
19906		switch k {
19907		case "properties":
19908			if v != nil {
19909				var siteAuthSettingsV2Properties SiteAuthSettingsV2Properties
19910				err = json.Unmarshal(*v, &siteAuthSettingsV2Properties)
19911				if err != nil {
19912					return err
19913				}
19914				sasv.SiteAuthSettingsV2Properties = &siteAuthSettingsV2Properties
19915			}
19916		case "id":
19917			if v != nil {
19918				var ID string
19919				err = json.Unmarshal(*v, &ID)
19920				if err != nil {
19921					return err
19922				}
19923				sasv.ID = &ID
19924			}
19925		case "name":
19926			if v != nil {
19927				var name string
19928				err = json.Unmarshal(*v, &name)
19929				if err != nil {
19930					return err
19931				}
19932				sasv.Name = &name
19933			}
19934		case "kind":
19935			if v != nil {
19936				var kind string
19937				err = json.Unmarshal(*v, &kind)
19938				if err != nil {
19939					return err
19940				}
19941				sasv.Kind = &kind
19942			}
19943		case "type":
19944			if v != nil {
19945				var typeVar string
19946				err = json.Unmarshal(*v, &typeVar)
19947				if err != nil {
19948					return err
19949				}
19950				sasv.Type = &typeVar
19951			}
19952		}
19953	}
19954
19955	return nil
19956}
19957
19958// SiteAuthSettingsV2Properties siteAuthSettingsV2 resource specific properties
19959type SiteAuthSettingsV2Properties struct {
19960	Platform          *AuthPlatform      `json:"platform,omitempty"`
19961	GlobalValidation  *GlobalValidation  `json:"globalValidation,omitempty"`
19962	IdentityProviders *IdentityProviders `json:"identityProviders,omitempty"`
19963	Login             *Login             `json:"login,omitempty"`
19964	HTTPSettings      *HTTPSettings      `json:"httpSettings,omitempty"`
19965}
19966
19967// SiteCloneability represents whether or not an app is cloneable.
19968type SiteCloneability struct {
19969	autorest.Response `json:"-"`
19970	// Result - Name of app. Possible values include: 'Cloneable', 'PartiallyCloneable', 'NotCloneable'
19971	Result CloneAbilityResult `json:"result,omitempty"`
19972	// BlockingFeatures - List of features enabled on app that prevent cloning.
19973	BlockingFeatures *[]SiteCloneabilityCriterion `json:"blockingFeatures,omitempty"`
19974	// UnsupportedFeatures - List of features enabled on app that are non-blocking but cannot be cloned. The app can still be cloned
19975	// but the features in this list will not be set up on cloned app.
19976	UnsupportedFeatures *[]SiteCloneabilityCriterion `json:"unsupportedFeatures,omitempty"`
19977	// BlockingCharacteristics - List of blocking application characteristics.
19978	BlockingCharacteristics *[]SiteCloneabilityCriterion `json:"blockingCharacteristics,omitempty"`
19979}
19980
19981// SiteCloneabilityCriterion an app cloneability criterion.
19982type SiteCloneabilityCriterion struct {
19983	// Name - Name of criterion.
19984	Name *string `json:"name,omitempty"`
19985	// Description - Description of criterion.
19986	Description *string `json:"description,omitempty"`
19987}
19988
19989// SiteConfig configuration of an App Service app.
19990type SiteConfig struct {
19991	// NumberOfWorkers - Number of workers.
19992	NumberOfWorkers *int32 `json:"numberOfWorkers,omitempty"`
19993	// DefaultDocuments - Default documents.
19994	DefaultDocuments *[]string `json:"defaultDocuments,omitempty"`
19995	// NetFrameworkVersion - .NET Framework version.
19996	NetFrameworkVersion *string `json:"netFrameworkVersion,omitempty"`
19997	// PhpVersion - Version of PHP.
19998	PhpVersion *string `json:"phpVersion,omitempty"`
19999	// PythonVersion - Version of Python.
20000	PythonVersion *string `json:"pythonVersion,omitempty"`
20001	// NodeVersion - Version of Node.js.
20002	NodeVersion *string `json:"nodeVersion,omitempty"`
20003	// PowerShellVersion - Version of PowerShell.
20004	PowerShellVersion *string `json:"powerShellVersion,omitempty"`
20005	// LinuxFxVersion - Linux App Framework and version
20006	LinuxFxVersion *string `json:"linuxFxVersion,omitempty"`
20007	// WindowsFxVersion - Xenon App Framework and version
20008	WindowsFxVersion *string `json:"windowsFxVersion,omitempty"`
20009	// RequestTracingEnabled - <code>true</code> if request tracing is enabled; otherwise, <code>false</code>.
20010	RequestTracingEnabled *bool `json:"requestTracingEnabled,omitempty"`
20011	// RequestTracingExpirationTime - Request tracing expiration time.
20012	RequestTracingExpirationTime *date.Time `json:"requestTracingExpirationTime,omitempty"`
20013	// RemoteDebuggingEnabled - <code>true</code> if remote debugging is enabled; otherwise, <code>false</code>.
20014	RemoteDebuggingEnabled *bool `json:"remoteDebuggingEnabled,omitempty"`
20015	// RemoteDebuggingVersion - Remote debugging version.
20016	RemoteDebuggingVersion *string `json:"remoteDebuggingVersion,omitempty"`
20017	// HTTPLoggingEnabled - <code>true</code> if HTTP logging is enabled; otherwise, <code>false</code>.
20018	HTTPLoggingEnabled *bool `json:"httpLoggingEnabled,omitempty"`
20019	// LogsDirectorySizeLimit - HTTP logs directory size limit.
20020	LogsDirectorySizeLimit *int32 `json:"logsDirectorySizeLimit,omitempty"`
20021	// DetailedErrorLoggingEnabled - <code>true</code> if detailed error logging is enabled; otherwise, <code>false</code>.
20022	DetailedErrorLoggingEnabled *bool `json:"detailedErrorLoggingEnabled,omitempty"`
20023	// PublishingUsername - Publishing user name.
20024	PublishingUsername *string `json:"publishingUsername,omitempty"`
20025	// AppSettings - Application settings.
20026	AppSettings *[]NameValuePair `json:"appSettings,omitempty"`
20027	// ConnectionStrings - Connection strings.
20028	ConnectionStrings *[]ConnStringInfo `json:"connectionStrings,omitempty"`
20029	// MachineKey - READ-ONLY; Site MachineKey.
20030	MachineKey *SiteMachineKey `json:"machineKey,omitempty"`
20031	// HandlerMappings - Handler mappings.
20032	HandlerMappings *[]HandlerMapping `json:"handlerMappings,omitempty"`
20033	// DocumentRoot - Document root.
20034	DocumentRoot *string `json:"documentRoot,omitempty"`
20035	// ScmType - SCM type. Possible values include: 'ScmTypeNone', 'ScmTypeDropbox', 'ScmTypeTfs', 'ScmTypeLocalGit', 'ScmTypeGitHub', 'ScmTypeCodePlexGit', 'ScmTypeCodePlexHg', 'ScmTypeBitbucketGit', 'ScmTypeBitbucketHg', 'ScmTypeExternalGit', 'ScmTypeExternalHg', 'ScmTypeOneDrive', 'ScmTypeVSO', 'ScmTypeVSTSRM'
20036	ScmType ScmType `json:"scmType,omitempty"`
20037	// Use32BitWorkerProcess - <code>true</code> to use 32-bit worker process; otherwise, <code>false</code>.
20038	Use32BitWorkerProcess *bool `json:"use32BitWorkerProcess,omitempty"`
20039	// WebSocketsEnabled - <code>true</code> if WebSocket is enabled; otherwise, <code>false</code>.
20040	WebSocketsEnabled *bool `json:"webSocketsEnabled,omitempty"`
20041	// AlwaysOn - <code>true</code> if Always On is enabled; otherwise, <code>false</code>.
20042	AlwaysOn *bool `json:"alwaysOn,omitempty"`
20043	// JavaVersion - Java version.
20044	JavaVersion *string `json:"javaVersion,omitempty"`
20045	// JavaContainer - Java container.
20046	JavaContainer *string `json:"javaContainer,omitempty"`
20047	// JavaContainerVersion - Java container version.
20048	JavaContainerVersion *string `json:"javaContainerVersion,omitempty"`
20049	// AppCommandLine - App command line to launch.
20050	AppCommandLine *string `json:"appCommandLine,omitempty"`
20051	// ManagedPipelineMode - Managed pipeline mode. Possible values include: 'Integrated', 'Classic'
20052	ManagedPipelineMode ManagedPipelineMode `json:"managedPipelineMode,omitempty"`
20053	// VirtualApplications - Virtual applications.
20054	VirtualApplications *[]VirtualApplication `json:"virtualApplications,omitempty"`
20055	// LoadBalancing - Site load balancing. Possible values include: 'WeightedRoundRobin', 'LeastRequests', 'LeastResponseTime', 'WeightedTotalTraffic', 'RequestHash'
20056	LoadBalancing SiteLoadBalancing `json:"loadBalancing,omitempty"`
20057	// Experiments - This is work around for polymorphic types.
20058	Experiments *Experiments `json:"experiments,omitempty"`
20059	// Limits - Site limits.
20060	Limits *SiteLimits `json:"limits,omitempty"`
20061	// AutoHealEnabled - <code>true</code> if Auto Heal is enabled; otherwise, <code>false</code>.
20062	AutoHealEnabled *bool `json:"autoHealEnabled,omitempty"`
20063	// AutoHealRules - Auto Heal rules.
20064	AutoHealRules *AutoHealRules `json:"autoHealRules,omitempty"`
20065	// TracingOptions - Tracing options.
20066	TracingOptions *string `json:"tracingOptions,omitempty"`
20067	// VnetName - Virtual Network name.
20068	VnetName *string `json:"vnetName,omitempty"`
20069	// VnetRouteAllEnabled - Virtual Network Route All enabled. This causes all outbound traffic to have Virtual Network Security Groups and User Defined Routes applied.
20070	VnetRouteAllEnabled *bool `json:"vnetRouteAllEnabled,omitempty"`
20071	// VnetPrivatePortsCount - The number of private ports assigned to this app. These will be assigned dynamically on runtime.
20072	VnetPrivatePortsCount *int32 `json:"vnetPrivatePortsCount,omitempty"`
20073	// Cors - Cross-Origin Resource Sharing (CORS) settings.
20074	Cors *CorsSettings `json:"cors,omitempty"`
20075	// Push - Push endpoint settings.
20076	Push *PushSettings `json:"push,omitempty"`
20077	// APIDefinition - Information about the formal API definition for the app.
20078	APIDefinition *APIDefinitionInfo `json:"apiDefinition,omitempty"`
20079	// APIManagementConfig - Azure API management settings linked to the app.
20080	APIManagementConfig *APIManagementConfig `json:"apiManagementConfig,omitempty"`
20081	// AutoSwapSlotName - Auto-swap slot name.
20082	AutoSwapSlotName *string `json:"autoSwapSlotName,omitempty"`
20083	// LocalMySQLEnabled - <code>true</code> to enable local MySQL; otherwise, <code>false</code>.
20084	LocalMySQLEnabled *bool `json:"localMySqlEnabled,omitempty"`
20085	// ManagedServiceIdentityID - Managed Service Identity Id
20086	ManagedServiceIdentityID *int32 `json:"managedServiceIdentityId,omitempty"`
20087	// XManagedServiceIdentityID - Explicit Managed Service Identity Id
20088	XManagedServiceIdentityID *int32 `json:"xManagedServiceIdentityId,omitempty"`
20089	// IPSecurityRestrictions - IP security restrictions for main.
20090	IPSecurityRestrictions *[]IPSecurityRestriction `json:"ipSecurityRestrictions,omitempty"`
20091	// ScmIPSecurityRestrictions - IP security restrictions for scm.
20092	ScmIPSecurityRestrictions *[]IPSecurityRestriction `json:"scmIpSecurityRestrictions,omitempty"`
20093	// ScmIPSecurityRestrictionsUseMain - IP security restrictions for scm to use main.
20094	ScmIPSecurityRestrictionsUseMain *bool `json:"scmIpSecurityRestrictionsUseMain,omitempty"`
20095	// HTTP20Enabled - Http20Enabled: configures a web site to allow clients to connect over http2.0
20096	HTTP20Enabled *bool `json:"http20Enabled,omitempty"`
20097	// MinTLSVersion - MinTlsVersion: configures the minimum version of TLS required for SSL requests. Possible values include: 'OneFullStopZero', 'OneFullStopOne', 'OneFullStopTwo'
20098	MinTLSVersion SupportedTLSVersions `json:"minTlsVersion,omitempty"`
20099	// ScmMinTLSVersion - ScmMinTlsVersion: configures the minimum version of TLS required for SSL requests for SCM site. Possible values include: 'OneFullStopZero', 'OneFullStopOne', 'OneFullStopTwo'
20100	ScmMinTLSVersion SupportedTLSVersions `json:"scmMinTlsVersion,omitempty"`
20101	// FtpsState - State of FTP / FTPS service. Possible values include: 'AllAllowed', 'FtpsOnly', 'Disabled'
20102	FtpsState FtpsState `json:"ftpsState,omitempty"`
20103	// PreWarmedInstanceCount - Number of preWarmed instances.
20104	// This setting only applies to the Consumption and Elastic Plans
20105	PreWarmedInstanceCount *int32 `json:"preWarmedInstanceCount,omitempty"`
20106	// HealthCheckPath - Health check path
20107	HealthCheckPath *string `json:"healthCheckPath,omitempty"`
20108}
20109
20110// MarshalJSON is the custom marshaler for SiteConfig.
20111func (sc SiteConfig) MarshalJSON() ([]byte, error) {
20112	objectMap := make(map[string]interface{})
20113	if sc.NumberOfWorkers != nil {
20114		objectMap["numberOfWorkers"] = sc.NumberOfWorkers
20115	}
20116	if sc.DefaultDocuments != nil {
20117		objectMap["defaultDocuments"] = sc.DefaultDocuments
20118	}
20119	if sc.NetFrameworkVersion != nil {
20120		objectMap["netFrameworkVersion"] = sc.NetFrameworkVersion
20121	}
20122	if sc.PhpVersion != nil {
20123		objectMap["phpVersion"] = sc.PhpVersion
20124	}
20125	if sc.PythonVersion != nil {
20126		objectMap["pythonVersion"] = sc.PythonVersion
20127	}
20128	if sc.NodeVersion != nil {
20129		objectMap["nodeVersion"] = sc.NodeVersion
20130	}
20131	if sc.PowerShellVersion != nil {
20132		objectMap["powerShellVersion"] = sc.PowerShellVersion
20133	}
20134	if sc.LinuxFxVersion != nil {
20135		objectMap["linuxFxVersion"] = sc.LinuxFxVersion
20136	}
20137	if sc.WindowsFxVersion != nil {
20138		objectMap["windowsFxVersion"] = sc.WindowsFxVersion
20139	}
20140	if sc.RequestTracingEnabled != nil {
20141		objectMap["requestTracingEnabled"] = sc.RequestTracingEnabled
20142	}
20143	if sc.RequestTracingExpirationTime != nil {
20144		objectMap["requestTracingExpirationTime"] = sc.RequestTracingExpirationTime
20145	}
20146	if sc.RemoteDebuggingEnabled != nil {
20147		objectMap["remoteDebuggingEnabled"] = sc.RemoteDebuggingEnabled
20148	}
20149	if sc.RemoteDebuggingVersion != nil {
20150		objectMap["remoteDebuggingVersion"] = sc.RemoteDebuggingVersion
20151	}
20152	if sc.HTTPLoggingEnabled != nil {
20153		objectMap["httpLoggingEnabled"] = sc.HTTPLoggingEnabled
20154	}
20155	if sc.LogsDirectorySizeLimit != nil {
20156		objectMap["logsDirectorySizeLimit"] = sc.LogsDirectorySizeLimit
20157	}
20158	if sc.DetailedErrorLoggingEnabled != nil {
20159		objectMap["detailedErrorLoggingEnabled"] = sc.DetailedErrorLoggingEnabled
20160	}
20161	if sc.PublishingUsername != nil {
20162		objectMap["publishingUsername"] = sc.PublishingUsername
20163	}
20164	if sc.AppSettings != nil {
20165		objectMap["appSettings"] = sc.AppSettings
20166	}
20167	if sc.ConnectionStrings != nil {
20168		objectMap["connectionStrings"] = sc.ConnectionStrings
20169	}
20170	if sc.HandlerMappings != nil {
20171		objectMap["handlerMappings"] = sc.HandlerMappings
20172	}
20173	if sc.DocumentRoot != nil {
20174		objectMap["documentRoot"] = sc.DocumentRoot
20175	}
20176	if sc.ScmType != "" {
20177		objectMap["scmType"] = sc.ScmType
20178	}
20179	if sc.Use32BitWorkerProcess != nil {
20180		objectMap["use32BitWorkerProcess"] = sc.Use32BitWorkerProcess
20181	}
20182	if sc.WebSocketsEnabled != nil {
20183		objectMap["webSocketsEnabled"] = sc.WebSocketsEnabled
20184	}
20185	if sc.AlwaysOn != nil {
20186		objectMap["alwaysOn"] = sc.AlwaysOn
20187	}
20188	if sc.JavaVersion != nil {
20189		objectMap["javaVersion"] = sc.JavaVersion
20190	}
20191	if sc.JavaContainer != nil {
20192		objectMap["javaContainer"] = sc.JavaContainer
20193	}
20194	if sc.JavaContainerVersion != nil {
20195		objectMap["javaContainerVersion"] = sc.JavaContainerVersion
20196	}
20197	if sc.AppCommandLine != nil {
20198		objectMap["appCommandLine"] = sc.AppCommandLine
20199	}
20200	if sc.ManagedPipelineMode != "" {
20201		objectMap["managedPipelineMode"] = sc.ManagedPipelineMode
20202	}
20203	if sc.VirtualApplications != nil {
20204		objectMap["virtualApplications"] = sc.VirtualApplications
20205	}
20206	if sc.LoadBalancing != "" {
20207		objectMap["loadBalancing"] = sc.LoadBalancing
20208	}
20209	if sc.Experiments != nil {
20210		objectMap["experiments"] = sc.Experiments
20211	}
20212	if sc.Limits != nil {
20213		objectMap["limits"] = sc.Limits
20214	}
20215	if sc.AutoHealEnabled != nil {
20216		objectMap["autoHealEnabled"] = sc.AutoHealEnabled
20217	}
20218	if sc.AutoHealRules != nil {
20219		objectMap["autoHealRules"] = sc.AutoHealRules
20220	}
20221	if sc.TracingOptions != nil {
20222		objectMap["tracingOptions"] = sc.TracingOptions
20223	}
20224	if sc.VnetName != nil {
20225		objectMap["vnetName"] = sc.VnetName
20226	}
20227	if sc.VnetRouteAllEnabled != nil {
20228		objectMap["vnetRouteAllEnabled"] = sc.VnetRouteAllEnabled
20229	}
20230	if sc.VnetPrivatePortsCount != nil {
20231		objectMap["vnetPrivatePortsCount"] = sc.VnetPrivatePortsCount
20232	}
20233	if sc.Cors != nil {
20234		objectMap["cors"] = sc.Cors
20235	}
20236	if sc.Push != nil {
20237		objectMap["push"] = sc.Push
20238	}
20239	if sc.APIDefinition != nil {
20240		objectMap["apiDefinition"] = sc.APIDefinition
20241	}
20242	if sc.APIManagementConfig != nil {
20243		objectMap["apiManagementConfig"] = sc.APIManagementConfig
20244	}
20245	if sc.AutoSwapSlotName != nil {
20246		objectMap["autoSwapSlotName"] = sc.AutoSwapSlotName
20247	}
20248	if sc.LocalMySQLEnabled != nil {
20249		objectMap["localMySqlEnabled"] = sc.LocalMySQLEnabled
20250	}
20251	if sc.ManagedServiceIdentityID != nil {
20252		objectMap["managedServiceIdentityId"] = sc.ManagedServiceIdentityID
20253	}
20254	if sc.XManagedServiceIdentityID != nil {
20255		objectMap["xManagedServiceIdentityId"] = sc.XManagedServiceIdentityID
20256	}
20257	if sc.IPSecurityRestrictions != nil {
20258		objectMap["ipSecurityRestrictions"] = sc.IPSecurityRestrictions
20259	}
20260	if sc.ScmIPSecurityRestrictions != nil {
20261		objectMap["scmIpSecurityRestrictions"] = sc.ScmIPSecurityRestrictions
20262	}
20263	if sc.ScmIPSecurityRestrictionsUseMain != nil {
20264		objectMap["scmIpSecurityRestrictionsUseMain"] = sc.ScmIPSecurityRestrictionsUseMain
20265	}
20266	if sc.HTTP20Enabled != nil {
20267		objectMap["http20Enabled"] = sc.HTTP20Enabled
20268	}
20269	if sc.MinTLSVersion != "" {
20270		objectMap["minTlsVersion"] = sc.MinTLSVersion
20271	}
20272	if sc.ScmMinTLSVersion != "" {
20273		objectMap["scmMinTlsVersion"] = sc.ScmMinTLSVersion
20274	}
20275	if sc.FtpsState != "" {
20276		objectMap["ftpsState"] = sc.FtpsState
20277	}
20278	if sc.PreWarmedInstanceCount != nil {
20279		objectMap["preWarmedInstanceCount"] = sc.PreWarmedInstanceCount
20280	}
20281	if sc.HealthCheckPath != nil {
20282		objectMap["healthCheckPath"] = sc.HealthCheckPath
20283	}
20284	return json.Marshal(objectMap)
20285}
20286
20287// SiteConfigResource web app configuration ARM resource.
20288type SiteConfigResource struct {
20289	autorest.Response `json:"-"`
20290	// SiteConfig - Core resource properties
20291	*SiteConfig `json:"properties,omitempty"`
20292	// ID - READ-ONLY; Resource Id.
20293	ID *string `json:"id,omitempty"`
20294	// Name - READ-ONLY; Resource Name.
20295	Name *string `json:"name,omitempty"`
20296	// Kind - Kind of resource.
20297	Kind *string `json:"kind,omitempty"`
20298	// Type - READ-ONLY; Resource type.
20299	Type *string `json:"type,omitempty"`
20300}
20301
20302// MarshalJSON is the custom marshaler for SiteConfigResource.
20303func (scr SiteConfigResource) MarshalJSON() ([]byte, error) {
20304	objectMap := make(map[string]interface{})
20305	if scr.SiteConfig != nil {
20306		objectMap["properties"] = scr.SiteConfig
20307	}
20308	if scr.Kind != nil {
20309		objectMap["kind"] = scr.Kind
20310	}
20311	return json.Marshal(objectMap)
20312}
20313
20314// UnmarshalJSON is the custom unmarshaler for SiteConfigResource struct.
20315func (scr *SiteConfigResource) UnmarshalJSON(body []byte) error {
20316	var m map[string]*json.RawMessage
20317	err := json.Unmarshal(body, &m)
20318	if err != nil {
20319		return err
20320	}
20321	for k, v := range m {
20322		switch k {
20323		case "properties":
20324			if v != nil {
20325				var siteConfig SiteConfig
20326				err = json.Unmarshal(*v, &siteConfig)
20327				if err != nil {
20328					return err
20329				}
20330				scr.SiteConfig = &siteConfig
20331			}
20332		case "id":
20333			if v != nil {
20334				var ID string
20335				err = json.Unmarshal(*v, &ID)
20336				if err != nil {
20337					return err
20338				}
20339				scr.ID = &ID
20340			}
20341		case "name":
20342			if v != nil {
20343				var name string
20344				err = json.Unmarshal(*v, &name)
20345				if err != nil {
20346					return err
20347				}
20348				scr.Name = &name
20349			}
20350		case "kind":
20351			if v != nil {
20352				var kind string
20353				err = json.Unmarshal(*v, &kind)
20354				if err != nil {
20355					return err
20356				}
20357				scr.Kind = &kind
20358			}
20359		case "type":
20360			if v != nil {
20361				var typeVar string
20362				err = json.Unmarshal(*v, &typeVar)
20363				if err != nil {
20364					return err
20365				}
20366				scr.Type = &typeVar
20367			}
20368		}
20369	}
20370
20371	return nil
20372}
20373
20374// SiteConfigResourceCollection collection of site configurations.
20375type SiteConfigResourceCollection struct {
20376	autorest.Response `json:"-"`
20377	// Value - Collection of resources.
20378	Value *[]SiteConfigResource `json:"value,omitempty"`
20379	// NextLink - READ-ONLY; Link to next page of resources.
20380	NextLink *string `json:"nextLink,omitempty"`
20381}
20382
20383// MarshalJSON is the custom marshaler for SiteConfigResourceCollection.
20384func (scrc SiteConfigResourceCollection) MarshalJSON() ([]byte, error) {
20385	objectMap := make(map[string]interface{})
20386	if scrc.Value != nil {
20387		objectMap["value"] = scrc.Value
20388	}
20389	return json.Marshal(objectMap)
20390}
20391
20392// SiteConfigResourceCollectionIterator provides access to a complete listing of SiteConfigResource values.
20393type SiteConfigResourceCollectionIterator struct {
20394	i    int
20395	page SiteConfigResourceCollectionPage
20396}
20397
20398// NextWithContext advances to the next value.  If there was an error making
20399// the request the iterator does not advance and the error is returned.
20400func (iter *SiteConfigResourceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20401	if tracing.IsEnabled() {
20402		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionIterator.NextWithContext")
20403		defer func() {
20404			sc := -1
20405			if iter.Response().Response.Response != nil {
20406				sc = iter.Response().Response.Response.StatusCode
20407			}
20408			tracing.EndSpan(ctx, sc, err)
20409		}()
20410	}
20411	iter.i++
20412	if iter.i < len(iter.page.Values()) {
20413		return nil
20414	}
20415	err = iter.page.NextWithContext(ctx)
20416	if err != nil {
20417		iter.i--
20418		return err
20419	}
20420	iter.i = 0
20421	return nil
20422}
20423
20424// Next advances to the next value.  If there was an error making
20425// the request the iterator does not advance and the error is returned.
20426// Deprecated: Use NextWithContext() instead.
20427func (iter *SiteConfigResourceCollectionIterator) Next() error {
20428	return iter.NextWithContext(context.Background())
20429}
20430
20431// NotDone returns true if the enumeration should be started or is not yet complete.
20432func (iter SiteConfigResourceCollectionIterator) NotDone() bool {
20433	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20434}
20435
20436// Response returns the raw server response from the last page request.
20437func (iter SiteConfigResourceCollectionIterator) Response() SiteConfigResourceCollection {
20438	return iter.page.Response()
20439}
20440
20441// Value returns the current value or a zero-initialized value if the
20442// iterator has advanced beyond the end of the collection.
20443func (iter SiteConfigResourceCollectionIterator) Value() SiteConfigResource {
20444	if !iter.page.NotDone() {
20445		return SiteConfigResource{}
20446	}
20447	return iter.page.Values()[iter.i]
20448}
20449
20450// Creates a new instance of the SiteConfigResourceCollectionIterator type.
20451func NewSiteConfigResourceCollectionIterator(page SiteConfigResourceCollectionPage) SiteConfigResourceCollectionIterator {
20452	return SiteConfigResourceCollectionIterator{page: page}
20453}
20454
20455// IsEmpty returns true if the ListResult contains no values.
20456func (scrc SiteConfigResourceCollection) IsEmpty() bool {
20457	return scrc.Value == nil || len(*scrc.Value) == 0
20458}
20459
20460// hasNextLink returns true if the NextLink is not empty.
20461func (scrc SiteConfigResourceCollection) hasNextLink() bool {
20462	return scrc.NextLink != nil && len(*scrc.NextLink) != 0
20463}
20464
20465// siteConfigResourceCollectionPreparer prepares a request to retrieve the next set of results.
20466// It returns nil if no more results exist.
20467func (scrc SiteConfigResourceCollection) siteConfigResourceCollectionPreparer(ctx context.Context) (*http.Request, error) {
20468	if !scrc.hasNextLink() {
20469		return nil, nil
20470	}
20471	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20472		autorest.AsJSON(),
20473		autorest.AsGet(),
20474		autorest.WithBaseURL(to.String(scrc.NextLink)))
20475}
20476
20477// SiteConfigResourceCollectionPage contains a page of SiteConfigResource values.
20478type SiteConfigResourceCollectionPage struct {
20479	fn   func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)
20480	scrc SiteConfigResourceCollection
20481}
20482
20483// NextWithContext advances to the next page of values.  If there was an error making
20484// the request the page does not advance and the error is returned.
20485func (page *SiteConfigResourceCollectionPage) NextWithContext(ctx context.Context) (err error) {
20486	if tracing.IsEnabled() {
20487		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigResourceCollectionPage.NextWithContext")
20488		defer func() {
20489			sc := -1
20490			if page.Response().Response.Response != nil {
20491				sc = page.Response().Response.Response.StatusCode
20492			}
20493			tracing.EndSpan(ctx, sc, err)
20494		}()
20495	}
20496	for {
20497		next, err := page.fn(ctx, page.scrc)
20498		if err != nil {
20499			return err
20500		}
20501		page.scrc = next
20502		if !next.hasNextLink() || !next.IsEmpty() {
20503			break
20504		}
20505	}
20506	return nil
20507}
20508
20509// Next advances to the next page of values.  If there was an error making
20510// the request the page does not advance and the error is returned.
20511// Deprecated: Use NextWithContext() instead.
20512func (page *SiteConfigResourceCollectionPage) Next() error {
20513	return page.NextWithContext(context.Background())
20514}
20515
20516// NotDone returns true if the page enumeration should be started or is not yet complete.
20517func (page SiteConfigResourceCollectionPage) NotDone() bool {
20518	return !page.scrc.IsEmpty()
20519}
20520
20521// Response returns the raw server response from the last page request.
20522func (page SiteConfigResourceCollectionPage) Response() SiteConfigResourceCollection {
20523	return page.scrc
20524}
20525
20526// Values returns the slice of values for the current page or nil if there are no values.
20527func (page SiteConfigResourceCollectionPage) Values() []SiteConfigResource {
20528	if page.scrc.IsEmpty() {
20529		return nil
20530	}
20531	return *page.scrc.Value
20532}
20533
20534// Creates a new instance of the SiteConfigResourceCollectionPage type.
20535func NewSiteConfigResourceCollectionPage(cur SiteConfigResourceCollection, getNextPage func(context.Context, SiteConfigResourceCollection) (SiteConfigResourceCollection, error)) SiteConfigResourceCollectionPage {
20536	return SiteConfigResourceCollectionPage{
20537		fn:   getNextPage,
20538		scrc: cur,
20539	}
20540}
20541
20542// SiteConfigurationSnapshotInfo a snapshot of a web app configuration.
20543type SiteConfigurationSnapshotInfo struct {
20544	// SiteConfigurationSnapshotInfoProperties - SiteConfigurationSnapshotInfo resource specific properties
20545	*SiteConfigurationSnapshotInfoProperties `json:"properties,omitempty"`
20546	// ID - READ-ONLY; Resource Id.
20547	ID *string `json:"id,omitempty"`
20548	// Name - READ-ONLY; Resource Name.
20549	Name *string `json:"name,omitempty"`
20550	// Kind - Kind of resource.
20551	Kind *string `json:"kind,omitempty"`
20552	// Type - READ-ONLY; Resource type.
20553	Type *string `json:"type,omitempty"`
20554}
20555
20556// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfo.
20557func (scsi SiteConfigurationSnapshotInfo) MarshalJSON() ([]byte, error) {
20558	objectMap := make(map[string]interface{})
20559	if scsi.SiteConfigurationSnapshotInfoProperties != nil {
20560		objectMap["properties"] = scsi.SiteConfigurationSnapshotInfoProperties
20561	}
20562	if scsi.Kind != nil {
20563		objectMap["kind"] = scsi.Kind
20564	}
20565	return json.Marshal(objectMap)
20566}
20567
20568// UnmarshalJSON is the custom unmarshaler for SiteConfigurationSnapshotInfo struct.
20569func (scsi *SiteConfigurationSnapshotInfo) UnmarshalJSON(body []byte) error {
20570	var m map[string]*json.RawMessage
20571	err := json.Unmarshal(body, &m)
20572	if err != nil {
20573		return err
20574	}
20575	for k, v := range m {
20576		switch k {
20577		case "properties":
20578			if v != nil {
20579				var siteConfigurationSnapshotInfoProperties SiteConfigurationSnapshotInfoProperties
20580				err = json.Unmarshal(*v, &siteConfigurationSnapshotInfoProperties)
20581				if err != nil {
20582					return err
20583				}
20584				scsi.SiteConfigurationSnapshotInfoProperties = &siteConfigurationSnapshotInfoProperties
20585			}
20586		case "id":
20587			if v != nil {
20588				var ID string
20589				err = json.Unmarshal(*v, &ID)
20590				if err != nil {
20591					return err
20592				}
20593				scsi.ID = &ID
20594			}
20595		case "name":
20596			if v != nil {
20597				var name string
20598				err = json.Unmarshal(*v, &name)
20599				if err != nil {
20600					return err
20601				}
20602				scsi.Name = &name
20603			}
20604		case "kind":
20605			if v != nil {
20606				var kind string
20607				err = json.Unmarshal(*v, &kind)
20608				if err != nil {
20609					return err
20610				}
20611				scsi.Kind = &kind
20612			}
20613		case "type":
20614			if v != nil {
20615				var typeVar string
20616				err = json.Unmarshal(*v, &typeVar)
20617				if err != nil {
20618					return err
20619				}
20620				scsi.Type = &typeVar
20621			}
20622		}
20623	}
20624
20625	return nil
20626}
20627
20628// SiteConfigurationSnapshotInfoCollection collection of metadata for the app configuration snapshots that
20629// can be restored.
20630type SiteConfigurationSnapshotInfoCollection struct {
20631	autorest.Response `json:"-"`
20632	// Value - Collection of resources.
20633	Value *[]SiteConfigurationSnapshotInfo `json:"value,omitempty"`
20634	// NextLink - READ-ONLY; Link to next page of resources.
20635	NextLink *string `json:"nextLink,omitempty"`
20636}
20637
20638// MarshalJSON is the custom marshaler for SiteConfigurationSnapshotInfoCollection.
20639func (scsic SiteConfigurationSnapshotInfoCollection) MarshalJSON() ([]byte, error) {
20640	objectMap := make(map[string]interface{})
20641	if scsic.Value != nil {
20642		objectMap["value"] = scsic.Value
20643	}
20644	return json.Marshal(objectMap)
20645}
20646
20647// SiteConfigurationSnapshotInfoCollectionIterator provides access to a complete listing of
20648// SiteConfigurationSnapshotInfo values.
20649type SiteConfigurationSnapshotInfoCollectionIterator struct {
20650	i    int
20651	page SiteConfigurationSnapshotInfoCollectionPage
20652}
20653
20654// NextWithContext advances to the next value.  If there was an error making
20655// the request the iterator does not advance and the error is returned.
20656func (iter *SiteConfigurationSnapshotInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20657	if tracing.IsEnabled() {
20658		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionIterator.NextWithContext")
20659		defer func() {
20660			sc := -1
20661			if iter.Response().Response.Response != nil {
20662				sc = iter.Response().Response.Response.StatusCode
20663			}
20664			tracing.EndSpan(ctx, sc, err)
20665		}()
20666	}
20667	iter.i++
20668	if iter.i < len(iter.page.Values()) {
20669		return nil
20670	}
20671	err = iter.page.NextWithContext(ctx)
20672	if err != nil {
20673		iter.i--
20674		return err
20675	}
20676	iter.i = 0
20677	return nil
20678}
20679
20680// Next advances to the next value.  If there was an error making
20681// the request the iterator does not advance and the error is returned.
20682// Deprecated: Use NextWithContext() instead.
20683func (iter *SiteConfigurationSnapshotInfoCollectionIterator) Next() error {
20684	return iter.NextWithContext(context.Background())
20685}
20686
20687// NotDone returns true if the enumeration should be started or is not yet complete.
20688func (iter SiteConfigurationSnapshotInfoCollectionIterator) NotDone() bool {
20689	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20690}
20691
20692// Response returns the raw server response from the last page request.
20693func (iter SiteConfigurationSnapshotInfoCollectionIterator) Response() SiteConfigurationSnapshotInfoCollection {
20694	return iter.page.Response()
20695}
20696
20697// Value returns the current value or a zero-initialized value if the
20698// iterator has advanced beyond the end of the collection.
20699func (iter SiteConfigurationSnapshotInfoCollectionIterator) Value() SiteConfigurationSnapshotInfo {
20700	if !iter.page.NotDone() {
20701		return SiteConfigurationSnapshotInfo{}
20702	}
20703	return iter.page.Values()[iter.i]
20704}
20705
20706// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionIterator type.
20707func NewSiteConfigurationSnapshotInfoCollectionIterator(page SiteConfigurationSnapshotInfoCollectionPage) SiteConfigurationSnapshotInfoCollectionIterator {
20708	return SiteConfigurationSnapshotInfoCollectionIterator{page: page}
20709}
20710
20711// IsEmpty returns true if the ListResult contains no values.
20712func (scsic SiteConfigurationSnapshotInfoCollection) IsEmpty() bool {
20713	return scsic.Value == nil || len(*scsic.Value) == 0
20714}
20715
20716// hasNextLink returns true if the NextLink is not empty.
20717func (scsic SiteConfigurationSnapshotInfoCollection) hasNextLink() bool {
20718	return scsic.NextLink != nil && len(*scsic.NextLink) != 0
20719}
20720
20721// siteConfigurationSnapshotInfoCollectionPreparer prepares a request to retrieve the next set of results.
20722// It returns nil if no more results exist.
20723func (scsic SiteConfigurationSnapshotInfoCollection) siteConfigurationSnapshotInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
20724	if !scsic.hasNextLink() {
20725		return nil, nil
20726	}
20727	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20728		autorest.AsJSON(),
20729		autorest.AsGet(),
20730		autorest.WithBaseURL(to.String(scsic.NextLink)))
20731}
20732
20733// SiteConfigurationSnapshotInfoCollectionPage contains a page of SiteConfigurationSnapshotInfo values.
20734type SiteConfigurationSnapshotInfoCollectionPage struct {
20735	fn    func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)
20736	scsic SiteConfigurationSnapshotInfoCollection
20737}
20738
20739// NextWithContext advances to the next page of values.  If there was an error making
20740// the request the page does not advance and the error is returned.
20741func (page *SiteConfigurationSnapshotInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
20742	if tracing.IsEnabled() {
20743		ctx = tracing.StartSpan(ctx, fqdn+"/SiteConfigurationSnapshotInfoCollectionPage.NextWithContext")
20744		defer func() {
20745			sc := -1
20746			if page.Response().Response.Response != nil {
20747				sc = page.Response().Response.Response.StatusCode
20748			}
20749			tracing.EndSpan(ctx, sc, err)
20750		}()
20751	}
20752	for {
20753		next, err := page.fn(ctx, page.scsic)
20754		if err != nil {
20755			return err
20756		}
20757		page.scsic = next
20758		if !next.hasNextLink() || !next.IsEmpty() {
20759			break
20760		}
20761	}
20762	return nil
20763}
20764
20765// Next advances to the next page of values.  If there was an error making
20766// the request the page does not advance and the error is returned.
20767// Deprecated: Use NextWithContext() instead.
20768func (page *SiteConfigurationSnapshotInfoCollectionPage) Next() error {
20769	return page.NextWithContext(context.Background())
20770}
20771
20772// NotDone returns true if the page enumeration should be started or is not yet complete.
20773func (page SiteConfigurationSnapshotInfoCollectionPage) NotDone() bool {
20774	return !page.scsic.IsEmpty()
20775}
20776
20777// Response returns the raw server response from the last page request.
20778func (page SiteConfigurationSnapshotInfoCollectionPage) Response() SiteConfigurationSnapshotInfoCollection {
20779	return page.scsic
20780}
20781
20782// Values returns the slice of values for the current page or nil if there are no values.
20783func (page SiteConfigurationSnapshotInfoCollectionPage) Values() []SiteConfigurationSnapshotInfo {
20784	if page.scsic.IsEmpty() {
20785		return nil
20786	}
20787	return *page.scsic.Value
20788}
20789
20790// Creates a new instance of the SiteConfigurationSnapshotInfoCollectionPage type.
20791func NewSiteConfigurationSnapshotInfoCollectionPage(cur SiteConfigurationSnapshotInfoCollection, getNextPage func(context.Context, SiteConfigurationSnapshotInfoCollection) (SiteConfigurationSnapshotInfoCollection, error)) SiteConfigurationSnapshotInfoCollectionPage {
20792	return SiteConfigurationSnapshotInfoCollectionPage{
20793		fn:    getNextPage,
20794		scsic: cur,
20795	}
20796}
20797
20798// SiteConfigurationSnapshotInfoProperties siteConfigurationSnapshotInfo resource specific properties
20799type SiteConfigurationSnapshotInfoProperties struct {
20800	// Time - READ-ONLY; The time the snapshot was taken.
20801	Time *date.Time `json:"time,omitempty"`
20802	// SnapshotID - READ-ONLY; The id of the snapshot
20803	SnapshotID *int32 `json:"snapshotId,omitempty"`
20804}
20805
20806// SiteExtensionInfo site Extension Information.
20807type SiteExtensionInfo struct {
20808	autorest.Response `json:"-"`
20809	// SiteExtensionInfoProperties - SiteExtensionInfo resource specific properties
20810	*SiteExtensionInfoProperties `json:"properties,omitempty"`
20811	// ID - READ-ONLY; Resource Id.
20812	ID *string `json:"id,omitempty"`
20813	// Name - READ-ONLY; Resource Name.
20814	Name *string `json:"name,omitempty"`
20815	// Kind - Kind of resource.
20816	Kind *string `json:"kind,omitempty"`
20817	// Type - READ-ONLY; Resource type.
20818	Type *string `json:"type,omitempty"`
20819}
20820
20821// MarshalJSON is the custom marshaler for SiteExtensionInfo.
20822func (sei SiteExtensionInfo) MarshalJSON() ([]byte, error) {
20823	objectMap := make(map[string]interface{})
20824	if sei.SiteExtensionInfoProperties != nil {
20825		objectMap["properties"] = sei.SiteExtensionInfoProperties
20826	}
20827	if sei.Kind != nil {
20828		objectMap["kind"] = sei.Kind
20829	}
20830	return json.Marshal(objectMap)
20831}
20832
20833// UnmarshalJSON is the custom unmarshaler for SiteExtensionInfo struct.
20834func (sei *SiteExtensionInfo) UnmarshalJSON(body []byte) error {
20835	var m map[string]*json.RawMessage
20836	err := json.Unmarshal(body, &m)
20837	if err != nil {
20838		return err
20839	}
20840	for k, v := range m {
20841		switch k {
20842		case "properties":
20843			if v != nil {
20844				var siteExtensionInfoProperties SiteExtensionInfoProperties
20845				err = json.Unmarshal(*v, &siteExtensionInfoProperties)
20846				if err != nil {
20847					return err
20848				}
20849				sei.SiteExtensionInfoProperties = &siteExtensionInfoProperties
20850			}
20851		case "id":
20852			if v != nil {
20853				var ID string
20854				err = json.Unmarshal(*v, &ID)
20855				if err != nil {
20856					return err
20857				}
20858				sei.ID = &ID
20859			}
20860		case "name":
20861			if v != nil {
20862				var name string
20863				err = json.Unmarshal(*v, &name)
20864				if err != nil {
20865					return err
20866				}
20867				sei.Name = &name
20868			}
20869		case "kind":
20870			if v != nil {
20871				var kind string
20872				err = json.Unmarshal(*v, &kind)
20873				if err != nil {
20874					return err
20875				}
20876				sei.Kind = &kind
20877			}
20878		case "type":
20879			if v != nil {
20880				var typeVar string
20881				err = json.Unmarshal(*v, &typeVar)
20882				if err != nil {
20883					return err
20884				}
20885				sei.Type = &typeVar
20886			}
20887		}
20888	}
20889
20890	return nil
20891}
20892
20893// SiteExtensionInfoCollection collection of Kudu site extension information elements.
20894type SiteExtensionInfoCollection struct {
20895	autorest.Response `json:"-"`
20896	// Value - Collection of resources.
20897	Value *[]SiteExtensionInfo `json:"value,omitempty"`
20898	// NextLink - READ-ONLY; Link to next page of resources.
20899	NextLink *string `json:"nextLink,omitempty"`
20900}
20901
20902// MarshalJSON is the custom marshaler for SiteExtensionInfoCollection.
20903func (seic SiteExtensionInfoCollection) MarshalJSON() ([]byte, error) {
20904	objectMap := make(map[string]interface{})
20905	if seic.Value != nil {
20906		objectMap["value"] = seic.Value
20907	}
20908	return json.Marshal(objectMap)
20909}
20910
20911// SiteExtensionInfoCollectionIterator provides access to a complete listing of SiteExtensionInfo values.
20912type SiteExtensionInfoCollectionIterator struct {
20913	i    int
20914	page SiteExtensionInfoCollectionPage
20915}
20916
20917// NextWithContext advances to the next value.  If there was an error making
20918// the request the iterator does not advance and the error is returned.
20919func (iter *SiteExtensionInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
20920	if tracing.IsEnabled() {
20921		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionIterator.NextWithContext")
20922		defer func() {
20923			sc := -1
20924			if iter.Response().Response.Response != nil {
20925				sc = iter.Response().Response.Response.StatusCode
20926			}
20927			tracing.EndSpan(ctx, sc, err)
20928		}()
20929	}
20930	iter.i++
20931	if iter.i < len(iter.page.Values()) {
20932		return nil
20933	}
20934	err = iter.page.NextWithContext(ctx)
20935	if err != nil {
20936		iter.i--
20937		return err
20938	}
20939	iter.i = 0
20940	return nil
20941}
20942
20943// Next advances to the next value.  If there was an error making
20944// the request the iterator does not advance and the error is returned.
20945// Deprecated: Use NextWithContext() instead.
20946func (iter *SiteExtensionInfoCollectionIterator) Next() error {
20947	return iter.NextWithContext(context.Background())
20948}
20949
20950// NotDone returns true if the enumeration should be started or is not yet complete.
20951func (iter SiteExtensionInfoCollectionIterator) NotDone() bool {
20952	return iter.page.NotDone() && iter.i < len(iter.page.Values())
20953}
20954
20955// Response returns the raw server response from the last page request.
20956func (iter SiteExtensionInfoCollectionIterator) Response() SiteExtensionInfoCollection {
20957	return iter.page.Response()
20958}
20959
20960// Value returns the current value or a zero-initialized value if the
20961// iterator has advanced beyond the end of the collection.
20962func (iter SiteExtensionInfoCollectionIterator) Value() SiteExtensionInfo {
20963	if !iter.page.NotDone() {
20964		return SiteExtensionInfo{}
20965	}
20966	return iter.page.Values()[iter.i]
20967}
20968
20969// Creates a new instance of the SiteExtensionInfoCollectionIterator type.
20970func NewSiteExtensionInfoCollectionIterator(page SiteExtensionInfoCollectionPage) SiteExtensionInfoCollectionIterator {
20971	return SiteExtensionInfoCollectionIterator{page: page}
20972}
20973
20974// IsEmpty returns true if the ListResult contains no values.
20975func (seic SiteExtensionInfoCollection) IsEmpty() bool {
20976	return seic.Value == nil || len(*seic.Value) == 0
20977}
20978
20979// hasNextLink returns true if the NextLink is not empty.
20980func (seic SiteExtensionInfoCollection) hasNextLink() bool {
20981	return seic.NextLink != nil && len(*seic.NextLink) != 0
20982}
20983
20984// siteExtensionInfoCollectionPreparer prepares a request to retrieve the next set of results.
20985// It returns nil if no more results exist.
20986func (seic SiteExtensionInfoCollection) siteExtensionInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
20987	if !seic.hasNextLink() {
20988		return nil, nil
20989	}
20990	return autorest.Prepare((&http.Request{}).WithContext(ctx),
20991		autorest.AsJSON(),
20992		autorest.AsGet(),
20993		autorest.WithBaseURL(to.String(seic.NextLink)))
20994}
20995
20996// SiteExtensionInfoCollectionPage contains a page of SiteExtensionInfo values.
20997type SiteExtensionInfoCollectionPage struct {
20998	fn   func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)
20999	seic SiteExtensionInfoCollection
21000}
21001
21002// NextWithContext advances to the next page of values.  If there was an error making
21003// the request the page does not advance and the error is returned.
21004func (page *SiteExtensionInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
21005	if tracing.IsEnabled() {
21006		ctx = tracing.StartSpan(ctx, fqdn+"/SiteExtensionInfoCollectionPage.NextWithContext")
21007		defer func() {
21008			sc := -1
21009			if page.Response().Response.Response != nil {
21010				sc = page.Response().Response.Response.StatusCode
21011			}
21012			tracing.EndSpan(ctx, sc, err)
21013		}()
21014	}
21015	for {
21016		next, err := page.fn(ctx, page.seic)
21017		if err != nil {
21018			return err
21019		}
21020		page.seic = next
21021		if !next.hasNextLink() || !next.IsEmpty() {
21022			break
21023		}
21024	}
21025	return nil
21026}
21027
21028// Next advances to the next page of values.  If there was an error making
21029// the request the page does not advance and the error is returned.
21030// Deprecated: Use NextWithContext() instead.
21031func (page *SiteExtensionInfoCollectionPage) Next() error {
21032	return page.NextWithContext(context.Background())
21033}
21034
21035// NotDone returns true if the page enumeration should be started or is not yet complete.
21036func (page SiteExtensionInfoCollectionPage) NotDone() bool {
21037	return !page.seic.IsEmpty()
21038}
21039
21040// Response returns the raw server response from the last page request.
21041func (page SiteExtensionInfoCollectionPage) Response() SiteExtensionInfoCollection {
21042	return page.seic
21043}
21044
21045// Values returns the slice of values for the current page or nil if there are no values.
21046func (page SiteExtensionInfoCollectionPage) Values() []SiteExtensionInfo {
21047	if page.seic.IsEmpty() {
21048		return nil
21049	}
21050	return *page.seic.Value
21051}
21052
21053// Creates a new instance of the SiteExtensionInfoCollectionPage type.
21054func NewSiteExtensionInfoCollectionPage(cur SiteExtensionInfoCollection, getNextPage func(context.Context, SiteExtensionInfoCollection) (SiteExtensionInfoCollection, error)) SiteExtensionInfoCollectionPage {
21055	return SiteExtensionInfoCollectionPage{
21056		fn:   getNextPage,
21057		seic: cur,
21058	}
21059}
21060
21061// SiteExtensionInfoProperties siteExtensionInfo resource specific properties
21062type SiteExtensionInfoProperties struct {
21063	// ExtensionID - Site extension ID.
21064	ExtensionID *string `json:"extension_id,omitempty"`
21065	Title       *string `json:"title,omitempty"`
21066	// ExtensionType - Site extension type. Possible values include: 'Gallery', 'WebRoot'
21067	ExtensionType SiteExtensionType `json:"extension_type,omitempty"`
21068	// Summary - Summary description.
21069	Summary *string `json:"summary,omitempty"`
21070	// Description - Detailed description.
21071	Description *string `json:"description,omitempty"`
21072	// Version - Version information.
21073	Version *string `json:"version,omitempty"`
21074	// ExtensionURL - Extension URL.
21075	ExtensionURL *string `json:"extension_url,omitempty"`
21076	// ProjectURL - Project URL.
21077	ProjectURL *string `json:"project_url,omitempty"`
21078	// IconURL - Icon URL.
21079	IconURL *string `json:"icon_url,omitempty"`
21080	// LicenseURL - License URL.
21081	LicenseURL *string `json:"license_url,omitempty"`
21082	// FeedURL - Feed URL.
21083	FeedURL *string `json:"feed_url,omitempty"`
21084	// Authors - List of authors.
21085	Authors *[]string `json:"authors,omitempty"`
21086	// InstallerCommandLineParams - Installer command line parameters.
21087	InstallerCommandLineParams *string `json:"installer_command_line_params,omitempty"`
21088	// PublishedDateTime - Published timestamp.
21089	PublishedDateTime *date.Time `json:"published_date_time,omitempty"`
21090	// DownloadCount - Count of downloads.
21091	DownloadCount *int32 `json:"download_count,omitempty"`
21092	// LocalIsLatestVersion - <code>true</code> if the local version is the latest version; <code>false</code> otherwise.
21093	LocalIsLatestVersion *bool `json:"local_is_latest_version,omitempty"`
21094	// LocalPath - Local path.
21095	LocalPath *string `json:"local_path,omitempty"`
21096	// InstalledDateTime - Installed timestamp.
21097	InstalledDateTime *date.Time `json:"installed_date_time,omitempty"`
21098	// ProvisioningState - Provisioning state.
21099	ProvisioningState *string `json:"provisioningState,omitempty"`
21100	// Comment - Site Extension comment.
21101	Comment *string `json:"comment,omitempty"`
21102}
21103
21104// SiteInstanceStatus ...
21105type SiteInstanceStatus struct {
21106	autorest.Response `json:"-"`
21107	// SiteInstanceStatusProperties - WebSiteInstanceStatus resource specific properties
21108	*SiteInstanceStatusProperties `json:"properties,omitempty"`
21109	// ID - READ-ONLY; Resource Id.
21110	ID *string `json:"id,omitempty"`
21111	// Name - READ-ONLY; Resource Name.
21112	Name *string `json:"name,omitempty"`
21113	// Kind - Kind of resource.
21114	Kind *string `json:"kind,omitempty"`
21115	// Type - READ-ONLY; Resource type.
21116	Type *string `json:"type,omitempty"`
21117}
21118
21119// MarshalJSON is the custom marshaler for SiteInstanceStatus.
21120func (sis SiteInstanceStatus) MarshalJSON() ([]byte, error) {
21121	objectMap := make(map[string]interface{})
21122	if sis.SiteInstanceStatusProperties != nil {
21123		objectMap["properties"] = sis.SiteInstanceStatusProperties
21124	}
21125	if sis.Kind != nil {
21126		objectMap["kind"] = sis.Kind
21127	}
21128	return json.Marshal(objectMap)
21129}
21130
21131// UnmarshalJSON is the custom unmarshaler for SiteInstanceStatus struct.
21132func (sis *SiteInstanceStatus) UnmarshalJSON(body []byte) error {
21133	var m map[string]*json.RawMessage
21134	err := json.Unmarshal(body, &m)
21135	if err != nil {
21136		return err
21137	}
21138	for k, v := range m {
21139		switch k {
21140		case "properties":
21141			if v != nil {
21142				var siteInstanceStatusProperties SiteInstanceStatusProperties
21143				err = json.Unmarshal(*v, &siteInstanceStatusProperties)
21144				if err != nil {
21145					return err
21146				}
21147				sis.SiteInstanceStatusProperties = &siteInstanceStatusProperties
21148			}
21149		case "id":
21150			if v != nil {
21151				var ID string
21152				err = json.Unmarshal(*v, &ID)
21153				if err != nil {
21154					return err
21155				}
21156				sis.ID = &ID
21157			}
21158		case "name":
21159			if v != nil {
21160				var name string
21161				err = json.Unmarshal(*v, &name)
21162				if err != nil {
21163					return err
21164				}
21165				sis.Name = &name
21166			}
21167		case "kind":
21168			if v != nil {
21169				var kind string
21170				err = json.Unmarshal(*v, &kind)
21171				if err != nil {
21172					return err
21173				}
21174				sis.Kind = &kind
21175			}
21176		case "type":
21177			if v != nil {
21178				var typeVar string
21179				err = json.Unmarshal(*v, &typeVar)
21180				if err != nil {
21181					return err
21182				}
21183				sis.Type = &typeVar
21184			}
21185		}
21186	}
21187
21188	return nil
21189}
21190
21191// SiteInstanceStatusProperties webSiteInstanceStatus resource specific properties
21192type SiteInstanceStatusProperties struct {
21193	// State - Possible values include: 'READY', 'STOPPED', 'UNKNOWN'
21194	State SiteRuntimeState `json:"state,omitempty"`
21195	// StatusURL - Link to the GetStatusApi in Kudu
21196	StatusURL *string `json:"statusUrl,omitempty"`
21197	// DetectorURL - Link to the Diagnose and Solve Portal
21198	DetectorURL *string `json:"detectorUrl,omitempty"`
21199	// ConsoleURL - Link to the console to web app instance
21200	ConsoleURL *string `json:"consoleUrl,omitempty"`
21201	// HealthCheckURL - Link to the console to web app instance
21202	HealthCheckURL *string                   `json:"healthCheckUrl,omitempty"`
21203	Containers     map[string]*ContainerInfo `json:"containers"`
21204}
21205
21206// MarshalJSON is the custom marshaler for SiteInstanceStatusProperties.
21207func (sis SiteInstanceStatusProperties) MarshalJSON() ([]byte, error) {
21208	objectMap := make(map[string]interface{})
21209	if sis.State != "" {
21210		objectMap["state"] = sis.State
21211	}
21212	if sis.StatusURL != nil {
21213		objectMap["statusUrl"] = sis.StatusURL
21214	}
21215	if sis.DetectorURL != nil {
21216		objectMap["detectorUrl"] = sis.DetectorURL
21217	}
21218	if sis.ConsoleURL != nil {
21219		objectMap["consoleUrl"] = sis.ConsoleURL
21220	}
21221	if sis.HealthCheckURL != nil {
21222		objectMap["healthCheckUrl"] = sis.HealthCheckURL
21223	}
21224	if sis.Containers != nil {
21225		objectMap["containers"] = sis.Containers
21226	}
21227	return json.Marshal(objectMap)
21228}
21229
21230// SiteLimits metric limits set on an app.
21231type SiteLimits struct {
21232	// MaxPercentageCPU - Maximum allowed CPU usage percentage.
21233	MaxPercentageCPU *float64 `json:"maxPercentageCpu,omitempty"`
21234	// MaxMemoryInMb - Maximum allowed memory usage in MB.
21235	MaxMemoryInMb *int64 `json:"maxMemoryInMb,omitempty"`
21236	// MaxDiskSizeInMb - Maximum allowed disk size usage in MB.
21237	MaxDiskSizeInMb *int64 `json:"maxDiskSizeInMb,omitempty"`
21238}
21239
21240// SiteLogsConfig configuration of App Service site logs.
21241type SiteLogsConfig struct {
21242	autorest.Response `json:"-"`
21243	// SiteLogsConfigProperties - SiteLogsConfig resource specific properties
21244	*SiteLogsConfigProperties `json:"properties,omitempty"`
21245	// ID - READ-ONLY; Resource Id.
21246	ID *string `json:"id,omitempty"`
21247	// Name - READ-ONLY; Resource Name.
21248	Name *string `json:"name,omitempty"`
21249	// Kind - Kind of resource.
21250	Kind *string `json:"kind,omitempty"`
21251	// Type - READ-ONLY; Resource type.
21252	Type *string `json:"type,omitempty"`
21253}
21254
21255// MarshalJSON is the custom marshaler for SiteLogsConfig.
21256func (slc SiteLogsConfig) MarshalJSON() ([]byte, error) {
21257	objectMap := make(map[string]interface{})
21258	if slc.SiteLogsConfigProperties != nil {
21259		objectMap["properties"] = slc.SiteLogsConfigProperties
21260	}
21261	if slc.Kind != nil {
21262		objectMap["kind"] = slc.Kind
21263	}
21264	return json.Marshal(objectMap)
21265}
21266
21267// UnmarshalJSON is the custom unmarshaler for SiteLogsConfig struct.
21268func (slc *SiteLogsConfig) UnmarshalJSON(body []byte) error {
21269	var m map[string]*json.RawMessage
21270	err := json.Unmarshal(body, &m)
21271	if err != nil {
21272		return err
21273	}
21274	for k, v := range m {
21275		switch k {
21276		case "properties":
21277			if v != nil {
21278				var siteLogsConfigProperties SiteLogsConfigProperties
21279				err = json.Unmarshal(*v, &siteLogsConfigProperties)
21280				if err != nil {
21281					return err
21282				}
21283				slc.SiteLogsConfigProperties = &siteLogsConfigProperties
21284			}
21285		case "id":
21286			if v != nil {
21287				var ID string
21288				err = json.Unmarshal(*v, &ID)
21289				if err != nil {
21290					return err
21291				}
21292				slc.ID = &ID
21293			}
21294		case "name":
21295			if v != nil {
21296				var name string
21297				err = json.Unmarshal(*v, &name)
21298				if err != nil {
21299					return err
21300				}
21301				slc.Name = &name
21302			}
21303		case "kind":
21304			if v != nil {
21305				var kind string
21306				err = json.Unmarshal(*v, &kind)
21307				if err != nil {
21308					return err
21309				}
21310				slc.Kind = &kind
21311			}
21312		case "type":
21313			if v != nil {
21314				var typeVar string
21315				err = json.Unmarshal(*v, &typeVar)
21316				if err != nil {
21317					return err
21318				}
21319				slc.Type = &typeVar
21320			}
21321		}
21322	}
21323
21324	return nil
21325}
21326
21327// SiteLogsConfigProperties siteLogsConfig resource specific properties
21328type SiteLogsConfigProperties struct {
21329	// ApplicationLogs - Application logs configuration.
21330	ApplicationLogs *ApplicationLogsConfig `json:"applicationLogs,omitempty"`
21331	// HTTPLogs - HTTP logs configuration.
21332	HTTPLogs *HTTPLogsConfig `json:"httpLogs,omitempty"`
21333	// FailedRequestsTracing - Failed requests tracing configuration.
21334	FailedRequestsTracing *EnabledConfig `json:"failedRequestsTracing,omitempty"`
21335	// DetailedErrorMessages - Detailed error messages configuration.
21336	DetailedErrorMessages *EnabledConfig `json:"detailedErrorMessages,omitempty"`
21337}
21338
21339// SiteMachineKey machineKey of an app.
21340type SiteMachineKey struct {
21341	// Validation - MachineKey validation.
21342	Validation *string `json:"validation,omitempty"`
21343	// ValidationKey - Validation key.
21344	ValidationKey *string `json:"validationKey,omitempty"`
21345	// Decryption - Algorithm used for decryption.
21346	Decryption *string `json:"decryption,omitempty"`
21347	// DecryptionKey - Decryption key.
21348	DecryptionKey *string `json:"decryptionKey,omitempty"`
21349}
21350
21351// SitePatchResource ARM resource for a site.
21352type SitePatchResource struct {
21353	// SitePatchResourceProperties - SitePatchResource resource specific properties
21354	*SitePatchResourceProperties `json:"properties,omitempty"`
21355	Identity                     *ManagedServiceIdentity `json:"identity,omitempty"`
21356	// ID - READ-ONLY; Resource Id.
21357	ID *string `json:"id,omitempty"`
21358	// Name - READ-ONLY; Resource Name.
21359	Name *string `json:"name,omitempty"`
21360	// Kind - Kind of resource.
21361	Kind *string `json:"kind,omitempty"`
21362	// Type - READ-ONLY; Resource type.
21363	Type *string `json:"type,omitempty"`
21364}
21365
21366// MarshalJSON is the custom marshaler for SitePatchResource.
21367func (spr SitePatchResource) MarshalJSON() ([]byte, error) {
21368	objectMap := make(map[string]interface{})
21369	if spr.SitePatchResourceProperties != nil {
21370		objectMap["properties"] = spr.SitePatchResourceProperties
21371	}
21372	if spr.Identity != nil {
21373		objectMap["identity"] = spr.Identity
21374	}
21375	if spr.Kind != nil {
21376		objectMap["kind"] = spr.Kind
21377	}
21378	return json.Marshal(objectMap)
21379}
21380
21381// UnmarshalJSON is the custom unmarshaler for SitePatchResource struct.
21382func (spr *SitePatchResource) UnmarshalJSON(body []byte) error {
21383	var m map[string]*json.RawMessage
21384	err := json.Unmarshal(body, &m)
21385	if err != nil {
21386		return err
21387	}
21388	for k, v := range m {
21389		switch k {
21390		case "properties":
21391			if v != nil {
21392				var sitePatchResourceProperties SitePatchResourceProperties
21393				err = json.Unmarshal(*v, &sitePatchResourceProperties)
21394				if err != nil {
21395					return err
21396				}
21397				spr.SitePatchResourceProperties = &sitePatchResourceProperties
21398			}
21399		case "identity":
21400			if v != nil {
21401				var identity ManagedServiceIdentity
21402				err = json.Unmarshal(*v, &identity)
21403				if err != nil {
21404					return err
21405				}
21406				spr.Identity = &identity
21407			}
21408		case "id":
21409			if v != nil {
21410				var ID string
21411				err = json.Unmarshal(*v, &ID)
21412				if err != nil {
21413					return err
21414				}
21415				spr.ID = &ID
21416			}
21417		case "name":
21418			if v != nil {
21419				var name string
21420				err = json.Unmarshal(*v, &name)
21421				if err != nil {
21422					return err
21423				}
21424				spr.Name = &name
21425			}
21426		case "kind":
21427			if v != nil {
21428				var kind string
21429				err = json.Unmarshal(*v, &kind)
21430				if err != nil {
21431					return err
21432				}
21433				spr.Kind = &kind
21434			}
21435		case "type":
21436			if v != nil {
21437				var typeVar string
21438				err = json.Unmarshal(*v, &typeVar)
21439				if err != nil {
21440					return err
21441				}
21442				spr.Type = &typeVar
21443			}
21444		}
21445	}
21446
21447	return nil
21448}
21449
21450// SitePatchResourceProperties sitePatchResource resource specific properties
21451type SitePatchResourceProperties struct {
21452	// State - READ-ONLY; Current state of the app.
21453	State *string `json:"state,omitempty"`
21454	// HostNames - READ-ONLY; Hostnames associated with the app.
21455	HostNames *[]string `json:"hostNames,omitempty"`
21456	// RepositorySiteName - READ-ONLY; Name of the repository site.
21457	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
21458	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
21459	UsageState UsageState `json:"usageState,omitempty"`
21460	// 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).
21461	Enabled *bool `json:"enabled,omitempty"`
21462	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
21463	// the app is not served on those hostnames.
21464	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
21465	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
21466	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
21467	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
21468	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
21469	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
21470	ServerFarmID *string `json:"serverFarmId,omitempty"`
21471	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
21472	Reserved *bool `json:"reserved,omitempty"`
21473	// IsXenon - Obsolete: Hyper-V sandbox.
21474	IsXenon *bool `json:"isXenon,omitempty"`
21475	// HyperV - Hyper-V sandbox.
21476	HyperV *bool `json:"hyperV,omitempty"`
21477	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
21478	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
21479	// SiteConfig - Configuration of the app.
21480	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
21481	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
21482	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
21483	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
21484	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
21485	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
21486	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
21487	// HostingEnvironmentProfile - App Service Environment to use for the app.
21488	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
21489	// 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>.
21490	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
21491	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
21492	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
21493	// ClientCertMode - This composes with ClientCertEnabled setting.
21494	// - ClientCertEnabled: false means ClientCert is ignored.
21495	// - ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
21496	// - ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted. Possible values include: 'Required', 'Optional'
21497	ClientCertMode ClientCertMode `json:"clientCertMode,omitempty"`
21498	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
21499	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
21500	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
21501	//  If <code>true</code>, the app is only accessible via API management process.
21502	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
21503	// CustomDomainVerificationID - Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.
21504	CustomDomainVerificationID *string `json:"customDomainVerificationId,omitempty"`
21505	// 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.
21506	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
21507	// PossibleOutboundIPAddresses - READ-ONLY; List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from all tenants except dataComponent. Read-only.
21508	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
21509	// ContainerSize - Size of the function container.
21510	ContainerSize *int32 `json:"containerSize,omitempty"`
21511	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
21512	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
21513	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
21514	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
21515	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
21516	// This only applies to Functions container.
21517	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
21518	// CloningInfo - If specified during app creation, the app is cloned from a source app.
21519	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
21520	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
21521	ResourceGroup *string `json:"resourceGroup,omitempty"`
21522	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
21523	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
21524	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
21525	DefaultHostName *string `json:"defaultHostName,omitempty"`
21526	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
21527	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
21528	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
21529	// http requests
21530	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
21531	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
21532	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
21533	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
21534	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
21535}
21536
21537// MarshalJSON is the custom marshaler for SitePatchResourceProperties.
21538func (spr SitePatchResourceProperties) MarshalJSON() ([]byte, error) {
21539	objectMap := make(map[string]interface{})
21540	if spr.Enabled != nil {
21541		objectMap["enabled"] = spr.Enabled
21542	}
21543	if spr.HostNameSslStates != nil {
21544		objectMap["hostNameSslStates"] = spr.HostNameSslStates
21545	}
21546	if spr.ServerFarmID != nil {
21547		objectMap["serverFarmId"] = spr.ServerFarmID
21548	}
21549	if spr.Reserved != nil {
21550		objectMap["reserved"] = spr.Reserved
21551	}
21552	if spr.IsXenon != nil {
21553		objectMap["isXenon"] = spr.IsXenon
21554	}
21555	if spr.HyperV != nil {
21556		objectMap["hyperV"] = spr.HyperV
21557	}
21558	if spr.SiteConfig != nil {
21559		objectMap["siteConfig"] = spr.SiteConfig
21560	}
21561	if spr.ScmSiteAlsoStopped != nil {
21562		objectMap["scmSiteAlsoStopped"] = spr.ScmSiteAlsoStopped
21563	}
21564	if spr.HostingEnvironmentProfile != nil {
21565		objectMap["hostingEnvironmentProfile"] = spr.HostingEnvironmentProfile
21566	}
21567	if spr.ClientAffinityEnabled != nil {
21568		objectMap["clientAffinityEnabled"] = spr.ClientAffinityEnabled
21569	}
21570	if spr.ClientCertEnabled != nil {
21571		objectMap["clientCertEnabled"] = spr.ClientCertEnabled
21572	}
21573	if spr.ClientCertMode != "" {
21574		objectMap["clientCertMode"] = spr.ClientCertMode
21575	}
21576	if spr.ClientCertExclusionPaths != nil {
21577		objectMap["clientCertExclusionPaths"] = spr.ClientCertExclusionPaths
21578	}
21579	if spr.HostNamesDisabled != nil {
21580		objectMap["hostNamesDisabled"] = spr.HostNamesDisabled
21581	}
21582	if spr.CustomDomainVerificationID != nil {
21583		objectMap["customDomainVerificationId"] = spr.CustomDomainVerificationID
21584	}
21585	if spr.ContainerSize != nil {
21586		objectMap["containerSize"] = spr.ContainerSize
21587	}
21588	if spr.DailyMemoryTimeQuota != nil {
21589		objectMap["dailyMemoryTimeQuota"] = spr.DailyMemoryTimeQuota
21590	}
21591	if spr.CloningInfo != nil {
21592		objectMap["cloningInfo"] = spr.CloningInfo
21593	}
21594	if spr.HTTPSOnly != nil {
21595		objectMap["httpsOnly"] = spr.HTTPSOnly
21596	}
21597	if spr.RedundancyMode != "" {
21598		objectMap["redundancyMode"] = spr.RedundancyMode
21599	}
21600	return json.Marshal(objectMap)
21601}
21602
21603// SitePhpErrorLogFlag used for getting PHP error logging flag.
21604type SitePhpErrorLogFlag struct {
21605	autorest.Response `json:"-"`
21606	// SitePhpErrorLogFlagProperties - SitePhpErrorLogFlag resource specific properties
21607	*SitePhpErrorLogFlagProperties `json:"properties,omitempty"`
21608	// ID - READ-ONLY; Resource Id.
21609	ID *string `json:"id,omitempty"`
21610	// Name - READ-ONLY; Resource Name.
21611	Name *string `json:"name,omitempty"`
21612	// Kind - Kind of resource.
21613	Kind *string `json:"kind,omitempty"`
21614	// Type - READ-ONLY; Resource type.
21615	Type *string `json:"type,omitempty"`
21616}
21617
21618// MarshalJSON is the custom marshaler for SitePhpErrorLogFlag.
21619func (spelf SitePhpErrorLogFlag) MarshalJSON() ([]byte, error) {
21620	objectMap := make(map[string]interface{})
21621	if spelf.SitePhpErrorLogFlagProperties != nil {
21622		objectMap["properties"] = spelf.SitePhpErrorLogFlagProperties
21623	}
21624	if spelf.Kind != nil {
21625		objectMap["kind"] = spelf.Kind
21626	}
21627	return json.Marshal(objectMap)
21628}
21629
21630// UnmarshalJSON is the custom unmarshaler for SitePhpErrorLogFlag struct.
21631func (spelf *SitePhpErrorLogFlag) UnmarshalJSON(body []byte) error {
21632	var m map[string]*json.RawMessage
21633	err := json.Unmarshal(body, &m)
21634	if err != nil {
21635		return err
21636	}
21637	for k, v := range m {
21638		switch k {
21639		case "properties":
21640			if v != nil {
21641				var sitePhpErrorLogFlagProperties SitePhpErrorLogFlagProperties
21642				err = json.Unmarshal(*v, &sitePhpErrorLogFlagProperties)
21643				if err != nil {
21644					return err
21645				}
21646				spelf.SitePhpErrorLogFlagProperties = &sitePhpErrorLogFlagProperties
21647			}
21648		case "id":
21649			if v != nil {
21650				var ID string
21651				err = json.Unmarshal(*v, &ID)
21652				if err != nil {
21653					return err
21654				}
21655				spelf.ID = &ID
21656			}
21657		case "name":
21658			if v != nil {
21659				var name string
21660				err = json.Unmarshal(*v, &name)
21661				if err != nil {
21662					return err
21663				}
21664				spelf.Name = &name
21665			}
21666		case "kind":
21667			if v != nil {
21668				var kind string
21669				err = json.Unmarshal(*v, &kind)
21670				if err != nil {
21671					return err
21672				}
21673				spelf.Kind = &kind
21674			}
21675		case "type":
21676			if v != nil {
21677				var typeVar string
21678				err = json.Unmarshal(*v, &typeVar)
21679				if err != nil {
21680					return err
21681				}
21682				spelf.Type = &typeVar
21683			}
21684		}
21685	}
21686
21687	return nil
21688}
21689
21690// SitePhpErrorLogFlagProperties sitePhpErrorLogFlag resource specific properties
21691type SitePhpErrorLogFlagProperties struct {
21692	// LocalLogErrors - Local log_errors setting.
21693	LocalLogErrors *string `json:"localLogErrors,omitempty"`
21694	// MasterLogErrors - Master log_errors setting.
21695	MasterLogErrors *string `json:"masterLogErrors,omitempty"`
21696	// LocalLogErrorsMaxLength - Local log_errors_max_len setting.
21697	LocalLogErrorsMaxLength *string `json:"localLogErrorsMaxLength,omitempty"`
21698	// MasterLogErrorsMaxLength - Master log_errors_max_len setting.
21699	MasterLogErrorsMaxLength *string `json:"masterLogErrorsMaxLength,omitempty"`
21700}
21701
21702// SiteProperties site resource specific properties
21703type SiteProperties struct {
21704	// State - READ-ONLY; Current state of the app.
21705	State *string `json:"state,omitempty"`
21706	// HostNames - READ-ONLY; Hostnames associated with the app.
21707	HostNames *[]string `json:"hostNames,omitempty"`
21708	// RepositorySiteName - READ-ONLY; Name of the repository site.
21709	RepositorySiteName *string `json:"repositorySiteName,omitempty"`
21710	// UsageState - READ-ONLY; State indicating whether the app has exceeded its quota usage. Read-only. Possible values include: 'UsageStateNormal', 'UsageStateExceeded'
21711	UsageState UsageState `json:"usageState,omitempty"`
21712	// 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).
21713	Enabled *bool `json:"enabled,omitempty"`
21714	// EnabledHostNames - READ-ONLY; Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise,
21715	// the app is not served on those hostnames.
21716	EnabledHostNames *[]string `json:"enabledHostNames,omitempty"`
21717	// AvailabilityState - READ-ONLY; Management information availability state for the app. Possible values include: 'Normal', 'Limited', 'DisasterRecoveryMode'
21718	AvailabilityState SiteAvailabilityState `json:"availabilityState,omitempty"`
21719	// HostNameSslStates - Hostname SSL states are used to manage the SSL bindings for app's hostnames.
21720	HostNameSslStates *[]HostNameSslState `json:"hostNameSslStates,omitempty"`
21721	// ServerFarmID - Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
21722	ServerFarmID *string `json:"serverFarmId,omitempty"`
21723	// Reserved - <code>true</code> if reserved; otherwise, <code>false</code>.
21724	Reserved *bool `json:"reserved,omitempty"`
21725	// IsXenon - Obsolete: Hyper-V sandbox.
21726	IsXenon *bool `json:"isXenon,omitempty"`
21727	// HyperV - Hyper-V sandbox.
21728	HyperV *bool `json:"hyperV,omitempty"`
21729	// LastModifiedTimeUtc - READ-ONLY; Last time the app was modified, in UTC. Read-only.
21730	LastModifiedTimeUtc *date.Time `json:"lastModifiedTimeUtc,omitempty"`
21731	// SiteConfig - Configuration of the app.
21732	SiteConfig *SiteConfig `json:"siteConfig,omitempty"`
21733	// TrafficManagerHostNames - READ-ONLY; Azure Traffic Manager hostnames associated with the app. Read-only.
21734	TrafficManagerHostNames *[]string `json:"trafficManagerHostNames,omitempty"`
21735	// ScmSiteAlsoStopped - <code>true</code> to stop SCM (KUDU) site when the app is stopped; otherwise, <code>false</code>. The default is <code>false</code>.
21736	ScmSiteAlsoStopped *bool `json:"scmSiteAlsoStopped,omitempty"`
21737	// TargetSwapSlot - READ-ONLY; Specifies which deployment slot this app will swap into. Read-only.
21738	TargetSwapSlot *string `json:"targetSwapSlot,omitempty"`
21739	// HostingEnvironmentProfile - App Service Environment to use for the app.
21740	HostingEnvironmentProfile *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
21741	// 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>.
21742	ClientAffinityEnabled *bool `json:"clientAffinityEnabled,omitempty"`
21743	// ClientCertEnabled - <code>true</code> to enable client certificate authentication (TLS mutual authentication); otherwise, <code>false</code>. Default is <code>false</code>.
21744	ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"`
21745	// ClientCertMode - This composes with ClientCertEnabled setting.
21746	// - ClientCertEnabled: false means ClientCert is ignored.
21747	// - ClientCertEnabled: true and ClientCertMode: Required means ClientCert is required.
21748	// - ClientCertEnabled: true and ClientCertMode: Optional means ClientCert is optional or accepted. Possible values include: 'Required', 'Optional'
21749	ClientCertMode ClientCertMode `json:"clientCertMode,omitempty"`
21750	// ClientCertExclusionPaths - client certificate authentication comma-separated exclusion paths
21751	ClientCertExclusionPaths *string `json:"clientCertExclusionPaths,omitempty"`
21752	// HostNamesDisabled - <code>true</code> to disable the public hostnames of the app; otherwise, <code>false</code>.
21753	//  If <code>true</code>, the app is only accessible via API management process.
21754	HostNamesDisabled *bool `json:"hostNamesDisabled,omitempty"`
21755	// CustomDomainVerificationID - Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.
21756	CustomDomainVerificationID *string `json:"customDomainVerificationId,omitempty"`
21757	// 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.
21758	OutboundIPAddresses *string `json:"outboundIpAddresses,omitempty"`
21759	// PossibleOutboundIPAddresses - READ-ONLY; List of IP addresses that the app uses for outbound connections (e.g. database access). Includes VIPs from all tenants except dataComponent. Read-only.
21760	PossibleOutboundIPAddresses *string `json:"possibleOutboundIpAddresses,omitempty"`
21761	// ContainerSize - Size of the function container.
21762	ContainerSize *int32 `json:"containerSize,omitempty"`
21763	// DailyMemoryTimeQuota - Maximum allowed daily memory-time quota (applicable on dynamic apps only).
21764	DailyMemoryTimeQuota *int32 `json:"dailyMemoryTimeQuota,omitempty"`
21765	// SuspendedTill - READ-ONLY; App suspended till in case memory-time quota is exceeded.
21766	SuspendedTill *date.Time `json:"suspendedTill,omitempty"`
21767	// MaxNumberOfWorkers - READ-ONLY; Maximum number of workers.
21768	// This only applies to Functions container.
21769	MaxNumberOfWorkers *int32 `json:"maxNumberOfWorkers,omitempty"`
21770	// CloningInfo - If specified during app creation, the app is cloned from a source app.
21771	CloningInfo *CloningInfo `json:"cloningInfo,omitempty"`
21772	// ResourceGroup - READ-ONLY; Name of the resource group the app belongs to. Read-only.
21773	ResourceGroup *string `json:"resourceGroup,omitempty"`
21774	// IsDefaultContainer - READ-ONLY; <code>true</code> if the app is a default container; otherwise, <code>false</code>.
21775	IsDefaultContainer *bool `json:"isDefaultContainer,omitempty"`
21776	// DefaultHostName - READ-ONLY; Default hostname of the app. Read-only.
21777	DefaultHostName *string `json:"defaultHostName,omitempty"`
21778	// SlotSwapStatus - READ-ONLY; Status of the last deployment slot swap operation.
21779	SlotSwapStatus *SlotSwapStatus `json:"slotSwapStatus,omitempty"`
21780	// HTTPSOnly - HttpsOnly: configures a web site to accept only https requests. Issues redirect for
21781	// http requests
21782	HTTPSOnly *bool `json:"httpsOnly,omitempty"`
21783	// RedundancyMode - Site redundancy mode. Possible values include: 'RedundancyModeNone', 'RedundancyModeManual', 'RedundancyModeFailover', 'RedundancyModeActiveActive', 'RedundancyModeGeoRedundant'
21784	RedundancyMode RedundancyMode `json:"redundancyMode,omitempty"`
21785	// InProgressOperationID - READ-ONLY; Specifies an operation id if this site has a pending operation.
21786	InProgressOperationID *uuid.UUID `json:"inProgressOperationId,omitempty"`
21787}
21788
21789// MarshalJSON is the custom marshaler for SiteProperties.
21790func (s SiteProperties) MarshalJSON() ([]byte, error) {
21791	objectMap := make(map[string]interface{})
21792	if s.Enabled != nil {
21793		objectMap["enabled"] = s.Enabled
21794	}
21795	if s.HostNameSslStates != nil {
21796		objectMap["hostNameSslStates"] = s.HostNameSslStates
21797	}
21798	if s.ServerFarmID != nil {
21799		objectMap["serverFarmId"] = s.ServerFarmID
21800	}
21801	if s.Reserved != nil {
21802		objectMap["reserved"] = s.Reserved
21803	}
21804	if s.IsXenon != nil {
21805		objectMap["isXenon"] = s.IsXenon
21806	}
21807	if s.HyperV != nil {
21808		objectMap["hyperV"] = s.HyperV
21809	}
21810	if s.SiteConfig != nil {
21811		objectMap["siteConfig"] = s.SiteConfig
21812	}
21813	if s.ScmSiteAlsoStopped != nil {
21814		objectMap["scmSiteAlsoStopped"] = s.ScmSiteAlsoStopped
21815	}
21816	if s.HostingEnvironmentProfile != nil {
21817		objectMap["hostingEnvironmentProfile"] = s.HostingEnvironmentProfile
21818	}
21819	if s.ClientAffinityEnabled != nil {
21820		objectMap["clientAffinityEnabled"] = s.ClientAffinityEnabled
21821	}
21822	if s.ClientCertEnabled != nil {
21823		objectMap["clientCertEnabled"] = s.ClientCertEnabled
21824	}
21825	if s.ClientCertMode != "" {
21826		objectMap["clientCertMode"] = s.ClientCertMode
21827	}
21828	if s.ClientCertExclusionPaths != nil {
21829		objectMap["clientCertExclusionPaths"] = s.ClientCertExclusionPaths
21830	}
21831	if s.HostNamesDisabled != nil {
21832		objectMap["hostNamesDisabled"] = s.HostNamesDisabled
21833	}
21834	if s.CustomDomainVerificationID != nil {
21835		objectMap["customDomainVerificationId"] = s.CustomDomainVerificationID
21836	}
21837	if s.ContainerSize != nil {
21838		objectMap["containerSize"] = s.ContainerSize
21839	}
21840	if s.DailyMemoryTimeQuota != nil {
21841		objectMap["dailyMemoryTimeQuota"] = s.DailyMemoryTimeQuota
21842	}
21843	if s.CloningInfo != nil {
21844		objectMap["cloningInfo"] = s.CloningInfo
21845	}
21846	if s.HTTPSOnly != nil {
21847		objectMap["httpsOnly"] = s.HTTPSOnly
21848	}
21849	if s.RedundancyMode != "" {
21850		objectMap["redundancyMode"] = s.RedundancyMode
21851	}
21852	return json.Marshal(objectMap)
21853}
21854
21855// SiteSeal site seal
21856type SiteSeal struct {
21857	autorest.Response `json:"-"`
21858	// HTML - HTML snippet
21859	HTML *string `json:"html,omitempty"`
21860}
21861
21862// SiteSealRequest site seal request.
21863type SiteSealRequest struct {
21864	// LightTheme - If <code>true</code> use the light color theme for site seal; otherwise, use the default color theme.
21865	LightTheme *bool `json:"lightTheme,omitempty"`
21866	// Locale - Locale of site seal.
21867	Locale *string `json:"locale,omitempty"`
21868}
21869
21870// SiteSourceControl source control configuration for an app.
21871type SiteSourceControl struct {
21872	autorest.Response `json:"-"`
21873	// SiteSourceControlProperties - SiteSourceControl resource specific properties
21874	*SiteSourceControlProperties `json:"properties,omitempty"`
21875	// ID - READ-ONLY; Resource Id.
21876	ID *string `json:"id,omitempty"`
21877	// Name - READ-ONLY; Resource Name.
21878	Name *string `json:"name,omitempty"`
21879	// Kind - Kind of resource.
21880	Kind *string `json:"kind,omitempty"`
21881	// Type - READ-ONLY; Resource type.
21882	Type *string `json:"type,omitempty"`
21883}
21884
21885// MarshalJSON is the custom marshaler for SiteSourceControl.
21886func (ssc SiteSourceControl) MarshalJSON() ([]byte, error) {
21887	objectMap := make(map[string]interface{})
21888	if ssc.SiteSourceControlProperties != nil {
21889		objectMap["properties"] = ssc.SiteSourceControlProperties
21890	}
21891	if ssc.Kind != nil {
21892		objectMap["kind"] = ssc.Kind
21893	}
21894	return json.Marshal(objectMap)
21895}
21896
21897// UnmarshalJSON is the custom unmarshaler for SiteSourceControl struct.
21898func (ssc *SiteSourceControl) UnmarshalJSON(body []byte) error {
21899	var m map[string]*json.RawMessage
21900	err := json.Unmarshal(body, &m)
21901	if err != nil {
21902		return err
21903	}
21904	for k, v := range m {
21905		switch k {
21906		case "properties":
21907			if v != nil {
21908				var siteSourceControlProperties SiteSourceControlProperties
21909				err = json.Unmarshal(*v, &siteSourceControlProperties)
21910				if err != nil {
21911					return err
21912				}
21913				ssc.SiteSourceControlProperties = &siteSourceControlProperties
21914			}
21915		case "id":
21916			if v != nil {
21917				var ID string
21918				err = json.Unmarshal(*v, &ID)
21919				if err != nil {
21920					return err
21921				}
21922				ssc.ID = &ID
21923			}
21924		case "name":
21925			if v != nil {
21926				var name string
21927				err = json.Unmarshal(*v, &name)
21928				if err != nil {
21929					return err
21930				}
21931				ssc.Name = &name
21932			}
21933		case "kind":
21934			if v != nil {
21935				var kind string
21936				err = json.Unmarshal(*v, &kind)
21937				if err != nil {
21938					return err
21939				}
21940				ssc.Kind = &kind
21941			}
21942		case "type":
21943			if v != nil {
21944				var typeVar string
21945				err = json.Unmarshal(*v, &typeVar)
21946				if err != nil {
21947					return err
21948				}
21949				ssc.Type = &typeVar
21950			}
21951		}
21952	}
21953
21954	return nil
21955}
21956
21957// SiteSourceControlProperties siteSourceControl resource specific properties
21958type SiteSourceControlProperties struct {
21959	// RepoURL - Repository or source control URL.
21960	RepoURL *string `json:"repoUrl,omitempty"`
21961	// Branch - Name of branch to use for deployment.
21962	Branch *string `json:"branch,omitempty"`
21963	// IsManualIntegration - <code>true</code> to limit to manual integration; <code>false</code> to enable continuous integration (which configures webhooks into online repos like GitHub).
21964	IsManualIntegration *bool `json:"isManualIntegration,omitempty"`
21965	// IsGitHubAction - <code>true</code> if this is deployed via GitHub action.
21966	IsGitHubAction *bool `json:"isGitHubAction,omitempty"`
21967	// DeploymentRollbackEnabled - <code>true</code> to enable deployment rollback; otherwise, <code>false</code>.
21968	DeploymentRollbackEnabled *bool `json:"deploymentRollbackEnabled,omitempty"`
21969	// IsMercurial - <code>true</code> for a Mercurial repository; <code>false</code> for a Git repository.
21970	IsMercurial *bool `json:"isMercurial,omitempty"`
21971}
21972
21973// SkuCapacity description of the App Service plan scale options.
21974type SkuCapacity struct {
21975	// Minimum - Minimum number of workers for this App Service plan SKU.
21976	Minimum *int32 `json:"minimum,omitempty"`
21977	// Maximum - Maximum number of workers for this App Service plan SKU.
21978	Maximum *int32 `json:"maximum,omitempty"`
21979	// Default - Default number of workers for this App Service plan SKU.
21980	Default *int32 `json:"default,omitempty"`
21981	// ScaleType - Available scale configurations for an App Service plan.
21982	ScaleType *string `json:"scaleType,omitempty"`
21983}
21984
21985// SkuDescription description of a SKU for a scalable resource.
21986type SkuDescription struct {
21987	// Name - Name of the resource SKU.
21988	Name *string `json:"name,omitempty"`
21989	// Tier - Service tier of the resource SKU.
21990	Tier *string `json:"tier,omitempty"`
21991	// Size - Size specifier of the resource SKU.
21992	Size *string `json:"size,omitempty"`
21993	// Family - Family code of the resource SKU.
21994	Family *string `json:"family,omitempty"`
21995	// Capacity - Current number of instances assigned to the resource.
21996	Capacity *int32 `json:"capacity,omitempty"`
21997	// SkuCapacity - Min, max, and default scale values of the SKU.
21998	SkuCapacity *SkuCapacity `json:"skuCapacity,omitempty"`
21999	// Locations - Locations of the SKU.
22000	Locations *[]string `json:"locations,omitempty"`
22001	// Capabilities - Capabilities of the SKU, e.g., is traffic manager enabled?
22002	Capabilities *[]Capability `json:"capabilities,omitempty"`
22003}
22004
22005// SkuInfo SKU discovery information.
22006type SkuInfo struct {
22007	// ResourceType - Resource type that this SKU applies to.
22008	ResourceType *string `json:"resourceType,omitempty"`
22009	// Sku - Name and tier of the SKU.
22010	Sku *SkuDescription `json:"sku,omitempty"`
22011	// Capacity - Min, max, and default scale values of the SKU.
22012	Capacity *SkuCapacity `json:"capacity,omitempty"`
22013}
22014
22015// SkuInfoCollection collection of SKU information.
22016type SkuInfoCollection struct {
22017	autorest.Response `json:"-"`
22018	// Value - Collection of resources.
22019	Value *[]SkuInfo `json:"value,omitempty"`
22020	// NextLink - READ-ONLY; Link to next page of resources.
22021	NextLink *string `json:"nextLink,omitempty"`
22022}
22023
22024// MarshalJSON is the custom marshaler for SkuInfoCollection.
22025func (sic SkuInfoCollection) MarshalJSON() ([]byte, error) {
22026	objectMap := make(map[string]interface{})
22027	if sic.Value != nil {
22028		objectMap["value"] = sic.Value
22029	}
22030	return json.Marshal(objectMap)
22031}
22032
22033// SkuInfoCollectionIterator provides access to a complete listing of SkuInfo values.
22034type SkuInfoCollectionIterator struct {
22035	i    int
22036	page SkuInfoCollectionPage
22037}
22038
22039// NextWithContext advances to the next value.  If there was an error making
22040// the request the iterator does not advance and the error is returned.
22041func (iter *SkuInfoCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22042	if tracing.IsEnabled() {
22043		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionIterator.NextWithContext")
22044		defer func() {
22045			sc := -1
22046			if iter.Response().Response.Response != nil {
22047				sc = iter.Response().Response.Response.StatusCode
22048			}
22049			tracing.EndSpan(ctx, sc, err)
22050		}()
22051	}
22052	iter.i++
22053	if iter.i < len(iter.page.Values()) {
22054		return nil
22055	}
22056	err = iter.page.NextWithContext(ctx)
22057	if err != nil {
22058		iter.i--
22059		return err
22060	}
22061	iter.i = 0
22062	return nil
22063}
22064
22065// Next advances to the next value.  If there was an error making
22066// the request the iterator does not advance and the error is returned.
22067// Deprecated: Use NextWithContext() instead.
22068func (iter *SkuInfoCollectionIterator) Next() error {
22069	return iter.NextWithContext(context.Background())
22070}
22071
22072// NotDone returns true if the enumeration should be started or is not yet complete.
22073func (iter SkuInfoCollectionIterator) NotDone() bool {
22074	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22075}
22076
22077// Response returns the raw server response from the last page request.
22078func (iter SkuInfoCollectionIterator) Response() SkuInfoCollection {
22079	return iter.page.Response()
22080}
22081
22082// Value returns the current value or a zero-initialized value if the
22083// iterator has advanced beyond the end of the collection.
22084func (iter SkuInfoCollectionIterator) Value() SkuInfo {
22085	if !iter.page.NotDone() {
22086		return SkuInfo{}
22087	}
22088	return iter.page.Values()[iter.i]
22089}
22090
22091// Creates a new instance of the SkuInfoCollectionIterator type.
22092func NewSkuInfoCollectionIterator(page SkuInfoCollectionPage) SkuInfoCollectionIterator {
22093	return SkuInfoCollectionIterator{page: page}
22094}
22095
22096// IsEmpty returns true if the ListResult contains no values.
22097func (sic SkuInfoCollection) IsEmpty() bool {
22098	return sic.Value == nil || len(*sic.Value) == 0
22099}
22100
22101// hasNextLink returns true if the NextLink is not empty.
22102func (sic SkuInfoCollection) hasNextLink() bool {
22103	return sic.NextLink != nil && len(*sic.NextLink) != 0
22104}
22105
22106// skuInfoCollectionPreparer prepares a request to retrieve the next set of results.
22107// It returns nil if no more results exist.
22108func (sic SkuInfoCollection) skuInfoCollectionPreparer(ctx context.Context) (*http.Request, error) {
22109	if !sic.hasNextLink() {
22110		return nil, nil
22111	}
22112	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22113		autorest.AsJSON(),
22114		autorest.AsGet(),
22115		autorest.WithBaseURL(to.String(sic.NextLink)))
22116}
22117
22118// SkuInfoCollectionPage contains a page of SkuInfo values.
22119type SkuInfoCollectionPage struct {
22120	fn  func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)
22121	sic SkuInfoCollection
22122}
22123
22124// NextWithContext advances to the next page of values.  If there was an error making
22125// the request the page does not advance and the error is returned.
22126func (page *SkuInfoCollectionPage) NextWithContext(ctx context.Context) (err error) {
22127	if tracing.IsEnabled() {
22128		ctx = tracing.StartSpan(ctx, fqdn+"/SkuInfoCollectionPage.NextWithContext")
22129		defer func() {
22130			sc := -1
22131			if page.Response().Response.Response != nil {
22132				sc = page.Response().Response.Response.StatusCode
22133			}
22134			tracing.EndSpan(ctx, sc, err)
22135		}()
22136	}
22137	for {
22138		next, err := page.fn(ctx, page.sic)
22139		if err != nil {
22140			return err
22141		}
22142		page.sic = next
22143		if !next.hasNextLink() || !next.IsEmpty() {
22144			break
22145		}
22146	}
22147	return nil
22148}
22149
22150// Next advances to the next page of values.  If there was an error making
22151// the request the page does not advance and the error is returned.
22152// Deprecated: Use NextWithContext() instead.
22153func (page *SkuInfoCollectionPage) Next() error {
22154	return page.NextWithContext(context.Background())
22155}
22156
22157// NotDone returns true if the page enumeration should be started or is not yet complete.
22158func (page SkuInfoCollectionPage) NotDone() bool {
22159	return !page.sic.IsEmpty()
22160}
22161
22162// Response returns the raw server response from the last page request.
22163func (page SkuInfoCollectionPage) Response() SkuInfoCollection {
22164	return page.sic
22165}
22166
22167// Values returns the slice of values for the current page or nil if there are no values.
22168func (page SkuInfoCollectionPage) Values() []SkuInfo {
22169	if page.sic.IsEmpty() {
22170		return nil
22171	}
22172	return *page.sic.Value
22173}
22174
22175// Creates a new instance of the SkuInfoCollectionPage type.
22176func NewSkuInfoCollectionPage(cur SkuInfoCollection, getNextPage func(context.Context, SkuInfoCollection) (SkuInfoCollection, error)) SkuInfoCollectionPage {
22177	return SkuInfoCollectionPage{
22178		fn:  getNextPage,
22179		sic: cur,
22180	}
22181}
22182
22183// SkuInfos collection of SKU information.
22184type SkuInfos struct {
22185	autorest.Response `json:"-"`
22186	// ResourceType - Resource type that this SKU applies to.
22187	ResourceType *string `json:"resourceType,omitempty"`
22188	// Skus - List of SKUs the subscription is able to use.
22189	Skus *[]GlobalCsmSkuDescription `json:"skus,omitempty"`
22190}
22191
22192// SlotConfigNames names for connection strings, application settings, and external Azure storage account
22193// configuration
22194// identifiers to be marked as sticky to the deployment slot and not moved during a swap operation.
22195// This is valid for all deployment slots in an app.
22196type SlotConfigNames struct {
22197	// ConnectionStringNames - List of connection string names.
22198	ConnectionStringNames *[]string `json:"connectionStringNames,omitempty"`
22199	// AppSettingNames - List of application settings names.
22200	AppSettingNames *[]string `json:"appSettingNames,omitempty"`
22201	// AzureStorageConfigNames - List of external Azure storage account identifiers.
22202	AzureStorageConfigNames *[]string `json:"azureStorageConfigNames,omitempty"`
22203}
22204
22205// SlotConfigNamesResource slot Config names azure resource.
22206type SlotConfigNamesResource struct {
22207	autorest.Response `json:"-"`
22208	// SlotConfigNames - Core resource properties
22209	*SlotConfigNames `json:"properties,omitempty"`
22210	// ID - READ-ONLY; Resource Id.
22211	ID *string `json:"id,omitempty"`
22212	// Name - READ-ONLY; Resource Name.
22213	Name *string `json:"name,omitempty"`
22214	// Kind - Kind of resource.
22215	Kind *string `json:"kind,omitempty"`
22216	// Type - READ-ONLY; Resource type.
22217	Type *string `json:"type,omitempty"`
22218}
22219
22220// MarshalJSON is the custom marshaler for SlotConfigNamesResource.
22221func (scnr SlotConfigNamesResource) MarshalJSON() ([]byte, error) {
22222	objectMap := make(map[string]interface{})
22223	if scnr.SlotConfigNames != nil {
22224		objectMap["properties"] = scnr.SlotConfigNames
22225	}
22226	if scnr.Kind != nil {
22227		objectMap["kind"] = scnr.Kind
22228	}
22229	return json.Marshal(objectMap)
22230}
22231
22232// UnmarshalJSON is the custom unmarshaler for SlotConfigNamesResource struct.
22233func (scnr *SlotConfigNamesResource) UnmarshalJSON(body []byte) error {
22234	var m map[string]*json.RawMessage
22235	err := json.Unmarshal(body, &m)
22236	if err != nil {
22237		return err
22238	}
22239	for k, v := range m {
22240		switch k {
22241		case "properties":
22242			if v != nil {
22243				var slotConfigNames SlotConfigNames
22244				err = json.Unmarshal(*v, &slotConfigNames)
22245				if err != nil {
22246					return err
22247				}
22248				scnr.SlotConfigNames = &slotConfigNames
22249			}
22250		case "id":
22251			if v != nil {
22252				var ID string
22253				err = json.Unmarshal(*v, &ID)
22254				if err != nil {
22255					return err
22256				}
22257				scnr.ID = &ID
22258			}
22259		case "name":
22260			if v != nil {
22261				var name string
22262				err = json.Unmarshal(*v, &name)
22263				if err != nil {
22264					return err
22265				}
22266				scnr.Name = &name
22267			}
22268		case "kind":
22269			if v != nil {
22270				var kind string
22271				err = json.Unmarshal(*v, &kind)
22272				if err != nil {
22273					return err
22274				}
22275				scnr.Kind = &kind
22276			}
22277		case "type":
22278			if v != nil {
22279				var typeVar string
22280				err = json.Unmarshal(*v, &typeVar)
22281				if err != nil {
22282					return err
22283				}
22284				scnr.Type = &typeVar
22285			}
22286		}
22287	}
22288
22289	return nil
22290}
22291
22292// SlotDifference a setting difference between two deployment slots of an app.
22293type SlotDifference struct {
22294	// SlotDifferenceProperties - SlotDifference resource specific properties
22295	*SlotDifferenceProperties `json:"properties,omitempty"`
22296	// ID - READ-ONLY; Resource Id.
22297	ID *string `json:"id,omitempty"`
22298	// Name - READ-ONLY; Resource Name.
22299	Name *string `json:"name,omitempty"`
22300	// Kind - Kind of resource.
22301	Kind *string `json:"kind,omitempty"`
22302	// Type - READ-ONLY; Resource type.
22303	Type *string `json:"type,omitempty"`
22304}
22305
22306// MarshalJSON is the custom marshaler for SlotDifference.
22307func (sd SlotDifference) MarshalJSON() ([]byte, error) {
22308	objectMap := make(map[string]interface{})
22309	if sd.SlotDifferenceProperties != nil {
22310		objectMap["properties"] = sd.SlotDifferenceProperties
22311	}
22312	if sd.Kind != nil {
22313		objectMap["kind"] = sd.Kind
22314	}
22315	return json.Marshal(objectMap)
22316}
22317
22318// UnmarshalJSON is the custom unmarshaler for SlotDifference struct.
22319func (sd *SlotDifference) UnmarshalJSON(body []byte) error {
22320	var m map[string]*json.RawMessage
22321	err := json.Unmarshal(body, &m)
22322	if err != nil {
22323		return err
22324	}
22325	for k, v := range m {
22326		switch k {
22327		case "properties":
22328			if v != nil {
22329				var slotDifferenceProperties SlotDifferenceProperties
22330				err = json.Unmarshal(*v, &slotDifferenceProperties)
22331				if err != nil {
22332					return err
22333				}
22334				sd.SlotDifferenceProperties = &slotDifferenceProperties
22335			}
22336		case "id":
22337			if v != nil {
22338				var ID string
22339				err = json.Unmarshal(*v, &ID)
22340				if err != nil {
22341					return err
22342				}
22343				sd.ID = &ID
22344			}
22345		case "name":
22346			if v != nil {
22347				var name string
22348				err = json.Unmarshal(*v, &name)
22349				if err != nil {
22350					return err
22351				}
22352				sd.Name = &name
22353			}
22354		case "kind":
22355			if v != nil {
22356				var kind string
22357				err = json.Unmarshal(*v, &kind)
22358				if err != nil {
22359					return err
22360				}
22361				sd.Kind = &kind
22362			}
22363		case "type":
22364			if v != nil {
22365				var typeVar string
22366				err = json.Unmarshal(*v, &typeVar)
22367				if err != nil {
22368					return err
22369				}
22370				sd.Type = &typeVar
22371			}
22372		}
22373	}
22374
22375	return nil
22376}
22377
22378// SlotDifferenceCollection collection of slot differences.
22379type SlotDifferenceCollection struct {
22380	autorest.Response `json:"-"`
22381	// Value - Collection of resources.
22382	Value *[]SlotDifference `json:"value,omitempty"`
22383	// NextLink - READ-ONLY; Link to next page of resources.
22384	NextLink *string `json:"nextLink,omitempty"`
22385}
22386
22387// MarshalJSON is the custom marshaler for SlotDifferenceCollection.
22388func (sdc SlotDifferenceCollection) MarshalJSON() ([]byte, error) {
22389	objectMap := make(map[string]interface{})
22390	if sdc.Value != nil {
22391		objectMap["value"] = sdc.Value
22392	}
22393	return json.Marshal(objectMap)
22394}
22395
22396// SlotDifferenceCollectionIterator provides access to a complete listing of SlotDifference values.
22397type SlotDifferenceCollectionIterator struct {
22398	i    int
22399	page SlotDifferenceCollectionPage
22400}
22401
22402// NextWithContext advances to the next value.  If there was an error making
22403// the request the iterator does not advance and the error is returned.
22404func (iter *SlotDifferenceCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22405	if tracing.IsEnabled() {
22406		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionIterator.NextWithContext")
22407		defer func() {
22408			sc := -1
22409			if iter.Response().Response.Response != nil {
22410				sc = iter.Response().Response.Response.StatusCode
22411			}
22412			tracing.EndSpan(ctx, sc, err)
22413		}()
22414	}
22415	iter.i++
22416	if iter.i < len(iter.page.Values()) {
22417		return nil
22418	}
22419	err = iter.page.NextWithContext(ctx)
22420	if err != nil {
22421		iter.i--
22422		return err
22423	}
22424	iter.i = 0
22425	return nil
22426}
22427
22428// Next advances to the next value.  If there was an error making
22429// the request the iterator does not advance and the error is returned.
22430// Deprecated: Use NextWithContext() instead.
22431func (iter *SlotDifferenceCollectionIterator) Next() error {
22432	return iter.NextWithContext(context.Background())
22433}
22434
22435// NotDone returns true if the enumeration should be started or is not yet complete.
22436func (iter SlotDifferenceCollectionIterator) NotDone() bool {
22437	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22438}
22439
22440// Response returns the raw server response from the last page request.
22441func (iter SlotDifferenceCollectionIterator) Response() SlotDifferenceCollection {
22442	return iter.page.Response()
22443}
22444
22445// Value returns the current value or a zero-initialized value if the
22446// iterator has advanced beyond the end of the collection.
22447func (iter SlotDifferenceCollectionIterator) Value() SlotDifference {
22448	if !iter.page.NotDone() {
22449		return SlotDifference{}
22450	}
22451	return iter.page.Values()[iter.i]
22452}
22453
22454// Creates a new instance of the SlotDifferenceCollectionIterator type.
22455func NewSlotDifferenceCollectionIterator(page SlotDifferenceCollectionPage) SlotDifferenceCollectionIterator {
22456	return SlotDifferenceCollectionIterator{page: page}
22457}
22458
22459// IsEmpty returns true if the ListResult contains no values.
22460func (sdc SlotDifferenceCollection) IsEmpty() bool {
22461	return sdc.Value == nil || len(*sdc.Value) == 0
22462}
22463
22464// hasNextLink returns true if the NextLink is not empty.
22465func (sdc SlotDifferenceCollection) hasNextLink() bool {
22466	return sdc.NextLink != nil && len(*sdc.NextLink) != 0
22467}
22468
22469// slotDifferenceCollectionPreparer prepares a request to retrieve the next set of results.
22470// It returns nil if no more results exist.
22471func (sdc SlotDifferenceCollection) slotDifferenceCollectionPreparer(ctx context.Context) (*http.Request, error) {
22472	if !sdc.hasNextLink() {
22473		return nil, nil
22474	}
22475	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22476		autorest.AsJSON(),
22477		autorest.AsGet(),
22478		autorest.WithBaseURL(to.String(sdc.NextLink)))
22479}
22480
22481// SlotDifferenceCollectionPage contains a page of SlotDifference values.
22482type SlotDifferenceCollectionPage struct {
22483	fn  func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)
22484	sdc SlotDifferenceCollection
22485}
22486
22487// NextWithContext advances to the next page of values.  If there was an error making
22488// the request the page does not advance and the error is returned.
22489func (page *SlotDifferenceCollectionPage) NextWithContext(ctx context.Context) (err error) {
22490	if tracing.IsEnabled() {
22491		ctx = tracing.StartSpan(ctx, fqdn+"/SlotDifferenceCollectionPage.NextWithContext")
22492		defer func() {
22493			sc := -1
22494			if page.Response().Response.Response != nil {
22495				sc = page.Response().Response.Response.StatusCode
22496			}
22497			tracing.EndSpan(ctx, sc, err)
22498		}()
22499	}
22500	for {
22501		next, err := page.fn(ctx, page.sdc)
22502		if err != nil {
22503			return err
22504		}
22505		page.sdc = next
22506		if !next.hasNextLink() || !next.IsEmpty() {
22507			break
22508		}
22509	}
22510	return nil
22511}
22512
22513// Next advances to the next page of values.  If there was an error making
22514// the request the page does not advance and the error is returned.
22515// Deprecated: Use NextWithContext() instead.
22516func (page *SlotDifferenceCollectionPage) Next() error {
22517	return page.NextWithContext(context.Background())
22518}
22519
22520// NotDone returns true if the page enumeration should be started or is not yet complete.
22521func (page SlotDifferenceCollectionPage) NotDone() bool {
22522	return !page.sdc.IsEmpty()
22523}
22524
22525// Response returns the raw server response from the last page request.
22526func (page SlotDifferenceCollectionPage) Response() SlotDifferenceCollection {
22527	return page.sdc
22528}
22529
22530// Values returns the slice of values for the current page or nil if there are no values.
22531func (page SlotDifferenceCollectionPage) Values() []SlotDifference {
22532	if page.sdc.IsEmpty() {
22533		return nil
22534	}
22535	return *page.sdc.Value
22536}
22537
22538// Creates a new instance of the SlotDifferenceCollectionPage type.
22539func NewSlotDifferenceCollectionPage(cur SlotDifferenceCollection, getNextPage func(context.Context, SlotDifferenceCollection) (SlotDifferenceCollection, error)) SlotDifferenceCollectionPage {
22540	return SlotDifferenceCollectionPage{
22541		fn:  getNextPage,
22542		sdc: cur,
22543	}
22544}
22545
22546// SlotDifferenceProperties slotDifference resource specific properties
22547type SlotDifferenceProperties struct {
22548	// Level - READ-ONLY; Level of the difference: Information, Warning or Error.
22549	Level *string `json:"level,omitempty"`
22550	// SettingType - READ-ONLY; The type of the setting: General, AppSetting or ConnectionString.
22551	SettingType *string `json:"settingType,omitempty"`
22552	// DiffRule - READ-ONLY; Rule that describes how to process the setting difference during a slot swap.
22553	DiffRule *string `json:"diffRule,omitempty"`
22554	// SettingName - READ-ONLY; Name of the setting.
22555	SettingName *string `json:"settingName,omitempty"`
22556	// ValueInCurrentSlot - READ-ONLY; Value of the setting in the current slot.
22557	ValueInCurrentSlot *string `json:"valueInCurrentSlot,omitempty"`
22558	// ValueInTargetSlot - READ-ONLY; Value of the setting in the target slot.
22559	ValueInTargetSlot *string `json:"valueInTargetSlot,omitempty"`
22560	// Description - READ-ONLY; Description of the setting difference.
22561	Description *string `json:"description,omitempty"`
22562}
22563
22564// SlotSwapStatus the status of the last successful slot swap operation.
22565type SlotSwapStatus struct {
22566	// TimestampUtc - READ-ONLY; The time the last successful slot swap completed.
22567	TimestampUtc *date.Time `json:"timestampUtc,omitempty"`
22568	// SourceSlotName - READ-ONLY; The source slot of the last swap operation.
22569	SourceSlotName *string `json:"sourceSlotName,omitempty"`
22570	// DestinationSlotName - READ-ONLY; The destination slot of the last swap operation.
22571	DestinationSlotName *string `json:"destinationSlotName,omitempty"`
22572}
22573
22574// SlowRequestsBasedTrigger trigger based on request execution time.
22575type SlowRequestsBasedTrigger struct {
22576	// TimeTaken - Time taken.
22577	TimeTaken *string `json:"timeTaken,omitempty"`
22578	// Count - Request Count.
22579	Count *int32 `json:"count,omitempty"`
22580	// TimeInterval - Time interval.
22581	TimeInterval *string `json:"timeInterval,omitempty"`
22582}
22583
22584// Snapshot a snapshot of an app.
22585type Snapshot struct {
22586	// SnapshotProperties - Snapshot resource specific properties
22587	*SnapshotProperties `json:"properties,omitempty"`
22588	// ID - READ-ONLY; Resource Id.
22589	ID *string `json:"id,omitempty"`
22590	// Name - READ-ONLY; Resource Name.
22591	Name *string `json:"name,omitempty"`
22592	// Kind - Kind of resource.
22593	Kind *string `json:"kind,omitempty"`
22594	// Type - READ-ONLY; Resource type.
22595	Type *string `json:"type,omitempty"`
22596}
22597
22598// MarshalJSON is the custom marshaler for Snapshot.
22599func (s Snapshot) MarshalJSON() ([]byte, error) {
22600	objectMap := make(map[string]interface{})
22601	if s.SnapshotProperties != nil {
22602		objectMap["properties"] = s.SnapshotProperties
22603	}
22604	if s.Kind != nil {
22605		objectMap["kind"] = s.Kind
22606	}
22607	return json.Marshal(objectMap)
22608}
22609
22610// UnmarshalJSON is the custom unmarshaler for Snapshot struct.
22611func (s *Snapshot) UnmarshalJSON(body []byte) error {
22612	var m map[string]*json.RawMessage
22613	err := json.Unmarshal(body, &m)
22614	if err != nil {
22615		return err
22616	}
22617	for k, v := range m {
22618		switch k {
22619		case "properties":
22620			if v != nil {
22621				var snapshotProperties SnapshotProperties
22622				err = json.Unmarshal(*v, &snapshotProperties)
22623				if err != nil {
22624					return err
22625				}
22626				s.SnapshotProperties = &snapshotProperties
22627			}
22628		case "id":
22629			if v != nil {
22630				var ID string
22631				err = json.Unmarshal(*v, &ID)
22632				if err != nil {
22633					return err
22634				}
22635				s.ID = &ID
22636			}
22637		case "name":
22638			if v != nil {
22639				var name string
22640				err = json.Unmarshal(*v, &name)
22641				if err != nil {
22642					return err
22643				}
22644				s.Name = &name
22645			}
22646		case "kind":
22647			if v != nil {
22648				var kind string
22649				err = json.Unmarshal(*v, &kind)
22650				if err != nil {
22651					return err
22652				}
22653				s.Kind = &kind
22654			}
22655		case "type":
22656			if v != nil {
22657				var typeVar string
22658				err = json.Unmarshal(*v, &typeVar)
22659				if err != nil {
22660					return err
22661				}
22662				s.Type = &typeVar
22663			}
22664		}
22665	}
22666
22667	return nil
22668}
22669
22670// SnapshotCollection collection of snapshots which can be used to revert an app to a previous time.
22671type SnapshotCollection struct {
22672	autorest.Response `json:"-"`
22673	// Value - Collection of resources.
22674	Value *[]Snapshot `json:"value,omitempty"`
22675	// NextLink - READ-ONLY; Link to next page of resources.
22676	NextLink *string `json:"nextLink,omitempty"`
22677}
22678
22679// MarshalJSON is the custom marshaler for SnapshotCollection.
22680func (sc SnapshotCollection) MarshalJSON() ([]byte, error) {
22681	objectMap := make(map[string]interface{})
22682	if sc.Value != nil {
22683		objectMap["value"] = sc.Value
22684	}
22685	return json.Marshal(objectMap)
22686}
22687
22688// SnapshotCollectionIterator provides access to a complete listing of Snapshot values.
22689type SnapshotCollectionIterator struct {
22690	i    int
22691	page SnapshotCollectionPage
22692}
22693
22694// NextWithContext advances to the next value.  If there was an error making
22695// the request the iterator does not advance and the error is returned.
22696func (iter *SnapshotCollectionIterator) NextWithContext(ctx context.Context) (err error) {
22697	if tracing.IsEnabled() {
22698		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionIterator.NextWithContext")
22699		defer func() {
22700			sc := -1
22701			if iter.Response().Response.Response != nil {
22702				sc = iter.Response().Response.Response.StatusCode
22703			}
22704			tracing.EndSpan(ctx, sc, err)
22705		}()
22706	}
22707	iter.i++
22708	if iter.i < len(iter.page.Values()) {
22709		return nil
22710	}
22711	err = iter.page.NextWithContext(ctx)
22712	if err != nil {
22713		iter.i--
22714		return err
22715	}
22716	iter.i = 0
22717	return nil
22718}
22719
22720// Next advances to the next value.  If there was an error making
22721// the request the iterator does not advance and the error is returned.
22722// Deprecated: Use NextWithContext() instead.
22723func (iter *SnapshotCollectionIterator) Next() error {
22724	return iter.NextWithContext(context.Background())
22725}
22726
22727// NotDone returns true if the enumeration should be started or is not yet complete.
22728func (iter SnapshotCollectionIterator) NotDone() bool {
22729	return iter.page.NotDone() && iter.i < len(iter.page.Values())
22730}
22731
22732// Response returns the raw server response from the last page request.
22733func (iter SnapshotCollectionIterator) Response() SnapshotCollection {
22734	return iter.page.Response()
22735}
22736
22737// Value returns the current value or a zero-initialized value if the
22738// iterator has advanced beyond the end of the collection.
22739func (iter SnapshotCollectionIterator) Value() Snapshot {
22740	if !iter.page.NotDone() {
22741		return Snapshot{}
22742	}
22743	return iter.page.Values()[iter.i]
22744}
22745
22746// Creates a new instance of the SnapshotCollectionIterator type.
22747func NewSnapshotCollectionIterator(page SnapshotCollectionPage) SnapshotCollectionIterator {
22748	return SnapshotCollectionIterator{page: page}
22749}
22750
22751// IsEmpty returns true if the ListResult contains no values.
22752func (sc SnapshotCollection) IsEmpty() bool {
22753	return sc.Value == nil || len(*sc.Value) == 0
22754}
22755
22756// hasNextLink returns true if the NextLink is not empty.
22757func (sc SnapshotCollection) hasNextLink() bool {
22758	return sc.NextLink != nil && len(*sc.NextLink) != 0
22759}
22760
22761// snapshotCollectionPreparer prepares a request to retrieve the next set of results.
22762// It returns nil if no more results exist.
22763func (sc SnapshotCollection) snapshotCollectionPreparer(ctx context.Context) (*http.Request, error) {
22764	if !sc.hasNextLink() {
22765		return nil, nil
22766	}
22767	return autorest.Prepare((&http.Request{}).WithContext(ctx),
22768		autorest.AsJSON(),
22769		autorest.AsGet(),
22770		autorest.WithBaseURL(to.String(sc.NextLink)))
22771}
22772
22773// SnapshotCollectionPage contains a page of Snapshot values.
22774type SnapshotCollectionPage struct {
22775	fn func(context.Context, SnapshotCollection) (SnapshotCollection, error)
22776	sc SnapshotCollection
22777}
22778
22779// NextWithContext advances to the next page of values.  If there was an error making
22780// the request the page does not advance and the error is returned.
22781func (page *SnapshotCollectionPage) NextWithContext(ctx context.Context) (err error) {
22782	if tracing.IsEnabled() {
22783		ctx = tracing.StartSpan(ctx, fqdn+"/SnapshotCollectionPage.NextWithContext")
22784		defer func() {
22785			sc := -1
22786			if page.Response().Response.Response != nil {
22787				sc = page.Response().Response.Response.StatusCode
22788			}
22789			tracing.EndSpan(ctx, sc, err)
22790		}()
22791	}
22792	for {
22793		next, err := page.fn(ctx, page.sc)
22794		if err != nil {
22795			return err
22796		}
22797		page.sc = next
22798		if !next.hasNextLink() || !next.IsEmpty() {
22799			break
22800		}
22801	}
22802	return nil
22803}
22804
22805// Next advances to the next page of values.  If there was an error making
22806// the request the page does not advance and the error is returned.
22807// Deprecated: Use NextWithContext() instead.
22808func (page *SnapshotCollectionPage) Next() error {
22809	return page.NextWithContext(context.Background())
22810}
22811
22812// NotDone returns true if the page enumeration should be started or is not yet complete.
22813func (page SnapshotCollectionPage) NotDone() bool {
22814	return !page.sc.IsEmpty()
22815}
22816
22817// Response returns the raw server response from the last page request.
22818func (page SnapshotCollectionPage) Response() SnapshotCollection {
22819	return page.sc
22820}
22821
22822// Values returns the slice of values for the current page or nil if there are no values.
22823func (page SnapshotCollectionPage) Values() []Snapshot {
22824	if page.sc.IsEmpty() {
22825		return nil
22826	}
22827	return *page.sc.Value
22828}
22829
22830// Creates a new instance of the SnapshotCollectionPage type.
22831func NewSnapshotCollectionPage(cur SnapshotCollection, getNextPage func(context.Context, SnapshotCollection) (SnapshotCollection, error)) SnapshotCollectionPage {
22832	return SnapshotCollectionPage{
22833		fn: getNextPage,
22834		sc: cur,
22835	}
22836}
22837
22838// SnapshotProperties snapshot resource specific properties
22839type SnapshotProperties struct {
22840	// Time - READ-ONLY; The time the snapshot was taken.
22841	Time *string `json:"time,omitempty"`
22842}
22843
22844// SnapshotRecoverySource specifies the web app that snapshot contents will be retrieved from.
22845type SnapshotRecoverySource struct {
22846	// Location - Geographical location of the source web app, e.g. SouthEastAsia, SouthCentralUS
22847	Location *string `json:"location,omitempty"`
22848	// ID - ARM resource ID of the source app.
22849	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
22850	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots.
22851	ID *string `json:"id,omitempty"`
22852}
22853
22854// SnapshotRestoreRequest details about app recovery operation.
22855type SnapshotRestoreRequest struct {
22856	// SnapshotRestoreRequestProperties - SnapshotRestoreRequest resource specific properties
22857	*SnapshotRestoreRequestProperties `json:"properties,omitempty"`
22858	// ID - READ-ONLY; Resource Id.
22859	ID *string `json:"id,omitempty"`
22860	// Name - READ-ONLY; Resource Name.
22861	Name *string `json:"name,omitempty"`
22862	// Kind - Kind of resource.
22863	Kind *string `json:"kind,omitempty"`
22864	// Type - READ-ONLY; Resource type.
22865	Type *string `json:"type,omitempty"`
22866}
22867
22868// MarshalJSON is the custom marshaler for SnapshotRestoreRequest.
22869func (srr SnapshotRestoreRequest) MarshalJSON() ([]byte, error) {
22870	objectMap := make(map[string]interface{})
22871	if srr.SnapshotRestoreRequestProperties != nil {
22872		objectMap["properties"] = srr.SnapshotRestoreRequestProperties
22873	}
22874	if srr.Kind != nil {
22875		objectMap["kind"] = srr.Kind
22876	}
22877	return json.Marshal(objectMap)
22878}
22879
22880// UnmarshalJSON is the custom unmarshaler for SnapshotRestoreRequest struct.
22881func (srr *SnapshotRestoreRequest) UnmarshalJSON(body []byte) error {
22882	var m map[string]*json.RawMessage
22883	err := json.Unmarshal(body, &m)
22884	if err != nil {
22885		return err
22886	}
22887	for k, v := range m {
22888		switch k {
22889		case "properties":
22890			if v != nil {
22891				var snapshotRestoreRequestProperties SnapshotRestoreRequestProperties
22892				err = json.Unmarshal(*v, &snapshotRestoreRequestProperties)
22893				if err != nil {
22894					return err
22895				}
22896				srr.SnapshotRestoreRequestProperties = &snapshotRestoreRequestProperties
22897			}
22898		case "id":
22899			if v != nil {
22900				var ID string
22901				err = json.Unmarshal(*v, &ID)
22902				if err != nil {
22903					return err
22904				}
22905				srr.ID = &ID
22906			}
22907		case "name":
22908			if v != nil {
22909				var name string
22910				err = json.Unmarshal(*v, &name)
22911				if err != nil {
22912					return err
22913				}
22914				srr.Name = &name
22915			}
22916		case "kind":
22917			if v != nil {
22918				var kind string
22919				err = json.Unmarshal(*v, &kind)
22920				if err != nil {
22921					return err
22922				}
22923				srr.Kind = &kind
22924			}
22925		case "type":
22926			if v != nil {
22927				var typeVar string
22928				err = json.Unmarshal(*v, &typeVar)
22929				if err != nil {
22930					return err
22931				}
22932				srr.Type = &typeVar
22933			}
22934		}
22935	}
22936
22937	return nil
22938}
22939
22940// SnapshotRestoreRequestProperties snapshotRestoreRequest resource specific properties
22941type SnapshotRestoreRequestProperties struct {
22942	// SnapshotTime - Point in time in which the app restore should be done, formatted as a DateTime string.
22943	SnapshotTime *string `json:"snapshotTime,omitempty"`
22944	// RecoverySource - Optional. Specifies the web app that snapshot contents will be retrieved from.
22945	// If empty, the targeted web app will be used as the source.
22946	RecoverySource *SnapshotRecoverySource `json:"recoverySource,omitempty"`
22947	// Overwrite - If <code>true</code> the restore operation can overwrite source app; otherwise, <code>false</code>.
22948	Overwrite *bool `json:"overwrite,omitempty"`
22949	// RecoverConfiguration - If true, site configuration, in addition to content, will be reverted.
22950	RecoverConfiguration *bool `json:"recoverConfiguration,omitempty"`
22951	// IgnoreConflictingHostNames - If true, custom hostname conflicts will be ignored when recovering to a target web app.
22952	// This setting is only necessary when RecoverConfiguration is enabled.
22953	IgnoreConflictingHostNames *bool `json:"ignoreConflictingHostNames,omitempty"`
22954	// UseDRSecondary - If true, the snapshot is retrieved from DRSecondary endpoint.
22955	UseDRSecondary *bool `json:"useDRSecondary,omitempty"`
22956}
22957
22958// Solution class Representing Solution for problems detected.
22959type Solution struct {
22960	// ID - Solution Id.
22961	ID *float64 `json:"id,omitempty"`
22962	// DisplayName - Display Name of the solution
22963	DisplayName *string `json:"displayName,omitempty"`
22964	// Order - Order of the solution.
22965	Order *float64 `json:"order,omitempty"`
22966	// Description - Description of the solution
22967	Description *string `json:"description,omitempty"`
22968	// Type - Type of Solution. Possible values include: 'QuickSolution', 'DeepInvestigation', 'BestPractices'
22969	Type SolutionType `json:"type,omitempty"`
22970	// Data - Solution Data.
22971	Data *[][]NameValuePair `json:"data,omitempty"`
22972	// Metadata - Solution Metadata.
22973	Metadata *[][]NameValuePair `json:"metadata,omitempty"`
22974}
22975
22976// SourceControl the source control OAuth token.
22977type SourceControl struct {
22978	autorest.Response `json:"-"`
22979	// SourceControlProperties - SourceControl resource specific properties
22980	*SourceControlProperties `json:"properties,omitempty"`
22981	// ID - READ-ONLY; Resource Id.
22982	ID *string `json:"id,omitempty"`
22983	// Name - READ-ONLY; Resource Name.
22984	Name *string `json:"name,omitempty"`
22985	// Kind - Kind of resource.
22986	Kind *string `json:"kind,omitempty"`
22987	// Type - READ-ONLY; Resource type.
22988	Type *string `json:"type,omitempty"`
22989}
22990
22991// MarshalJSON is the custom marshaler for SourceControl.
22992func (sc SourceControl) MarshalJSON() ([]byte, error) {
22993	objectMap := make(map[string]interface{})
22994	if sc.SourceControlProperties != nil {
22995		objectMap["properties"] = sc.SourceControlProperties
22996	}
22997	if sc.Kind != nil {
22998		objectMap["kind"] = sc.Kind
22999	}
23000	return json.Marshal(objectMap)
23001}
23002
23003// UnmarshalJSON is the custom unmarshaler for SourceControl struct.
23004func (sc *SourceControl) UnmarshalJSON(body []byte) error {
23005	var m map[string]*json.RawMessage
23006	err := json.Unmarshal(body, &m)
23007	if err != nil {
23008		return err
23009	}
23010	for k, v := range m {
23011		switch k {
23012		case "properties":
23013			if v != nil {
23014				var sourceControlProperties SourceControlProperties
23015				err = json.Unmarshal(*v, &sourceControlProperties)
23016				if err != nil {
23017					return err
23018				}
23019				sc.SourceControlProperties = &sourceControlProperties
23020			}
23021		case "id":
23022			if v != nil {
23023				var ID string
23024				err = json.Unmarshal(*v, &ID)
23025				if err != nil {
23026					return err
23027				}
23028				sc.ID = &ID
23029			}
23030		case "name":
23031			if v != nil {
23032				var name string
23033				err = json.Unmarshal(*v, &name)
23034				if err != nil {
23035					return err
23036				}
23037				sc.Name = &name
23038			}
23039		case "kind":
23040			if v != nil {
23041				var kind string
23042				err = json.Unmarshal(*v, &kind)
23043				if err != nil {
23044					return err
23045				}
23046				sc.Kind = &kind
23047			}
23048		case "type":
23049			if v != nil {
23050				var typeVar string
23051				err = json.Unmarshal(*v, &typeVar)
23052				if err != nil {
23053					return err
23054				}
23055				sc.Type = &typeVar
23056			}
23057		}
23058	}
23059
23060	return nil
23061}
23062
23063// SourceControlCollection collection of source controls.
23064type SourceControlCollection struct {
23065	autorest.Response `json:"-"`
23066	// Value - Collection of resources.
23067	Value *[]SourceControl `json:"value,omitempty"`
23068	// NextLink - READ-ONLY; Link to next page of resources.
23069	NextLink *string `json:"nextLink,omitempty"`
23070}
23071
23072// MarshalJSON is the custom marshaler for SourceControlCollection.
23073func (scc SourceControlCollection) MarshalJSON() ([]byte, error) {
23074	objectMap := make(map[string]interface{})
23075	if scc.Value != nil {
23076		objectMap["value"] = scc.Value
23077	}
23078	return json.Marshal(objectMap)
23079}
23080
23081// SourceControlCollectionIterator provides access to a complete listing of SourceControl values.
23082type SourceControlCollectionIterator struct {
23083	i    int
23084	page SourceControlCollectionPage
23085}
23086
23087// NextWithContext advances to the next value.  If there was an error making
23088// the request the iterator does not advance and the error is returned.
23089func (iter *SourceControlCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23090	if tracing.IsEnabled() {
23091		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionIterator.NextWithContext")
23092		defer func() {
23093			sc := -1
23094			if iter.Response().Response.Response != nil {
23095				sc = iter.Response().Response.Response.StatusCode
23096			}
23097			tracing.EndSpan(ctx, sc, err)
23098		}()
23099	}
23100	iter.i++
23101	if iter.i < len(iter.page.Values()) {
23102		return nil
23103	}
23104	err = iter.page.NextWithContext(ctx)
23105	if err != nil {
23106		iter.i--
23107		return err
23108	}
23109	iter.i = 0
23110	return nil
23111}
23112
23113// Next advances to the next value.  If there was an error making
23114// the request the iterator does not advance and the error is returned.
23115// Deprecated: Use NextWithContext() instead.
23116func (iter *SourceControlCollectionIterator) Next() error {
23117	return iter.NextWithContext(context.Background())
23118}
23119
23120// NotDone returns true if the enumeration should be started or is not yet complete.
23121func (iter SourceControlCollectionIterator) NotDone() bool {
23122	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23123}
23124
23125// Response returns the raw server response from the last page request.
23126func (iter SourceControlCollectionIterator) Response() SourceControlCollection {
23127	return iter.page.Response()
23128}
23129
23130// Value returns the current value or a zero-initialized value if the
23131// iterator has advanced beyond the end of the collection.
23132func (iter SourceControlCollectionIterator) Value() SourceControl {
23133	if !iter.page.NotDone() {
23134		return SourceControl{}
23135	}
23136	return iter.page.Values()[iter.i]
23137}
23138
23139// Creates a new instance of the SourceControlCollectionIterator type.
23140func NewSourceControlCollectionIterator(page SourceControlCollectionPage) SourceControlCollectionIterator {
23141	return SourceControlCollectionIterator{page: page}
23142}
23143
23144// IsEmpty returns true if the ListResult contains no values.
23145func (scc SourceControlCollection) IsEmpty() bool {
23146	return scc.Value == nil || len(*scc.Value) == 0
23147}
23148
23149// hasNextLink returns true if the NextLink is not empty.
23150func (scc SourceControlCollection) hasNextLink() bool {
23151	return scc.NextLink != nil && len(*scc.NextLink) != 0
23152}
23153
23154// sourceControlCollectionPreparer prepares a request to retrieve the next set of results.
23155// It returns nil if no more results exist.
23156func (scc SourceControlCollection) sourceControlCollectionPreparer(ctx context.Context) (*http.Request, error) {
23157	if !scc.hasNextLink() {
23158		return nil, nil
23159	}
23160	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23161		autorest.AsJSON(),
23162		autorest.AsGet(),
23163		autorest.WithBaseURL(to.String(scc.NextLink)))
23164}
23165
23166// SourceControlCollectionPage contains a page of SourceControl values.
23167type SourceControlCollectionPage struct {
23168	fn  func(context.Context, SourceControlCollection) (SourceControlCollection, error)
23169	scc SourceControlCollection
23170}
23171
23172// NextWithContext advances to the next page of values.  If there was an error making
23173// the request the page does not advance and the error is returned.
23174func (page *SourceControlCollectionPage) NextWithContext(ctx context.Context) (err error) {
23175	if tracing.IsEnabled() {
23176		ctx = tracing.StartSpan(ctx, fqdn+"/SourceControlCollectionPage.NextWithContext")
23177		defer func() {
23178			sc := -1
23179			if page.Response().Response.Response != nil {
23180				sc = page.Response().Response.Response.StatusCode
23181			}
23182			tracing.EndSpan(ctx, sc, err)
23183		}()
23184	}
23185	for {
23186		next, err := page.fn(ctx, page.scc)
23187		if err != nil {
23188			return err
23189		}
23190		page.scc = next
23191		if !next.hasNextLink() || !next.IsEmpty() {
23192			break
23193		}
23194	}
23195	return nil
23196}
23197
23198// Next advances to the next page of values.  If there was an error making
23199// the request the page does not advance and the error is returned.
23200// Deprecated: Use NextWithContext() instead.
23201func (page *SourceControlCollectionPage) Next() error {
23202	return page.NextWithContext(context.Background())
23203}
23204
23205// NotDone returns true if the page enumeration should be started or is not yet complete.
23206func (page SourceControlCollectionPage) NotDone() bool {
23207	return !page.scc.IsEmpty()
23208}
23209
23210// Response returns the raw server response from the last page request.
23211func (page SourceControlCollectionPage) Response() SourceControlCollection {
23212	return page.scc
23213}
23214
23215// Values returns the slice of values for the current page or nil if there are no values.
23216func (page SourceControlCollectionPage) Values() []SourceControl {
23217	if page.scc.IsEmpty() {
23218		return nil
23219	}
23220	return *page.scc.Value
23221}
23222
23223// Creates a new instance of the SourceControlCollectionPage type.
23224func NewSourceControlCollectionPage(cur SourceControlCollection, getNextPage func(context.Context, SourceControlCollection) (SourceControlCollection, error)) SourceControlCollectionPage {
23225	return SourceControlCollectionPage{
23226		fn:  getNextPage,
23227		scc: cur,
23228	}
23229}
23230
23231// SourceControlProperties sourceControl resource specific properties
23232type SourceControlProperties struct {
23233	// Token - OAuth access token.
23234	Token *string `json:"token,omitempty"`
23235	// TokenSecret - OAuth access token secret.
23236	TokenSecret *string `json:"tokenSecret,omitempty"`
23237	// RefreshToken - OAuth refresh token.
23238	RefreshToken *string `json:"refreshToken,omitempty"`
23239	// ExpirationTime - OAuth token expiration.
23240	ExpirationTime *date.Time `json:"expirationTime,omitempty"`
23241}
23242
23243// StackMajorVersion application stack major version.
23244type StackMajorVersion struct {
23245	// DisplayVersion - Application stack major version (display only).
23246	DisplayVersion *string `json:"displayVersion,omitempty"`
23247	// RuntimeVersion - Application stack major version (runtime only).
23248	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
23249	// IsDefault - <code>true</code> if this is the default major version; otherwise, <code>false</code>.
23250	IsDefault *bool `json:"isDefault,omitempty"`
23251	// MinorVersions - Minor versions associated with the major version.
23252	MinorVersions *[]StackMinorVersion `json:"minorVersions,omitempty"`
23253	// ApplicationInsights - <code>true</code> if this supports Application Insights; otherwise, <code>false</code>.
23254	ApplicationInsights *bool `json:"applicationInsights,omitempty"`
23255	// IsPreview - <code>true</code> if this stack is in Preview, otherwise <code>false</code>.
23256	IsPreview *bool `json:"isPreview,omitempty"`
23257	// IsDeprecated - <code>true</code> if this stack has been deprecated, otherwise <code>false</code>.
23258	IsDeprecated *bool `json:"isDeprecated,omitempty"`
23259	// IsHidden - <code>true</code> if this stack should be hidden for new customers on portal, otherwise <code>false</code>.
23260	IsHidden *bool `json:"isHidden,omitempty"`
23261}
23262
23263// StackMinorVersion application stack minor version.
23264type StackMinorVersion struct {
23265	// DisplayVersion - Application stack minor version (display only).
23266	DisplayVersion *string `json:"displayVersion,omitempty"`
23267	// RuntimeVersion - Application stack minor version (runtime only).
23268	RuntimeVersion *string `json:"runtimeVersion,omitempty"`
23269	// IsDefault - <code>true</code> if this is the default minor version; otherwise, <code>false</code>.
23270	IsDefault *bool `json:"isDefault,omitempty"`
23271	// IsRemoteDebuggingEnabled - <code>true</code> if this supports Remote Debugging, otherwise <code>false</code>.
23272	IsRemoteDebuggingEnabled *bool `json:"isRemoteDebuggingEnabled,omitempty"`
23273}
23274
23275// StampCapacity stamp capacity information.
23276type StampCapacity struct {
23277	// Name - Name of the stamp.
23278	Name *string `json:"name,omitempty"`
23279	// AvailableCapacity - Available capacity (# of machines, bytes of storage etc...).
23280	AvailableCapacity *int64 `json:"availableCapacity,omitempty"`
23281	// TotalCapacity - Total capacity (# of machines, bytes of storage etc...).
23282	TotalCapacity *int64 `json:"totalCapacity,omitempty"`
23283	// Unit - Name of the unit.
23284	Unit *string `json:"unit,omitempty"`
23285	// ComputeMode - Shared/dedicated workers. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
23286	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
23287	// WorkerSize - Size of the machines. Possible values include: 'WorkerSizeOptionsSmall', 'WorkerSizeOptionsMedium', 'WorkerSizeOptionsLarge', 'WorkerSizeOptionsD1', 'WorkerSizeOptionsD2', 'WorkerSizeOptionsD3', 'WorkerSizeOptionsNestedSmall', 'WorkerSizeOptionsDefault'
23288	WorkerSize WorkerSizeOptions `json:"workerSize,omitempty"`
23289	// WorkerSizeID - Size ID of machines:
23290	// 0 - Small
23291	// 1 - Medium
23292	// 2 - Large
23293	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
23294	// ExcludeFromCapacityAllocation - If <code>true</code>, it includes basic apps.
23295	// Basic apps are not used for capacity allocation.
23296	ExcludeFromCapacityAllocation *bool `json:"excludeFromCapacityAllocation,omitempty"`
23297	// IsApplicableForAllComputeModes - <code>true</code> if capacity is applicable for all apps; otherwise, <code>false</code>.
23298	IsApplicableForAllComputeModes *bool `json:"isApplicableForAllComputeModes,omitempty"`
23299	// SiteMode - Shared or Dedicated.
23300	SiteMode *string `json:"siteMode,omitempty"`
23301	// IsLinux - Is this a linux stamp capacity
23302	IsLinux *bool `json:"isLinux,omitempty"`
23303}
23304
23305// StampCapacityCollection collection of stamp capacities.
23306type StampCapacityCollection struct {
23307	autorest.Response `json:"-"`
23308	// Value - Collection of resources.
23309	Value *[]StampCapacity `json:"value,omitempty"`
23310	// NextLink - READ-ONLY; Link to next page of resources.
23311	NextLink *string `json:"nextLink,omitempty"`
23312}
23313
23314// MarshalJSON is the custom marshaler for StampCapacityCollection.
23315func (scc StampCapacityCollection) MarshalJSON() ([]byte, error) {
23316	objectMap := make(map[string]interface{})
23317	if scc.Value != nil {
23318		objectMap["value"] = scc.Value
23319	}
23320	return json.Marshal(objectMap)
23321}
23322
23323// StampCapacityCollectionIterator provides access to a complete listing of StampCapacity values.
23324type StampCapacityCollectionIterator struct {
23325	i    int
23326	page StampCapacityCollectionPage
23327}
23328
23329// NextWithContext advances to the next value.  If there was an error making
23330// the request the iterator does not advance and the error is returned.
23331func (iter *StampCapacityCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23332	if tracing.IsEnabled() {
23333		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionIterator.NextWithContext")
23334		defer func() {
23335			sc := -1
23336			if iter.Response().Response.Response != nil {
23337				sc = iter.Response().Response.Response.StatusCode
23338			}
23339			tracing.EndSpan(ctx, sc, err)
23340		}()
23341	}
23342	iter.i++
23343	if iter.i < len(iter.page.Values()) {
23344		return nil
23345	}
23346	err = iter.page.NextWithContext(ctx)
23347	if err != nil {
23348		iter.i--
23349		return err
23350	}
23351	iter.i = 0
23352	return nil
23353}
23354
23355// Next advances to the next value.  If there was an error making
23356// the request the iterator does not advance and the error is returned.
23357// Deprecated: Use NextWithContext() instead.
23358func (iter *StampCapacityCollectionIterator) Next() error {
23359	return iter.NextWithContext(context.Background())
23360}
23361
23362// NotDone returns true if the enumeration should be started or is not yet complete.
23363func (iter StampCapacityCollectionIterator) NotDone() bool {
23364	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23365}
23366
23367// Response returns the raw server response from the last page request.
23368func (iter StampCapacityCollectionIterator) Response() StampCapacityCollection {
23369	return iter.page.Response()
23370}
23371
23372// Value returns the current value or a zero-initialized value if the
23373// iterator has advanced beyond the end of the collection.
23374func (iter StampCapacityCollectionIterator) Value() StampCapacity {
23375	if !iter.page.NotDone() {
23376		return StampCapacity{}
23377	}
23378	return iter.page.Values()[iter.i]
23379}
23380
23381// Creates a new instance of the StampCapacityCollectionIterator type.
23382func NewStampCapacityCollectionIterator(page StampCapacityCollectionPage) StampCapacityCollectionIterator {
23383	return StampCapacityCollectionIterator{page: page}
23384}
23385
23386// IsEmpty returns true if the ListResult contains no values.
23387func (scc StampCapacityCollection) IsEmpty() bool {
23388	return scc.Value == nil || len(*scc.Value) == 0
23389}
23390
23391// hasNextLink returns true if the NextLink is not empty.
23392func (scc StampCapacityCollection) hasNextLink() bool {
23393	return scc.NextLink != nil && len(*scc.NextLink) != 0
23394}
23395
23396// stampCapacityCollectionPreparer prepares a request to retrieve the next set of results.
23397// It returns nil if no more results exist.
23398func (scc StampCapacityCollection) stampCapacityCollectionPreparer(ctx context.Context) (*http.Request, error) {
23399	if !scc.hasNextLink() {
23400		return nil, nil
23401	}
23402	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23403		autorest.AsJSON(),
23404		autorest.AsGet(),
23405		autorest.WithBaseURL(to.String(scc.NextLink)))
23406}
23407
23408// StampCapacityCollectionPage contains a page of StampCapacity values.
23409type StampCapacityCollectionPage struct {
23410	fn  func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)
23411	scc StampCapacityCollection
23412}
23413
23414// NextWithContext advances to the next page of values.  If there was an error making
23415// the request the page does not advance and the error is returned.
23416func (page *StampCapacityCollectionPage) NextWithContext(ctx context.Context) (err error) {
23417	if tracing.IsEnabled() {
23418		ctx = tracing.StartSpan(ctx, fqdn+"/StampCapacityCollectionPage.NextWithContext")
23419		defer func() {
23420			sc := -1
23421			if page.Response().Response.Response != nil {
23422				sc = page.Response().Response.Response.StatusCode
23423			}
23424			tracing.EndSpan(ctx, sc, err)
23425		}()
23426	}
23427	for {
23428		next, err := page.fn(ctx, page.scc)
23429		if err != nil {
23430			return err
23431		}
23432		page.scc = next
23433		if !next.hasNextLink() || !next.IsEmpty() {
23434			break
23435		}
23436	}
23437	return nil
23438}
23439
23440// Next advances to the next page of values.  If there was an error making
23441// the request the page does not advance and the error is returned.
23442// Deprecated: Use NextWithContext() instead.
23443func (page *StampCapacityCollectionPage) Next() error {
23444	return page.NextWithContext(context.Background())
23445}
23446
23447// NotDone returns true if the page enumeration should be started or is not yet complete.
23448func (page StampCapacityCollectionPage) NotDone() bool {
23449	return !page.scc.IsEmpty()
23450}
23451
23452// Response returns the raw server response from the last page request.
23453func (page StampCapacityCollectionPage) Response() StampCapacityCollection {
23454	return page.scc
23455}
23456
23457// Values returns the slice of values for the current page or nil if there are no values.
23458func (page StampCapacityCollectionPage) Values() []StampCapacity {
23459	if page.scc.IsEmpty() {
23460		return nil
23461	}
23462	return *page.scc.Value
23463}
23464
23465// Creates a new instance of the StampCapacityCollectionPage type.
23466func NewStampCapacityCollectionPage(cur StampCapacityCollection, getNextPage func(context.Context, StampCapacityCollection) (StampCapacityCollection, error)) StampCapacityCollectionPage {
23467	return StampCapacityCollectionPage{
23468		fn:  getNextPage,
23469		scc: cur,
23470	}
23471}
23472
23473// StaticSite a static site.
23474type StaticSite struct {
23475	// DefaultHostname - READ-ONLY; The default autogenerated hostname for the static site.
23476	DefaultHostname *string `json:"defaultHostname,omitempty"`
23477	// RepositoryURL - URL for the repository of the static site.
23478	RepositoryURL *string `json:"repositoryUrl,omitempty"`
23479	// Branch - The target branch in the repository.
23480	Branch *string `json:"branch,omitempty"`
23481	// CustomDomains - READ-ONLY; The custom domains associated with this static site.
23482	CustomDomains *[]string `json:"customDomains,omitempty"`
23483	// RepositoryToken - A user's github repository token. This is used to setup the Github Actions workflow file and API secrets.
23484	RepositoryToken *string `json:"repositoryToken,omitempty"`
23485	// BuildProperties - Build properties to configure on the repository.
23486	BuildProperties *StaticSiteBuildProperties `json:"buildProperties,omitempty"`
23487}
23488
23489// MarshalJSON is the custom marshaler for StaticSite.
23490func (ss StaticSite) MarshalJSON() ([]byte, error) {
23491	objectMap := make(map[string]interface{})
23492	if ss.RepositoryURL != nil {
23493		objectMap["repositoryUrl"] = ss.RepositoryURL
23494	}
23495	if ss.Branch != nil {
23496		objectMap["branch"] = ss.Branch
23497	}
23498	if ss.RepositoryToken != nil {
23499		objectMap["repositoryToken"] = ss.RepositoryToken
23500	}
23501	if ss.BuildProperties != nil {
23502		objectMap["buildProperties"] = ss.BuildProperties
23503	}
23504	return json.Marshal(objectMap)
23505}
23506
23507// StaticSiteARMResource static Site ARM resource.
23508type StaticSiteARMResource struct {
23509	autorest.Response `json:"-"`
23510	// StaticSite - Core resource properties
23511	*StaticSite `json:"properties,omitempty"`
23512	Sku         *SkuDescription `json:"sku,omitempty"`
23513	// ID - READ-ONLY; Resource Id.
23514	ID *string `json:"id,omitempty"`
23515	// Name - READ-ONLY; Resource Name.
23516	Name *string `json:"name,omitempty"`
23517	// Kind - Kind of resource.
23518	Kind *string `json:"kind,omitempty"`
23519	// Location - Resource Location.
23520	Location *string `json:"location,omitempty"`
23521	// Type - READ-ONLY; Resource type.
23522	Type *string `json:"type,omitempty"`
23523	// Tags - Resource tags.
23524	Tags map[string]*string `json:"tags"`
23525}
23526
23527// MarshalJSON is the custom marshaler for StaticSiteARMResource.
23528func (ssar StaticSiteARMResource) MarshalJSON() ([]byte, error) {
23529	objectMap := make(map[string]interface{})
23530	if ssar.StaticSite != nil {
23531		objectMap["properties"] = ssar.StaticSite
23532	}
23533	if ssar.Sku != nil {
23534		objectMap["sku"] = ssar.Sku
23535	}
23536	if ssar.Kind != nil {
23537		objectMap["kind"] = ssar.Kind
23538	}
23539	if ssar.Location != nil {
23540		objectMap["location"] = ssar.Location
23541	}
23542	if ssar.Tags != nil {
23543		objectMap["tags"] = ssar.Tags
23544	}
23545	return json.Marshal(objectMap)
23546}
23547
23548// UnmarshalJSON is the custom unmarshaler for StaticSiteARMResource struct.
23549func (ssar *StaticSiteARMResource) UnmarshalJSON(body []byte) error {
23550	var m map[string]*json.RawMessage
23551	err := json.Unmarshal(body, &m)
23552	if err != nil {
23553		return err
23554	}
23555	for k, v := range m {
23556		switch k {
23557		case "properties":
23558			if v != nil {
23559				var staticSite StaticSite
23560				err = json.Unmarshal(*v, &staticSite)
23561				if err != nil {
23562					return err
23563				}
23564				ssar.StaticSite = &staticSite
23565			}
23566		case "sku":
23567			if v != nil {
23568				var sku SkuDescription
23569				err = json.Unmarshal(*v, &sku)
23570				if err != nil {
23571					return err
23572				}
23573				ssar.Sku = &sku
23574			}
23575		case "id":
23576			if v != nil {
23577				var ID string
23578				err = json.Unmarshal(*v, &ID)
23579				if err != nil {
23580					return err
23581				}
23582				ssar.ID = &ID
23583			}
23584		case "name":
23585			if v != nil {
23586				var name string
23587				err = json.Unmarshal(*v, &name)
23588				if err != nil {
23589					return err
23590				}
23591				ssar.Name = &name
23592			}
23593		case "kind":
23594			if v != nil {
23595				var kind string
23596				err = json.Unmarshal(*v, &kind)
23597				if err != nil {
23598					return err
23599				}
23600				ssar.Kind = &kind
23601			}
23602		case "location":
23603			if v != nil {
23604				var location string
23605				err = json.Unmarshal(*v, &location)
23606				if err != nil {
23607					return err
23608				}
23609				ssar.Location = &location
23610			}
23611		case "type":
23612			if v != nil {
23613				var typeVar string
23614				err = json.Unmarshal(*v, &typeVar)
23615				if err != nil {
23616					return err
23617				}
23618				ssar.Type = &typeVar
23619			}
23620		case "tags":
23621			if v != nil {
23622				var tags map[string]*string
23623				err = json.Unmarshal(*v, &tags)
23624				if err != nil {
23625					return err
23626				}
23627				ssar.Tags = tags
23628			}
23629		}
23630	}
23631
23632	return nil
23633}
23634
23635// StaticSiteBuildARMResource static Site Build ARM resource.
23636type StaticSiteBuildARMResource struct {
23637	autorest.Response `json:"-"`
23638	// StaticSiteBuildARMResourceProperties - StaticSiteBuildARMResource resource specific properties
23639	*StaticSiteBuildARMResourceProperties `json:"properties,omitempty"`
23640	// ID - READ-ONLY; Resource Id.
23641	ID *string `json:"id,omitempty"`
23642	// Name - READ-ONLY; Resource Name.
23643	Name *string `json:"name,omitempty"`
23644	// Kind - Kind of resource.
23645	Kind *string `json:"kind,omitempty"`
23646	// Type - READ-ONLY; Resource type.
23647	Type *string `json:"type,omitempty"`
23648}
23649
23650// MarshalJSON is the custom marshaler for StaticSiteBuildARMResource.
23651func (ssbar StaticSiteBuildARMResource) MarshalJSON() ([]byte, error) {
23652	objectMap := make(map[string]interface{})
23653	if ssbar.StaticSiteBuildARMResourceProperties != nil {
23654		objectMap["properties"] = ssbar.StaticSiteBuildARMResourceProperties
23655	}
23656	if ssbar.Kind != nil {
23657		objectMap["kind"] = ssbar.Kind
23658	}
23659	return json.Marshal(objectMap)
23660}
23661
23662// UnmarshalJSON is the custom unmarshaler for StaticSiteBuildARMResource struct.
23663func (ssbar *StaticSiteBuildARMResource) UnmarshalJSON(body []byte) error {
23664	var m map[string]*json.RawMessage
23665	err := json.Unmarshal(body, &m)
23666	if err != nil {
23667		return err
23668	}
23669	for k, v := range m {
23670		switch k {
23671		case "properties":
23672			if v != nil {
23673				var staticSiteBuildARMResourceProperties StaticSiteBuildARMResourceProperties
23674				err = json.Unmarshal(*v, &staticSiteBuildARMResourceProperties)
23675				if err != nil {
23676					return err
23677				}
23678				ssbar.StaticSiteBuildARMResourceProperties = &staticSiteBuildARMResourceProperties
23679			}
23680		case "id":
23681			if v != nil {
23682				var ID string
23683				err = json.Unmarshal(*v, &ID)
23684				if err != nil {
23685					return err
23686				}
23687				ssbar.ID = &ID
23688			}
23689		case "name":
23690			if v != nil {
23691				var name string
23692				err = json.Unmarshal(*v, &name)
23693				if err != nil {
23694					return err
23695				}
23696				ssbar.Name = &name
23697			}
23698		case "kind":
23699			if v != nil {
23700				var kind string
23701				err = json.Unmarshal(*v, &kind)
23702				if err != nil {
23703					return err
23704				}
23705				ssbar.Kind = &kind
23706			}
23707		case "type":
23708			if v != nil {
23709				var typeVar string
23710				err = json.Unmarshal(*v, &typeVar)
23711				if err != nil {
23712					return err
23713				}
23714				ssbar.Type = &typeVar
23715			}
23716		}
23717	}
23718
23719	return nil
23720}
23721
23722// StaticSiteBuildARMResourceProperties staticSiteBuildARMResource resource specific properties
23723type StaticSiteBuildARMResourceProperties struct {
23724	// BuildID - READ-ONLY; An identifier for the static site build.
23725	BuildID *string `json:"buildId,omitempty"`
23726	// SourceBranch - READ-ONLY; The source branch.
23727	SourceBranch *string `json:"sourceBranch,omitempty"`
23728	// PullRequestTitle - READ-ONLY; The title of a pull request that a static site build is related to.
23729	PullRequestTitle *string `json:"pullRequestTitle,omitempty"`
23730	// Hostname - READ-ONLY; The hostname for a static site build.
23731	Hostname *string `json:"hostname,omitempty"`
23732	// CreatedTimeUtc - READ-ONLY; When this build was created.
23733	CreatedTimeUtc *date.Time `json:"createdTimeUtc,omitempty"`
23734	// LastUpdatedOn - READ-ONLY; When this build was updated.
23735	LastUpdatedOn *date.Time `json:"lastUpdatedOn,omitempty"`
23736	// Status - READ-ONLY; The status of the static site build. Possible values include: 'BuildStatusWaitingForDeployment', 'BuildStatusUploading', 'BuildStatusDeploying', 'BuildStatusReady', 'BuildStatusFailed', 'BuildStatusDeleting', 'BuildStatusDetached'
23737	Status BuildStatus `json:"status,omitempty"`
23738}
23739
23740// StaticSiteBuildCollection collection of static site builds.
23741type StaticSiteBuildCollection struct {
23742	autorest.Response `json:"-"`
23743	// Value - Collection of resources.
23744	Value *[]StaticSiteBuildARMResource `json:"value,omitempty"`
23745	// NextLink - READ-ONLY; Link to next page of resources.
23746	NextLink *string `json:"nextLink,omitempty"`
23747}
23748
23749// MarshalJSON is the custom marshaler for StaticSiteBuildCollection.
23750func (ssbc StaticSiteBuildCollection) MarshalJSON() ([]byte, error) {
23751	objectMap := make(map[string]interface{})
23752	if ssbc.Value != nil {
23753		objectMap["value"] = ssbc.Value
23754	}
23755	return json.Marshal(objectMap)
23756}
23757
23758// StaticSiteBuildCollectionIterator provides access to a complete listing of StaticSiteBuildARMResource
23759// values.
23760type StaticSiteBuildCollectionIterator struct {
23761	i    int
23762	page StaticSiteBuildCollectionPage
23763}
23764
23765// NextWithContext advances to the next value.  If there was an error making
23766// the request the iterator does not advance and the error is returned.
23767func (iter *StaticSiteBuildCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23768	if tracing.IsEnabled() {
23769		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionIterator.NextWithContext")
23770		defer func() {
23771			sc := -1
23772			if iter.Response().Response.Response != nil {
23773				sc = iter.Response().Response.Response.StatusCode
23774			}
23775			tracing.EndSpan(ctx, sc, err)
23776		}()
23777	}
23778	iter.i++
23779	if iter.i < len(iter.page.Values()) {
23780		return nil
23781	}
23782	err = iter.page.NextWithContext(ctx)
23783	if err != nil {
23784		iter.i--
23785		return err
23786	}
23787	iter.i = 0
23788	return nil
23789}
23790
23791// Next advances to the next value.  If there was an error making
23792// the request the iterator does not advance and the error is returned.
23793// Deprecated: Use NextWithContext() instead.
23794func (iter *StaticSiteBuildCollectionIterator) Next() error {
23795	return iter.NextWithContext(context.Background())
23796}
23797
23798// NotDone returns true if the enumeration should be started or is not yet complete.
23799func (iter StaticSiteBuildCollectionIterator) NotDone() bool {
23800	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23801}
23802
23803// Response returns the raw server response from the last page request.
23804func (iter StaticSiteBuildCollectionIterator) Response() StaticSiteBuildCollection {
23805	return iter.page.Response()
23806}
23807
23808// Value returns the current value or a zero-initialized value if the
23809// iterator has advanced beyond the end of the collection.
23810func (iter StaticSiteBuildCollectionIterator) Value() StaticSiteBuildARMResource {
23811	if !iter.page.NotDone() {
23812		return StaticSiteBuildARMResource{}
23813	}
23814	return iter.page.Values()[iter.i]
23815}
23816
23817// Creates a new instance of the StaticSiteBuildCollectionIterator type.
23818func NewStaticSiteBuildCollectionIterator(page StaticSiteBuildCollectionPage) StaticSiteBuildCollectionIterator {
23819	return StaticSiteBuildCollectionIterator{page: page}
23820}
23821
23822// IsEmpty returns true if the ListResult contains no values.
23823func (ssbc StaticSiteBuildCollection) IsEmpty() bool {
23824	return ssbc.Value == nil || len(*ssbc.Value) == 0
23825}
23826
23827// hasNextLink returns true if the NextLink is not empty.
23828func (ssbc StaticSiteBuildCollection) hasNextLink() bool {
23829	return ssbc.NextLink != nil && len(*ssbc.NextLink) != 0
23830}
23831
23832// staticSiteBuildCollectionPreparer prepares a request to retrieve the next set of results.
23833// It returns nil if no more results exist.
23834func (ssbc StaticSiteBuildCollection) staticSiteBuildCollectionPreparer(ctx context.Context) (*http.Request, error) {
23835	if !ssbc.hasNextLink() {
23836		return nil, nil
23837	}
23838	return autorest.Prepare((&http.Request{}).WithContext(ctx),
23839		autorest.AsJSON(),
23840		autorest.AsGet(),
23841		autorest.WithBaseURL(to.String(ssbc.NextLink)))
23842}
23843
23844// StaticSiteBuildCollectionPage contains a page of StaticSiteBuildARMResource values.
23845type StaticSiteBuildCollectionPage struct {
23846	fn   func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)
23847	ssbc StaticSiteBuildCollection
23848}
23849
23850// NextWithContext advances to the next page of values.  If there was an error making
23851// the request the page does not advance and the error is returned.
23852func (page *StaticSiteBuildCollectionPage) NextWithContext(ctx context.Context) (err error) {
23853	if tracing.IsEnabled() {
23854		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteBuildCollectionPage.NextWithContext")
23855		defer func() {
23856			sc := -1
23857			if page.Response().Response.Response != nil {
23858				sc = page.Response().Response.Response.StatusCode
23859			}
23860			tracing.EndSpan(ctx, sc, err)
23861		}()
23862	}
23863	for {
23864		next, err := page.fn(ctx, page.ssbc)
23865		if err != nil {
23866			return err
23867		}
23868		page.ssbc = next
23869		if !next.hasNextLink() || !next.IsEmpty() {
23870			break
23871		}
23872	}
23873	return nil
23874}
23875
23876// Next advances to the next page of values.  If there was an error making
23877// the request the page does not advance and the error is returned.
23878// Deprecated: Use NextWithContext() instead.
23879func (page *StaticSiteBuildCollectionPage) Next() error {
23880	return page.NextWithContext(context.Background())
23881}
23882
23883// NotDone returns true if the page enumeration should be started or is not yet complete.
23884func (page StaticSiteBuildCollectionPage) NotDone() bool {
23885	return !page.ssbc.IsEmpty()
23886}
23887
23888// Response returns the raw server response from the last page request.
23889func (page StaticSiteBuildCollectionPage) Response() StaticSiteBuildCollection {
23890	return page.ssbc
23891}
23892
23893// Values returns the slice of values for the current page or nil if there are no values.
23894func (page StaticSiteBuildCollectionPage) Values() []StaticSiteBuildARMResource {
23895	if page.ssbc.IsEmpty() {
23896		return nil
23897	}
23898	return *page.ssbc.Value
23899}
23900
23901// Creates a new instance of the StaticSiteBuildCollectionPage type.
23902func NewStaticSiteBuildCollectionPage(cur StaticSiteBuildCollection, getNextPage func(context.Context, StaticSiteBuildCollection) (StaticSiteBuildCollection, error)) StaticSiteBuildCollectionPage {
23903	return StaticSiteBuildCollectionPage{
23904		fn:   getNextPage,
23905		ssbc: cur,
23906	}
23907}
23908
23909// StaticSiteBuildProperties build properties for the static site.
23910type StaticSiteBuildProperties struct {
23911	// AppLocation - The path to the app code within the repository.
23912	AppLocation *string `json:"appLocation,omitempty"`
23913	// APILocation - The path to the api code within the repository.
23914	APILocation *string `json:"apiLocation,omitempty"`
23915	// AppArtifactLocation - The path of the app artifacts after building.
23916	AppArtifactLocation *string `json:"appArtifactLocation,omitempty"`
23917}
23918
23919// StaticSiteCollection collection of static sites.
23920type StaticSiteCollection struct {
23921	autorest.Response `json:"-"`
23922	// Value - Collection of resources.
23923	Value *[]StaticSiteARMResource `json:"value,omitempty"`
23924	// NextLink - READ-ONLY; Link to next page of resources.
23925	NextLink *string `json:"nextLink,omitempty"`
23926}
23927
23928// MarshalJSON is the custom marshaler for StaticSiteCollection.
23929func (ssc StaticSiteCollection) MarshalJSON() ([]byte, error) {
23930	objectMap := make(map[string]interface{})
23931	if ssc.Value != nil {
23932		objectMap["value"] = ssc.Value
23933	}
23934	return json.Marshal(objectMap)
23935}
23936
23937// StaticSiteCollectionIterator provides access to a complete listing of StaticSiteARMResource values.
23938type StaticSiteCollectionIterator struct {
23939	i    int
23940	page StaticSiteCollectionPage
23941}
23942
23943// NextWithContext advances to the next value.  If there was an error making
23944// the request the iterator does not advance and the error is returned.
23945func (iter *StaticSiteCollectionIterator) NextWithContext(ctx context.Context) (err error) {
23946	if tracing.IsEnabled() {
23947		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionIterator.NextWithContext")
23948		defer func() {
23949			sc := -1
23950			if iter.Response().Response.Response != nil {
23951				sc = iter.Response().Response.Response.StatusCode
23952			}
23953			tracing.EndSpan(ctx, sc, err)
23954		}()
23955	}
23956	iter.i++
23957	if iter.i < len(iter.page.Values()) {
23958		return nil
23959	}
23960	err = iter.page.NextWithContext(ctx)
23961	if err != nil {
23962		iter.i--
23963		return err
23964	}
23965	iter.i = 0
23966	return nil
23967}
23968
23969// Next advances to the next value.  If there was an error making
23970// the request the iterator does not advance and the error is returned.
23971// Deprecated: Use NextWithContext() instead.
23972func (iter *StaticSiteCollectionIterator) Next() error {
23973	return iter.NextWithContext(context.Background())
23974}
23975
23976// NotDone returns true if the enumeration should be started or is not yet complete.
23977func (iter StaticSiteCollectionIterator) NotDone() bool {
23978	return iter.page.NotDone() && iter.i < len(iter.page.Values())
23979}
23980
23981// Response returns the raw server response from the last page request.
23982func (iter StaticSiteCollectionIterator) Response() StaticSiteCollection {
23983	return iter.page.Response()
23984}
23985
23986// Value returns the current value or a zero-initialized value if the
23987// iterator has advanced beyond the end of the collection.
23988func (iter StaticSiteCollectionIterator) Value() StaticSiteARMResource {
23989	if !iter.page.NotDone() {
23990		return StaticSiteARMResource{}
23991	}
23992	return iter.page.Values()[iter.i]
23993}
23994
23995// Creates a new instance of the StaticSiteCollectionIterator type.
23996func NewStaticSiteCollectionIterator(page StaticSiteCollectionPage) StaticSiteCollectionIterator {
23997	return StaticSiteCollectionIterator{page: page}
23998}
23999
24000// IsEmpty returns true if the ListResult contains no values.
24001func (ssc StaticSiteCollection) IsEmpty() bool {
24002	return ssc.Value == nil || len(*ssc.Value) == 0
24003}
24004
24005// hasNextLink returns true if the NextLink is not empty.
24006func (ssc StaticSiteCollection) hasNextLink() bool {
24007	return ssc.NextLink != nil && len(*ssc.NextLink) != 0
24008}
24009
24010// staticSiteCollectionPreparer prepares a request to retrieve the next set of results.
24011// It returns nil if no more results exist.
24012func (ssc StaticSiteCollection) staticSiteCollectionPreparer(ctx context.Context) (*http.Request, error) {
24013	if !ssc.hasNextLink() {
24014		return nil, nil
24015	}
24016	return autorest.Prepare((&http.Request{}).WithContext(ctx),
24017		autorest.AsJSON(),
24018		autorest.AsGet(),
24019		autorest.WithBaseURL(to.String(ssc.NextLink)))
24020}
24021
24022// StaticSiteCollectionPage contains a page of StaticSiteARMResource values.
24023type StaticSiteCollectionPage struct {
24024	fn  func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)
24025	ssc StaticSiteCollection
24026}
24027
24028// NextWithContext advances to the next page of values.  If there was an error making
24029// the request the page does not advance and the error is returned.
24030func (page *StaticSiteCollectionPage) NextWithContext(ctx context.Context) (err error) {
24031	if tracing.IsEnabled() {
24032		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCollectionPage.NextWithContext")
24033		defer func() {
24034			sc := -1
24035			if page.Response().Response.Response != nil {
24036				sc = page.Response().Response.Response.StatusCode
24037			}
24038			tracing.EndSpan(ctx, sc, err)
24039		}()
24040	}
24041	for {
24042		next, err := page.fn(ctx, page.ssc)
24043		if err != nil {
24044			return err
24045		}
24046		page.ssc = next
24047		if !next.hasNextLink() || !next.IsEmpty() {
24048			break
24049		}
24050	}
24051	return nil
24052}
24053
24054// Next advances to the next page of values.  If there was an error making
24055// the request the page does not advance and the error is returned.
24056// Deprecated: Use NextWithContext() instead.
24057func (page *StaticSiteCollectionPage) Next() error {
24058	return page.NextWithContext(context.Background())
24059}
24060
24061// NotDone returns true if the page enumeration should be started or is not yet complete.
24062func (page StaticSiteCollectionPage) NotDone() bool {
24063	return !page.ssc.IsEmpty()
24064}
24065
24066// Response returns the raw server response from the last page request.
24067func (page StaticSiteCollectionPage) Response() StaticSiteCollection {
24068	return page.ssc
24069}
24070
24071// Values returns the slice of values for the current page or nil if there are no values.
24072func (page StaticSiteCollectionPage) Values() []StaticSiteARMResource {
24073	if page.ssc.IsEmpty() {
24074		return nil
24075	}
24076	return *page.ssc.Value
24077}
24078
24079// Creates a new instance of the StaticSiteCollectionPage type.
24080func NewStaticSiteCollectionPage(cur StaticSiteCollection, getNextPage func(context.Context, StaticSiteCollection) (StaticSiteCollection, error)) StaticSiteCollectionPage {
24081	return StaticSiteCollectionPage{
24082		fn:  getNextPage,
24083		ssc: cur,
24084	}
24085}
24086
24087// StaticSiteCustomDomainOverviewARMResource static Site Custom Domain Overview ARM resource.
24088type StaticSiteCustomDomainOverviewARMResource struct {
24089	autorest.Response `json:"-"`
24090	// StaticSiteCustomDomainOverviewARMResourceProperties - StaticSiteCustomDomainOverviewARMResource resource specific properties
24091	*StaticSiteCustomDomainOverviewARMResourceProperties `json:"properties,omitempty"`
24092	// ID - READ-ONLY; Resource Id.
24093	ID *string `json:"id,omitempty"`
24094	// Name - READ-ONLY; Resource Name.
24095	Name *string `json:"name,omitempty"`
24096	// Kind - Kind of resource.
24097	Kind *string `json:"kind,omitempty"`
24098	// Type - READ-ONLY; Resource type.
24099	Type *string `json:"type,omitempty"`
24100}
24101
24102// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewARMResource.
24103func (sscdoar StaticSiteCustomDomainOverviewARMResource) MarshalJSON() ([]byte, error) {
24104	objectMap := make(map[string]interface{})
24105	if sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties != nil {
24106		objectMap["properties"] = sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties
24107	}
24108	if sscdoar.Kind != nil {
24109		objectMap["kind"] = sscdoar.Kind
24110	}
24111	return json.Marshal(objectMap)
24112}
24113
24114// UnmarshalJSON is the custom unmarshaler for StaticSiteCustomDomainOverviewARMResource struct.
24115func (sscdoar *StaticSiteCustomDomainOverviewARMResource) UnmarshalJSON(body []byte) error {
24116	var m map[string]*json.RawMessage
24117	err := json.Unmarshal(body, &m)
24118	if err != nil {
24119		return err
24120	}
24121	for k, v := range m {
24122		switch k {
24123		case "properties":
24124			if v != nil {
24125				var staticSiteCustomDomainOverviewARMResourceProperties StaticSiteCustomDomainOverviewARMResourceProperties
24126				err = json.Unmarshal(*v, &staticSiteCustomDomainOverviewARMResourceProperties)
24127				if err != nil {
24128					return err
24129				}
24130				sscdoar.StaticSiteCustomDomainOverviewARMResourceProperties = &staticSiteCustomDomainOverviewARMResourceProperties
24131			}
24132		case "id":
24133			if v != nil {
24134				var ID string
24135				err = json.Unmarshal(*v, &ID)
24136				if err != nil {
24137					return err
24138				}
24139				sscdoar.ID = &ID
24140			}
24141		case "name":
24142			if v != nil {
24143				var name string
24144				err = json.Unmarshal(*v, &name)
24145				if err != nil {
24146					return err
24147				}
24148				sscdoar.Name = &name
24149			}
24150		case "kind":
24151			if v != nil {
24152				var kind string
24153				err = json.Unmarshal(*v, &kind)
24154				if err != nil {
24155					return err
24156				}
24157				sscdoar.Kind = &kind
24158			}
24159		case "type":
24160			if v != nil {
24161				var typeVar string
24162				err = json.Unmarshal(*v, &typeVar)
24163				if err != nil {
24164					return err
24165				}
24166				sscdoar.Type = &typeVar
24167			}
24168		}
24169	}
24170
24171	return nil
24172}
24173
24174// StaticSiteCustomDomainOverviewARMResourceProperties staticSiteCustomDomainOverviewARMResource resource
24175// specific properties
24176type StaticSiteCustomDomainOverviewARMResourceProperties struct {
24177	// DomainName - READ-ONLY; The domain name for the static site custom domain.
24178	DomainName *string `json:"domainName,omitempty"`
24179	// CreatedOn - READ-ONLY; The date and time on which the custom domain was created for the static site.
24180	CreatedOn *date.Time `json:"createdOn,omitempty"`
24181}
24182
24183// StaticSiteCustomDomainOverviewCollection collection of static site custom domains.
24184type StaticSiteCustomDomainOverviewCollection struct {
24185	autorest.Response `json:"-"`
24186	// Value - Collection of resources.
24187	Value *[]StaticSiteCustomDomainOverviewARMResource `json:"value,omitempty"`
24188	// NextLink - READ-ONLY; Link to next page of resources.
24189	NextLink *string `json:"nextLink,omitempty"`
24190}
24191
24192// MarshalJSON is the custom marshaler for StaticSiteCustomDomainOverviewCollection.
24193func (sscdoc StaticSiteCustomDomainOverviewCollection) MarshalJSON() ([]byte, error) {
24194	objectMap := make(map[string]interface{})
24195	if sscdoc.Value != nil {
24196		objectMap["value"] = sscdoc.Value
24197	}
24198	return json.Marshal(objectMap)
24199}
24200
24201// StaticSiteCustomDomainOverviewCollectionIterator provides access to a complete listing of
24202// StaticSiteCustomDomainOverviewARMResource values.
24203type StaticSiteCustomDomainOverviewCollectionIterator struct {
24204	i    int
24205	page StaticSiteCustomDomainOverviewCollectionPage
24206}
24207
24208// NextWithContext advances to the next value.  If there was an error making
24209// the request the iterator does not advance and the error is returned.
24210func (iter *StaticSiteCustomDomainOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
24211	if tracing.IsEnabled() {
24212		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionIterator.NextWithContext")
24213		defer func() {
24214			sc := -1
24215			if iter.Response().Response.Response != nil {
24216				sc = iter.Response().Response.Response.StatusCode
24217			}
24218			tracing.EndSpan(ctx, sc, err)
24219		}()
24220	}
24221	iter.i++
24222	if iter.i < len(iter.page.Values()) {
24223		return nil
24224	}
24225	err = iter.page.NextWithContext(ctx)
24226	if err != nil {
24227		iter.i--
24228		return err
24229	}
24230	iter.i = 0
24231	return nil
24232}
24233
24234// Next advances to the next value.  If there was an error making
24235// the request the iterator does not advance and the error is returned.
24236// Deprecated: Use NextWithContext() instead.
24237func (iter *StaticSiteCustomDomainOverviewCollectionIterator) Next() error {
24238	return iter.NextWithContext(context.Background())
24239}
24240
24241// NotDone returns true if the enumeration should be started or is not yet complete.
24242func (iter StaticSiteCustomDomainOverviewCollectionIterator) NotDone() bool {
24243	return iter.page.NotDone() && iter.i < len(iter.page.Values())
24244}
24245
24246// Response returns the raw server response from the last page request.
24247func (iter StaticSiteCustomDomainOverviewCollectionIterator) Response() StaticSiteCustomDomainOverviewCollection {
24248	return iter.page.Response()
24249}
24250
24251// Value returns the current value or a zero-initialized value if the
24252// iterator has advanced beyond the end of the collection.
24253func (iter StaticSiteCustomDomainOverviewCollectionIterator) Value() StaticSiteCustomDomainOverviewARMResource {
24254	if !iter.page.NotDone() {
24255		return StaticSiteCustomDomainOverviewARMResource{}
24256	}
24257	return iter.page.Values()[iter.i]
24258}
24259
24260// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionIterator type.
24261func NewStaticSiteCustomDomainOverviewCollectionIterator(page StaticSiteCustomDomainOverviewCollectionPage) StaticSiteCustomDomainOverviewCollectionIterator {
24262	return StaticSiteCustomDomainOverviewCollectionIterator{page: page}
24263}
24264
24265// IsEmpty returns true if the ListResult contains no values.
24266func (sscdoc StaticSiteCustomDomainOverviewCollection) IsEmpty() bool {
24267	return sscdoc.Value == nil || len(*sscdoc.Value) == 0
24268}
24269
24270// hasNextLink returns true if the NextLink is not empty.
24271func (sscdoc StaticSiteCustomDomainOverviewCollection) hasNextLink() bool {
24272	return sscdoc.NextLink != nil && len(*sscdoc.NextLink) != 0
24273}
24274
24275// staticSiteCustomDomainOverviewCollectionPreparer prepares a request to retrieve the next set of results.
24276// It returns nil if no more results exist.
24277func (sscdoc StaticSiteCustomDomainOverviewCollection) staticSiteCustomDomainOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
24278	if !sscdoc.hasNextLink() {
24279		return nil, nil
24280	}
24281	return autorest.Prepare((&http.Request{}).WithContext(ctx),
24282		autorest.AsJSON(),
24283		autorest.AsGet(),
24284		autorest.WithBaseURL(to.String(sscdoc.NextLink)))
24285}
24286
24287// StaticSiteCustomDomainOverviewCollectionPage contains a page of
24288// StaticSiteCustomDomainOverviewARMResource values.
24289type StaticSiteCustomDomainOverviewCollectionPage struct {
24290	fn     func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)
24291	sscdoc StaticSiteCustomDomainOverviewCollection
24292}
24293
24294// NextWithContext advances to the next page of values.  If there was an error making
24295// the request the page does not advance and the error is returned.
24296func (page *StaticSiteCustomDomainOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
24297	if tracing.IsEnabled() {
24298		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteCustomDomainOverviewCollectionPage.NextWithContext")
24299		defer func() {
24300			sc := -1
24301			if page.Response().Response.Response != nil {
24302				sc = page.Response().Response.Response.StatusCode
24303			}
24304			tracing.EndSpan(ctx, sc, err)
24305		}()
24306	}
24307	for {
24308		next, err := page.fn(ctx, page.sscdoc)
24309		if err != nil {
24310			return err
24311		}
24312		page.sscdoc = next
24313		if !next.hasNextLink() || !next.IsEmpty() {
24314			break
24315		}
24316	}
24317	return nil
24318}
24319
24320// Next advances to the next page of values.  If there was an error making
24321// the request the page does not advance and the error is returned.
24322// Deprecated: Use NextWithContext() instead.
24323func (page *StaticSiteCustomDomainOverviewCollectionPage) Next() error {
24324	return page.NextWithContext(context.Background())
24325}
24326
24327// NotDone returns true if the page enumeration should be started or is not yet complete.
24328func (page StaticSiteCustomDomainOverviewCollectionPage) NotDone() bool {
24329	return !page.sscdoc.IsEmpty()
24330}
24331
24332// Response returns the raw server response from the last page request.
24333func (page StaticSiteCustomDomainOverviewCollectionPage) Response() StaticSiteCustomDomainOverviewCollection {
24334	return page.sscdoc
24335}
24336
24337// Values returns the slice of values for the current page or nil if there are no values.
24338func (page StaticSiteCustomDomainOverviewCollectionPage) Values() []StaticSiteCustomDomainOverviewARMResource {
24339	if page.sscdoc.IsEmpty() {
24340		return nil
24341	}
24342	return *page.sscdoc.Value
24343}
24344
24345// Creates a new instance of the StaticSiteCustomDomainOverviewCollectionPage type.
24346func NewStaticSiteCustomDomainOverviewCollectionPage(cur StaticSiteCustomDomainOverviewCollection, getNextPage func(context.Context, StaticSiteCustomDomainOverviewCollection) (StaticSiteCustomDomainOverviewCollection, error)) StaticSiteCustomDomainOverviewCollectionPage {
24347	return StaticSiteCustomDomainOverviewCollectionPage{
24348		fn:     getNextPage,
24349		sscdoc: cur,
24350	}
24351}
24352
24353// StaticSiteFunctionOverviewARMResource static Site Function Overview ARM resource.
24354type StaticSiteFunctionOverviewARMResource struct {
24355	// StaticSiteFunctionOverviewARMResourceProperties - StaticSiteFunctionOverviewARMResource resource specific properties
24356	*StaticSiteFunctionOverviewARMResourceProperties `json:"properties,omitempty"`
24357	// ID - READ-ONLY; Resource Id.
24358	ID *string `json:"id,omitempty"`
24359	// Name - READ-ONLY; Resource Name.
24360	Name *string `json:"name,omitempty"`
24361	// Kind - Kind of resource.
24362	Kind *string `json:"kind,omitempty"`
24363	// Type - READ-ONLY; Resource type.
24364	Type *string `json:"type,omitempty"`
24365}
24366
24367// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewARMResource.
24368func (ssfoar StaticSiteFunctionOverviewARMResource) MarshalJSON() ([]byte, error) {
24369	objectMap := make(map[string]interface{})
24370	if ssfoar.StaticSiteFunctionOverviewARMResourceProperties != nil {
24371		objectMap["properties"] = ssfoar.StaticSiteFunctionOverviewARMResourceProperties
24372	}
24373	if ssfoar.Kind != nil {
24374		objectMap["kind"] = ssfoar.Kind
24375	}
24376	return json.Marshal(objectMap)
24377}
24378
24379// UnmarshalJSON is the custom unmarshaler for StaticSiteFunctionOverviewARMResource struct.
24380func (ssfoar *StaticSiteFunctionOverviewARMResource) UnmarshalJSON(body []byte) error {
24381	var m map[string]*json.RawMessage
24382	err := json.Unmarshal(body, &m)
24383	if err != nil {
24384		return err
24385	}
24386	for k, v := range m {
24387		switch k {
24388		case "properties":
24389			if v != nil {
24390				var staticSiteFunctionOverviewARMResourceProperties StaticSiteFunctionOverviewARMResourceProperties
24391				err = json.Unmarshal(*v, &staticSiteFunctionOverviewARMResourceProperties)
24392				if err != nil {
24393					return err
24394				}
24395				ssfoar.StaticSiteFunctionOverviewARMResourceProperties = &staticSiteFunctionOverviewARMResourceProperties
24396			}
24397		case "id":
24398			if v != nil {
24399				var ID string
24400				err = json.Unmarshal(*v, &ID)
24401				if err != nil {
24402					return err
24403				}
24404				ssfoar.ID = &ID
24405			}
24406		case "name":
24407			if v != nil {
24408				var name string
24409				err = json.Unmarshal(*v, &name)
24410				if err != nil {
24411					return err
24412				}
24413				ssfoar.Name = &name
24414			}
24415		case "kind":
24416			if v != nil {
24417				var kind string
24418				err = json.Unmarshal(*v, &kind)
24419				if err != nil {
24420					return err
24421				}
24422				ssfoar.Kind = &kind
24423			}
24424		case "type":
24425			if v != nil {
24426				var typeVar string
24427				err = json.Unmarshal(*v, &typeVar)
24428				if err != nil {
24429					return err
24430				}
24431				ssfoar.Type = &typeVar
24432			}
24433		}
24434	}
24435
24436	return nil
24437}
24438
24439// StaticSiteFunctionOverviewARMResourceProperties staticSiteFunctionOverviewARMResource resource specific
24440// properties
24441type StaticSiteFunctionOverviewARMResourceProperties struct {
24442	// FunctionName - READ-ONLY; The name for the function
24443	FunctionName *string `json:"functionName,omitempty"`
24444	// TriggerType - READ-ONLY; The trigger type of the function. Possible values include: 'TriggerTypesHTTPTrigger', 'TriggerTypesUnknown'
24445	TriggerType TriggerTypes `json:"triggerType,omitempty"`
24446}
24447
24448// StaticSiteFunctionOverviewCollection collection of static site functions.
24449type StaticSiteFunctionOverviewCollection struct {
24450	autorest.Response `json:"-"`
24451	// Value - Collection of resources.
24452	Value *[]StaticSiteFunctionOverviewARMResource `json:"value,omitempty"`
24453	// NextLink - READ-ONLY; Link to next page of resources.
24454	NextLink *string `json:"nextLink,omitempty"`
24455}
24456
24457// MarshalJSON is the custom marshaler for StaticSiteFunctionOverviewCollection.
24458func (ssfoc StaticSiteFunctionOverviewCollection) MarshalJSON() ([]byte, error) {
24459	objectMap := make(map[string]interface{})
24460	if ssfoc.Value != nil {
24461		objectMap["value"] = ssfoc.Value
24462	}
24463	return json.Marshal(objectMap)
24464}
24465
24466// StaticSiteFunctionOverviewCollectionIterator provides access to a complete listing of
24467// StaticSiteFunctionOverviewARMResource values.
24468type StaticSiteFunctionOverviewCollectionIterator struct {
24469	i    int
24470	page StaticSiteFunctionOverviewCollectionPage
24471}
24472
24473// NextWithContext advances to the next value.  If there was an error making
24474// the request the iterator does not advance and the error is returned.
24475func (iter *StaticSiteFunctionOverviewCollectionIterator) NextWithContext(ctx context.Context) (err error) {
24476	if tracing.IsEnabled() {
24477		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionIterator.NextWithContext")
24478		defer func() {
24479			sc := -1
24480			if iter.Response().Response.Response != nil {
24481				sc = iter.Response().Response.Response.StatusCode
24482			}
24483			tracing.EndSpan(ctx, sc, err)
24484		}()
24485	}
24486	iter.i++
24487	if iter.i < len(iter.page.Values()) {
24488		return nil
24489	}
24490	err = iter.page.NextWithContext(ctx)
24491	if err != nil {
24492		iter.i--
24493		return err
24494	}
24495	iter.i = 0
24496	return nil
24497}
24498
24499// Next advances to the next value.  If there was an error making
24500// the request the iterator does not advance and the error is returned.
24501// Deprecated: Use NextWithContext() instead.
24502func (iter *StaticSiteFunctionOverviewCollectionIterator) Next() error {
24503	return iter.NextWithContext(context.Background())
24504}
24505
24506// NotDone returns true if the enumeration should be started or is not yet complete.
24507func (iter StaticSiteFunctionOverviewCollectionIterator) NotDone() bool {
24508	return iter.page.NotDone() && iter.i < len(iter.page.Values())
24509}
24510
24511// Response returns the raw server response from the last page request.
24512func (iter StaticSiteFunctionOverviewCollectionIterator) Response() StaticSiteFunctionOverviewCollection {
24513	return iter.page.Response()
24514}
24515
24516// Value returns the current value or a zero-initialized value if the
24517// iterator has advanced beyond the end of the collection.
24518func (iter StaticSiteFunctionOverviewCollectionIterator) Value() StaticSiteFunctionOverviewARMResource {
24519	if !iter.page.NotDone() {
24520		return StaticSiteFunctionOverviewARMResource{}
24521	}
24522	return iter.page.Values()[iter.i]
24523}
24524
24525// Creates a new instance of the StaticSiteFunctionOverviewCollectionIterator type.
24526func NewStaticSiteFunctionOverviewCollectionIterator(page StaticSiteFunctionOverviewCollectionPage) StaticSiteFunctionOverviewCollectionIterator {
24527	return StaticSiteFunctionOverviewCollectionIterator{page: page}
24528}
24529
24530// IsEmpty returns true if the ListResult contains no values.
24531func (ssfoc StaticSiteFunctionOverviewCollection) IsEmpty() bool {
24532	return ssfoc.Value == nil || len(*ssfoc.Value) == 0
24533}
24534
24535// hasNextLink returns true if the NextLink is not empty.
24536func (ssfoc StaticSiteFunctionOverviewCollection) hasNextLink() bool {
24537	return ssfoc.NextLink != nil && len(*ssfoc.NextLink) != 0
24538}
24539
24540// staticSiteFunctionOverviewCollectionPreparer prepares a request to retrieve the next set of results.
24541// It returns nil if no more results exist.
24542func (ssfoc StaticSiteFunctionOverviewCollection) staticSiteFunctionOverviewCollectionPreparer(ctx context.Context) (*http.Request, error) {
24543	if !ssfoc.hasNextLink() {
24544		return nil, nil
24545	}
24546	return autorest.Prepare((&http.Request{}).WithContext(ctx),
24547		autorest.AsJSON(),
24548		autorest.AsGet(),
24549		autorest.WithBaseURL(to.String(ssfoc.NextLink)))
24550}
24551
24552// StaticSiteFunctionOverviewCollectionPage contains a page of StaticSiteFunctionOverviewARMResource
24553// values.
24554type StaticSiteFunctionOverviewCollectionPage struct {
24555	fn    func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)
24556	ssfoc StaticSiteFunctionOverviewCollection
24557}
24558
24559// NextWithContext advances to the next page of values.  If there was an error making
24560// the request the page does not advance and the error is returned.
24561func (page *StaticSiteFunctionOverviewCollectionPage) NextWithContext(ctx context.Context) (err error) {
24562	if tracing.IsEnabled() {
24563		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteFunctionOverviewCollectionPage.NextWithContext")
24564		defer func() {
24565			sc := -1
24566			if page.Response().Response.Response != nil {
24567				sc = page.Response().Response.Response.StatusCode
24568			}
24569			tracing.EndSpan(ctx, sc, err)
24570		}()
24571	}
24572	for {
24573		next, err := page.fn(ctx, page.ssfoc)
24574		if err != nil {
24575			return err
24576		}
24577		page.ssfoc = next
24578		if !next.hasNextLink() || !next.IsEmpty() {
24579			break
24580		}
24581	}
24582	return nil
24583}
24584
24585// Next 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.
24587// Deprecated: Use NextWithContext() instead.
24588func (page *StaticSiteFunctionOverviewCollectionPage) Next() error {
24589	return page.NextWithContext(context.Background())
24590}
24591
24592// NotDone returns true if the page enumeration should be started or is not yet complete.
24593func (page StaticSiteFunctionOverviewCollectionPage) NotDone() bool {
24594	return !page.ssfoc.IsEmpty()
24595}
24596
24597// Response returns the raw server response from the last page request.
24598func (page StaticSiteFunctionOverviewCollectionPage) Response() StaticSiteFunctionOverviewCollection {
24599	return page.ssfoc
24600}
24601
24602// Values returns the slice of values for the current page or nil if there are no values.
24603func (page StaticSiteFunctionOverviewCollectionPage) Values() []StaticSiteFunctionOverviewARMResource {
24604	if page.ssfoc.IsEmpty() {
24605		return nil
24606	}
24607	return *page.ssfoc.Value
24608}
24609
24610// Creates a new instance of the StaticSiteFunctionOverviewCollectionPage type.
24611func NewStaticSiteFunctionOverviewCollectionPage(cur StaticSiteFunctionOverviewCollection, getNextPage func(context.Context, StaticSiteFunctionOverviewCollection) (StaticSiteFunctionOverviewCollection, error)) StaticSiteFunctionOverviewCollectionPage {
24612	return StaticSiteFunctionOverviewCollectionPage{
24613		fn:    getNextPage,
24614		ssfoc: cur,
24615	}
24616}
24617
24618// StaticSitePatchResource ARM resource for a static site when patching
24619type StaticSitePatchResource struct {
24620	// StaticSite - Core resource properties
24621	*StaticSite `json:"properties,omitempty"`
24622	// ID - READ-ONLY; Resource Id.
24623	ID *string `json:"id,omitempty"`
24624	// Name - READ-ONLY; Resource Name.
24625	Name *string `json:"name,omitempty"`
24626	// Kind - Kind of resource.
24627	Kind *string `json:"kind,omitempty"`
24628	// Type - READ-ONLY; Resource type.
24629	Type *string `json:"type,omitempty"`
24630}
24631
24632// MarshalJSON is the custom marshaler for StaticSitePatchResource.
24633func (sspr StaticSitePatchResource) MarshalJSON() ([]byte, error) {
24634	objectMap := make(map[string]interface{})
24635	if sspr.StaticSite != nil {
24636		objectMap["properties"] = sspr.StaticSite
24637	}
24638	if sspr.Kind != nil {
24639		objectMap["kind"] = sspr.Kind
24640	}
24641	return json.Marshal(objectMap)
24642}
24643
24644// UnmarshalJSON is the custom unmarshaler for StaticSitePatchResource struct.
24645func (sspr *StaticSitePatchResource) UnmarshalJSON(body []byte) error {
24646	var m map[string]*json.RawMessage
24647	err := json.Unmarshal(body, &m)
24648	if err != nil {
24649		return err
24650	}
24651	for k, v := range m {
24652		switch k {
24653		case "properties":
24654			if v != nil {
24655				var staticSite StaticSite
24656				err = json.Unmarshal(*v, &staticSite)
24657				if err != nil {
24658					return err
24659				}
24660				sspr.StaticSite = &staticSite
24661			}
24662		case "id":
24663			if v != nil {
24664				var ID string
24665				err = json.Unmarshal(*v, &ID)
24666				if err != nil {
24667					return err
24668				}
24669				sspr.ID = &ID
24670			}
24671		case "name":
24672			if v != nil {
24673				var name string
24674				err = json.Unmarshal(*v, &name)
24675				if err != nil {
24676					return err
24677				}
24678				sspr.Name = &name
24679			}
24680		case "kind":
24681			if v != nil {
24682				var kind string
24683				err = json.Unmarshal(*v, &kind)
24684				if err != nil {
24685					return err
24686				}
24687				sspr.Kind = &kind
24688			}
24689		case "type":
24690			if v != nil {
24691				var typeVar string
24692				err = json.Unmarshal(*v, &typeVar)
24693				if err != nil {
24694					return err
24695				}
24696				sspr.Type = &typeVar
24697			}
24698		}
24699	}
24700
24701	return nil
24702}
24703
24704// StaticSiteResetPropertiesARMResource static Site Reset Properties ARM resource.
24705type StaticSiteResetPropertiesARMResource struct {
24706	// StaticSiteResetPropertiesARMResourceProperties - StaticSiteResetPropertiesARMResource resource specific properties
24707	*StaticSiteResetPropertiesARMResourceProperties `json:"properties,omitempty"`
24708	// ID - READ-ONLY; Resource Id.
24709	ID *string `json:"id,omitempty"`
24710	// Name - READ-ONLY; Resource Name.
24711	Name *string `json:"name,omitempty"`
24712	// Kind - Kind of resource.
24713	Kind *string `json:"kind,omitempty"`
24714	// Type - READ-ONLY; Resource type.
24715	Type *string `json:"type,omitempty"`
24716}
24717
24718// MarshalJSON is the custom marshaler for StaticSiteResetPropertiesARMResource.
24719func (ssrpar StaticSiteResetPropertiesARMResource) MarshalJSON() ([]byte, error) {
24720	objectMap := make(map[string]interface{})
24721	if ssrpar.StaticSiteResetPropertiesARMResourceProperties != nil {
24722		objectMap["properties"] = ssrpar.StaticSiteResetPropertiesARMResourceProperties
24723	}
24724	if ssrpar.Kind != nil {
24725		objectMap["kind"] = ssrpar.Kind
24726	}
24727	return json.Marshal(objectMap)
24728}
24729
24730// UnmarshalJSON is the custom unmarshaler for StaticSiteResetPropertiesARMResource struct.
24731func (ssrpar *StaticSiteResetPropertiesARMResource) UnmarshalJSON(body []byte) error {
24732	var m map[string]*json.RawMessage
24733	err := json.Unmarshal(body, &m)
24734	if err != nil {
24735		return err
24736	}
24737	for k, v := range m {
24738		switch k {
24739		case "properties":
24740			if v != nil {
24741				var staticSiteResetPropertiesARMResourceProperties StaticSiteResetPropertiesARMResourceProperties
24742				err = json.Unmarshal(*v, &staticSiteResetPropertiesARMResourceProperties)
24743				if err != nil {
24744					return err
24745				}
24746				ssrpar.StaticSiteResetPropertiesARMResourceProperties = &staticSiteResetPropertiesARMResourceProperties
24747			}
24748		case "id":
24749			if v != nil {
24750				var ID string
24751				err = json.Unmarshal(*v, &ID)
24752				if err != nil {
24753					return err
24754				}
24755				ssrpar.ID = &ID
24756			}
24757		case "name":
24758			if v != nil {
24759				var name string
24760				err = json.Unmarshal(*v, &name)
24761				if err != nil {
24762					return err
24763				}
24764				ssrpar.Name = &name
24765			}
24766		case "kind":
24767			if v != nil {
24768				var kind string
24769				err = json.Unmarshal(*v, &kind)
24770				if err != nil {
24771					return err
24772				}
24773				ssrpar.Kind = &kind
24774			}
24775		case "type":
24776			if v != nil {
24777				var typeVar string
24778				err = json.Unmarshal(*v, &typeVar)
24779				if err != nil {
24780					return err
24781				}
24782				ssrpar.Type = &typeVar
24783			}
24784		}
24785	}
24786
24787	return nil
24788}
24789
24790// StaticSiteResetPropertiesARMResourceProperties staticSiteResetPropertiesARMResource resource specific
24791// properties
24792type StaticSiteResetPropertiesARMResourceProperties struct {
24793	// RepositoryToken - The token which proves admin privileges to the repository.
24794	RepositoryToken *string `json:"repositoryToken,omitempty"`
24795	// ShouldUpdateRepository - Determines whether the repository should be updated with the new properties.
24796	ShouldUpdateRepository *bool `json:"shouldUpdateRepository,omitempty"`
24797}
24798
24799// StaticSitesWorkflowPreview preview for the Static Site Workflow to be generated
24800type StaticSitesWorkflowPreview struct {
24801	autorest.Response `json:"-"`
24802	// StaticSitesWorkflowPreviewProperties - StaticSitesWorkflowPreview resource specific properties
24803	*StaticSitesWorkflowPreviewProperties `json:"properties,omitempty"`
24804	// ID - READ-ONLY; Resource Id.
24805	ID *string `json:"id,omitempty"`
24806	// Name - READ-ONLY; Resource Name.
24807	Name *string `json:"name,omitempty"`
24808	// Kind - Kind of resource.
24809	Kind *string `json:"kind,omitempty"`
24810	// Type - READ-ONLY; Resource type.
24811	Type *string `json:"type,omitempty"`
24812}
24813
24814// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreview.
24815func (sswp StaticSitesWorkflowPreview) MarshalJSON() ([]byte, error) {
24816	objectMap := make(map[string]interface{})
24817	if sswp.StaticSitesWorkflowPreviewProperties != nil {
24818		objectMap["properties"] = sswp.StaticSitesWorkflowPreviewProperties
24819	}
24820	if sswp.Kind != nil {
24821		objectMap["kind"] = sswp.Kind
24822	}
24823	return json.Marshal(objectMap)
24824}
24825
24826// UnmarshalJSON is the custom unmarshaler for StaticSitesWorkflowPreview struct.
24827func (sswp *StaticSitesWorkflowPreview) UnmarshalJSON(body []byte) error {
24828	var m map[string]*json.RawMessage
24829	err := json.Unmarshal(body, &m)
24830	if err != nil {
24831		return err
24832	}
24833	for k, v := range m {
24834		switch k {
24835		case "properties":
24836			if v != nil {
24837				var staticSitesWorkflowPreviewProperties StaticSitesWorkflowPreviewProperties
24838				err = json.Unmarshal(*v, &staticSitesWorkflowPreviewProperties)
24839				if err != nil {
24840					return err
24841				}
24842				sswp.StaticSitesWorkflowPreviewProperties = &staticSitesWorkflowPreviewProperties
24843			}
24844		case "id":
24845			if v != nil {
24846				var ID string
24847				err = json.Unmarshal(*v, &ID)
24848				if err != nil {
24849					return err
24850				}
24851				sswp.ID = &ID
24852			}
24853		case "name":
24854			if v != nil {
24855				var name string
24856				err = json.Unmarshal(*v, &name)
24857				if err != nil {
24858					return err
24859				}
24860				sswp.Name = &name
24861			}
24862		case "kind":
24863			if v != nil {
24864				var kind string
24865				err = json.Unmarshal(*v, &kind)
24866				if err != nil {
24867					return err
24868				}
24869				sswp.Kind = &kind
24870			}
24871		case "type":
24872			if v != nil {
24873				var typeVar string
24874				err = json.Unmarshal(*v, &typeVar)
24875				if err != nil {
24876					return err
24877				}
24878				sswp.Type = &typeVar
24879			}
24880		}
24881	}
24882
24883	return nil
24884}
24885
24886// StaticSitesWorkflowPreviewProperties staticSitesWorkflowPreview resource specific properties
24887type StaticSitesWorkflowPreviewProperties struct {
24888	// Path - READ-ONLY; The path for the workflow file to be generated
24889	Path *string `json:"path,omitempty"`
24890	// Contents - READ-ONLY; The contents for the workflow file to be generated
24891	Contents *string `json:"contents,omitempty"`
24892}
24893
24894// StaticSitesWorkflowPreviewRequest request entity for previewing the Static Site workflow
24895type StaticSitesWorkflowPreviewRequest struct {
24896	// StaticSitesWorkflowPreviewRequestProperties - StaticSitesWorkflowPreviewRequest resource specific properties
24897	*StaticSitesWorkflowPreviewRequestProperties `json:"properties,omitempty"`
24898	// ID - READ-ONLY; Resource Id.
24899	ID *string `json:"id,omitempty"`
24900	// Name - READ-ONLY; Resource Name.
24901	Name *string `json:"name,omitempty"`
24902	// Kind - Kind of resource.
24903	Kind *string `json:"kind,omitempty"`
24904	// Type - READ-ONLY; Resource type.
24905	Type *string `json:"type,omitempty"`
24906}
24907
24908// MarshalJSON is the custom marshaler for StaticSitesWorkflowPreviewRequest.
24909func (sswpr StaticSitesWorkflowPreviewRequest) MarshalJSON() ([]byte, error) {
24910	objectMap := make(map[string]interface{})
24911	if sswpr.StaticSitesWorkflowPreviewRequestProperties != nil {
24912		objectMap["properties"] = sswpr.StaticSitesWorkflowPreviewRequestProperties
24913	}
24914	if sswpr.Kind != nil {
24915		objectMap["kind"] = sswpr.Kind
24916	}
24917	return json.Marshal(objectMap)
24918}
24919
24920// UnmarshalJSON is the custom unmarshaler for StaticSitesWorkflowPreviewRequest struct.
24921func (sswpr *StaticSitesWorkflowPreviewRequest) UnmarshalJSON(body []byte) error {
24922	var m map[string]*json.RawMessage
24923	err := json.Unmarshal(body, &m)
24924	if err != nil {
24925		return err
24926	}
24927	for k, v := range m {
24928		switch k {
24929		case "properties":
24930			if v != nil {
24931				var staticSitesWorkflowPreviewRequestProperties StaticSitesWorkflowPreviewRequestProperties
24932				err = json.Unmarshal(*v, &staticSitesWorkflowPreviewRequestProperties)
24933				if err != nil {
24934					return err
24935				}
24936				sswpr.StaticSitesWorkflowPreviewRequestProperties = &staticSitesWorkflowPreviewRequestProperties
24937			}
24938		case "id":
24939			if v != nil {
24940				var ID string
24941				err = json.Unmarshal(*v, &ID)
24942				if err != nil {
24943					return err
24944				}
24945				sswpr.ID = &ID
24946			}
24947		case "name":
24948			if v != nil {
24949				var name string
24950				err = json.Unmarshal(*v, &name)
24951				if err != nil {
24952					return err
24953				}
24954				sswpr.Name = &name
24955			}
24956		case "kind":
24957			if v != nil {
24958				var kind string
24959				err = json.Unmarshal(*v, &kind)
24960				if err != nil {
24961					return err
24962				}
24963				sswpr.Kind = &kind
24964			}
24965		case "type":
24966			if v != nil {
24967				var typeVar string
24968				err = json.Unmarshal(*v, &typeVar)
24969				if err != nil {
24970					return err
24971				}
24972				sswpr.Type = &typeVar
24973			}
24974		}
24975	}
24976
24977	return nil
24978}
24979
24980// StaticSitesWorkflowPreviewRequestProperties staticSitesWorkflowPreviewRequest resource specific
24981// properties
24982type StaticSitesWorkflowPreviewRequestProperties struct {
24983	// RepositoryURL - URL for the repository of the static site.
24984	RepositoryURL *string `json:"repositoryUrl,omitempty"`
24985	// Branch - The target branch in the repository.
24986	Branch *string `json:"branch,omitempty"`
24987	// BuildProperties - Build properties to configure on the repository.
24988	BuildProperties *StaticSiteBuildProperties `json:"buildProperties,omitempty"`
24989}
24990
24991// StaticSiteUserARMResource static Site User ARM resource.
24992type StaticSiteUserARMResource struct {
24993	autorest.Response `json:"-"`
24994	// StaticSiteUserARMResourceProperties - StaticSiteUserARMResource resource specific properties
24995	*StaticSiteUserARMResourceProperties `json:"properties,omitempty"`
24996	// ID - READ-ONLY; Resource Id.
24997	ID *string `json:"id,omitempty"`
24998	// Name - READ-ONLY; Resource Name.
24999	Name *string `json:"name,omitempty"`
25000	// Kind - Kind of resource.
25001	Kind *string `json:"kind,omitempty"`
25002	// Type - READ-ONLY; Resource type.
25003	Type *string `json:"type,omitempty"`
25004}
25005
25006// MarshalJSON is the custom marshaler for StaticSiteUserARMResource.
25007func (ssuar StaticSiteUserARMResource) MarshalJSON() ([]byte, error) {
25008	objectMap := make(map[string]interface{})
25009	if ssuar.StaticSiteUserARMResourceProperties != nil {
25010		objectMap["properties"] = ssuar.StaticSiteUserARMResourceProperties
25011	}
25012	if ssuar.Kind != nil {
25013		objectMap["kind"] = ssuar.Kind
25014	}
25015	return json.Marshal(objectMap)
25016}
25017
25018// UnmarshalJSON is the custom unmarshaler for StaticSiteUserARMResource struct.
25019func (ssuar *StaticSiteUserARMResource) UnmarshalJSON(body []byte) error {
25020	var m map[string]*json.RawMessage
25021	err := json.Unmarshal(body, &m)
25022	if err != nil {
25023		return err
25024	}
25025	for k, v := range m {
25026		switch k {
25027		case "properties":
25028			if v != nil {
25029				var staticSiteUserARMResourceProperties StaticSiteUserARMResourceProperties
25030				err = json.Unmarshal(*v, &staticSiteUserARMResourceProperties)
25031				if err != nil {
25032					return err
25033				}
25034				ssuar.StaticSiteUserARMResourceProperties = &staticSiteUserARMResourceProperties
25035			}
25036		case "id":
25037			if v != nil {
25038				var ID string
25039				err = json.Unmarshal(*v, &ID)
25040				if err != nil {
25041					return err
25042				}
25043				ssuar.ID = &ID
25044			}
25045		case "name":
25046			if v != nil {
25047				var name string
25048				err = json.Unmarshal(*v, &name)
25049				if err != nil {
25050					return err
25051				}
25052				ssuar.Name = &name
25053			}
25054		case "kind":
25055			if v != nil {
25056				var kind string
25057				err = json.Unmarshal(*v, &kind)
25058				if err != nil {
25059					return err
25060				}
25061				ssuar.Kind = &kind
25062			}
25063		case "type":
25064			if v != nil {
25065				var typeVar string
25066				err = json.Unmarshal(*v, &typeVar)
25067				if err != nil {
25068					return err
25069				}
25070				ssuar.Type = &typeVar
25071			}
25072		}
25073	}
25074
25075	return nil
25076}
25077
25078// StaticSiteUserARMResourceProperties staticSiteUserARMResource resource specific properties
25079type StaticSiteUserARMResourceProperties struct {
25080	// Provider - READ-ONLY; The identity provider for the static site user.
25081	Provider *string `json:"provider,omitempty"`
25082	// UserID - READ-ONLY; The user id for the static site user.
25083	UserID *string `json:"userId,omitempty"`
25084	// DisplayName - READ-ONLY; The display name for the static site user.
25085	DisplayName *string `json:"displayName,omitempty"`
25086	// Roles - The roles for the static site user, in free-form string format
25087	Roles *string `json:"roles,omitempty"`
25088}
25089
25090// MarshalJSON is the custom marshaler for StaticSiteUserARMResourceProperties.
25091func (ssuar StaticSiteUserARMResourceProperties) MarshalJSON() ([]byte, error) {
25092	objectMap := make(map[string]interface{})
25093	if ssuar.Roles != nil {
25094		objectMap["roles"] = ssuar.Roles
25095	}
25096	return json.Marshal(objectMap)
25097}
25098
25099// StaticSiteUserCollection collection of static site custom users.
25100type StaticSiteUserCollection struct {
25101	autorest.Response `json:"-"`
25102	// Value - Collection of resources.
25103	Value *[]StaticSiteUserARMResource `json:"value,omitempty"`
25104	// NextLink - READ-ONLY; Link to next page of resources.
25105	NextLink *string `json:"nextLink,omitempty"`
25106}
25107
25108// MarshalJSON is the custom marshaler for StaticSiteUserCollection.
25109func (ssuc StaticSiteUserCollection) MarshalJSON() ([]byte, error) {
25110	objectMap := make(map[string]interface{})
25111	if ssuc.Value != nil {
25112		objectMap["value"] = ssuc.Value
25113	}
25114	return json.Marshal(objectMap)
25115}
25116
25117// StaticSiteUserCollectionIterator provides access to a complete listing of StaticSiteUserARMResource
25118// values.
25119type StaticSiteUserCollectionIterator struct {
25120	i    int
25121	page StaticSiteUserCollectionPage
25122}
25123
25124// NextWithContext advances to the next value.  If there was an error making
25125// the request the iterator does not advance and the error is returned.
25126func (iter *StaticSiteUserCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25127	if tracing.IsEnabled() {
25128		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionIterator.NextWithContext")
25129		defer func() {
25130			sc := -1
25131			if iter.Response().Response.Response != nil {
25132				sc = iter.Response().Response.Response.StatusCode
25133			}
25134			tracing.EndSpan(ctx, sc, err)
25135		}()
25136	}
25137	iter.i++
25138	if iter.i < len(iter.page.Values()) {
25139		return nil
25140	}
25141	err = iter.page.NextWithContext(ctx)
25142	if err != nil {
25143		iter.i--
25144		return err
25145	}
25146	iter.i = 0
25147	return nil
25148}
25149
25150// Next advances to the next value.  If there was an error making
25151// the request the iterator does not advance and the error is returned.
25152// Deprecated: Use NextWithContext() instead.
25153func (iter *StaticSiteUserCollectionIterator) Next() error {
25154	return iter.NextWithContext(context.Background())
25155}
25156
25157// NotDone returns true if the enumeration should be started or is not yet complete.
25158func (iter StaticSiteUserCollectionIterator) NotDone() bool {
25159	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25160}
25161
25162// Response returns the raw server response from the last page request.
25163func (iter StaticSiteUserCollectionIterator) Response() StaticSiteUserCollection {
25164	return iter.page.Response()
25165}
25166
25167// Value returns the current value or a zero-initialized value if the
25168// iterator has advanced beyond the end of the collection.
25169func (iter StaticSiteUserCollectionIterator) Value() StaticSiteUserARMResource {
25170	if !iter.page.NotDone() {
25171		return StaticSiteUserARMResource{}
25172	}
25173	return iter.page.Values()[iter.i]
25174}
25175
25176// Creates a new instance of the StaticSiteUserCollectionIterator type.
25177func NewStaticSiteUserCollectionIterator(page StaticSiteUserCollectionPage) StaticSiteUserCollectionIterator {
25178	return StaticSiteUserCollectionIterator{page: page}
25179}
25180
25181// IsEmpty returns true if the ListResult contains no values.
25182func (ssuc StaticSiteUserCollection) IsEmpty() bool {
25183	return ssuc.Value == nil || len(*ssuc.Value) == 0
25184}
25185
25186// hasNextLink returns true if the NextLink is not empty.
25187func (ssuc StaticSiteUserCollection) hasNextLink() bool {
25188	return ssuc.NextLink != nil && len(*ssuc.NextLink) != 0
25189}
25190
25191// staticSiteUserCollectionPreparer prepares a request to retrieve the next set of results.
25192// It returns nil if no more results exist.
25193func (ssuc StaticSiteUserCollection) staticSiteUserCollectionPreparer(ctx context.Context) (*http.Request, error) {
25194	if !ssuc.hasNextLink() {
25195		return nil, nil
25196	}
25197	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25198		autorest.AsJSON(),
25199		autorest.AsGet(),
25200		autorest.WithBaseURL(to.String(ssuc.NextLink)))
25201}
25202
25203// StaticSiteUserCollectionPage contains a page of StaticSiteUserARMResource values.
25204type StaticSiteUserCollectionPage struct {
25205	fn   func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)
25206	ssuc StaticSiteUserCollection
25207}
25208
25209// NextWithContext advances to the next page of values.  If there was an error making
25210// the request the page does not advance and the error is returned.
25211func (page *StaticSiteUserCollectionPage) NextWithContext(ctx context.Context) (err error) {
25212	if tracing.IsEnabled() {
25213		ctx = tracing.StartSpan(ctx, fqdn+"/StaticSiteUserCollectionPage.NextWithContext")
25214		defer func() {
25215			sc := -1
25216			if page.Response().Response.Response != nil {
25217				sc = page.Response().Response.Response.StatusCode
25218			}
25219			tracing.EndSpan(ctx, sc, err)
25220		}()
25221	}
25222	for {
25223		next, err := page.fn(ctx, page.ssuc)
25224		if err != nil {
25225			return err
25226		}
25227		page.ssuc = next
25228		if !next.hasNextLink() || !next.IsEmpty() {
25229			break
25230		}
25231	}
25232	return nil
25233}
25234
25235// Next advances to the next page of values.  If there was an error making
25236// the request the page does not advance and the error is returned.
25237// Deprecated: Use NextWithContext() instead.
25238func (page *StaticSiteUserCollectionPage) Next() error {
25239	return page.NextWithContext(context.Background())
25240}
25241
25242// NotDone returns true if the page enumeration should be started or is not yet complete.
25243func (page StaticSiteUserCollectionPage) NotDone() bool {
25244	return !page.ssuc.IsEmpty()
25245}
25246
25247// Response returns the raw server response from the last page request.
25248func (page StaticSiteUserCollectionPage) Response() StaticSiteUserCollection {
25249	return page.ssuc
25250}
25251
25252// Values returns the slice of values for the current page or nil if there are no values.
25253func (page StaticSiteUserCollectionPage) Values() []StaticSiteUserARMResource {
25254	if page.ssuc.IsEmpty() {
25255		return nil
25256	}
25257	return *page.ssuc.Value
25258}
25259
25260// Creates a new instance of the StaticSiteUserCollectionPage type.
25261func NewStaticSiteUserCollectionPage(cur StaticSiteUserCollection, getNextPage func(context.Context, StaticSiteUserCollection) (StaticSiteUserCollection, error)) StaticSiteUserCollectionPage {
25262	return StaticSiteUserCollectionPage{
25263		fn:   getNextPage,
25264		ssuc: cur,
25265	}
25266}
25267
25268// StaticSiteUserInvitationRequestResource static sites user roles invitation resource.
25269type StaticSiteUserInvitationRequestResource struct {
25270	// StaticSiteUserInvitationRequestResourceProperties - StaticSiteUserInvitationRequestResource resource specific properties
25271	*StaticSiteUserInvitationRequestResourceProperties `json:"properties,omitempty"`
25272	// ID - READ-ONLY; Resource Id.
25273	ID *string `json:"id,omitempty"`
25274	// Name - READ-ONLY; Resource Name.
25275	Name *string `json:"name,omitempty"`
25276	// Kind - Kind of resource.
25277	Kind *string `json:"kind,omitempty"`
25278	// Type - READ-ONLY; Resource type.
25279	Type *string `json:"type,omitempty"`
25280}
25281
25282// MarshalJSON is the custom marshaler for StaticSiteUserInvitationRequestResource.
25283func (ssuirr StaticSiteUserInvitationRequestResource) MarshalJSON() ([]byte, error) {
25284	objectMap := make(map[string]interface{})
25285	if ssuirr.StaticSiteUserInvitationRequestResourceProperties != nil {
25286		objectMap["properties"] = ssuirr.StaticSiteUserInvitationRequestResourceProperties
25287	}
25288	if ssuirr.Kind != nil {
25289		objectMap["kind"] = ssuirr.Kind
25290	}
25291	return json.Marshal(objectMap)
25292}
25293
25294// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationRequestResource struct.
25295func (ssuirr *StaticSiteUserInvitationRequestResource) UnmarshalJSON(body []byte) error {
25296	var m map[string]*json.RawMessage
25297	err := json.Unmarshal(body, &m)
25298	if err != nil {
25299		return err
25300	}
25301	for k, v := range m {
25302		switch k {
25303		case "properties":
25304			if v != nil {
25305				var staticSiteUserInvitationRequestResourceProperties StaticSiteUserInvitationRequestResourceProperties
25306				err = json.Unmarshal(*v, &staticSiteUserInvitationRequestResourceProperties)
25307				if err != nil {
25308					return err
25309				}
25310				ssuirr.StaticSiteUserInvitationRequestResourceProperties = &staticSiteUserInvitationRequestResourceProperties
25311			}
25312		case "id":
25313			if v != nil {
25314				var ID string
25315				err = json.Unmarshal(*v, &ID)
25316				if err != nil {
25317					return err
25318				}
25319				ssuirr.ID = &ID
25320			}
25321		case "name":
25322			if v != nil {
25323				var name string
25324				err = json.Unmarshal(*v, &name)
25325				if err != nil {
25326					return err
25327				}
25328				ssuirr.Name = &name
25329			}
25330		case "kind":
25331			if v != nil {
25332				var kind string
25333				err = json.Unmarshal(*v, &kind)
25334				if err != nil {
25335					return err
25336				}
25337				ssuirr.Kind = &kind
25338			}
25339		case "type":
25340			if v != nil {
25341				var typeVar string
25342				err = json.Unmarshal(*v, &typeVar)
25343				if err != nil {
25344					return err
25345				}
25346				ssuirr.Type = &typeVar
25347			}
25348		}
25349	}
25350
25351	return nil
25352}
25353
25354// StaticSiteUserInvitationRequestResourceProperties staticSiteUserInvitationRequestResource resource
25355// specific properties
25356type StaticSiteUserInvitationRequestResourceProperties struct {
25357	// Domain - The domain name for the static site custom domain.
25358	Domain *string `json:"domain,omitempty"`
25359	// Provider - The identity provider for the static site user.
25360	Provider *string `json:"provider,omitempty"`
25361	// UserDetails - The user id for the static site user.
25362	UserDetails *string `json:"userDetails,omitempty"`
25363	// Roles - The roles for the static site user, in free-form string format
25364	Roles *string `json:"roles,omitempty"`
25365	// NumHoursToExpiration - The number of hours the sas token stays valid
25366	NumHoursToExpiration *int32 `json:"numHoursToExpiration,omitempty"`
25367}
25368
25369// StaticSiteUserInvitationResponseResource static sites user roles invitation link resource.
25370type StaticSiteUserInvitationResponseResource struct {
25371	autorest.Response `json:"-"`
25372	// StaticSiteUserInvitationResponseResourceProperties - StaticSiteUserInvitationResponseResource resource specific properties
25373	*StaticSiteUserInvitationResponseResourceProperties `json:"properties,omitempty"`
25374	// ID - READ-ONLY; Resource Id.
25375	ID *string `json:"id,omitempty"`
25376	// Name - READ-ONLY; Resource Name.
25377	Name *string `json:"name,omitempty"`
25378	// Kind - Kind of resource.
25379	Kind *string `json:"kind,omitempty"`
25380	// Type - READ-ONLY; Resource type.
25381	Type *string `json:"type,omitempty"`
25382}
25383
25384// MarshalJSON is the custom marshaler for StaticSiteUserInvitationResponseResource.
25385func (ssuirr StaticSiteUserInvitationResponseResource) MarshalJSON() ([]byte, error) {
25386	objectMap := make(map[string]interface{})
25387	if ssuirr.StaticSiteUserInvitationResponseResourceProperties != nil {
25388		objectMap["properties"] = ssuirr.StaticSiteUserInvitationResponseResourceProperties
25389	}
25390	if ssuirr.Kind != nil {
25391		objectMap["kind"] = ssuirr.Kind
25392	}
25393	return json.Marshal(objectMap)
25394}
25395
25396// UnmarshalJSON is the custom unmarshaler for StaticSiteUserInvitationResponseResource struct.
25397func (ssuirr *StaticSiteUserInvitationResponseResource) UnmarshalJSON(body []byte) error {
25398	var m map[string]*json.RawMessage
25399	err := json.Unmarshal(body, &m)
25400	if err != nil {
25401		return err
25402	}
25403	for k, v := range m {
25404		switch k {
25405		case "properties":
25406			if v != nil {
25407				var staticSiteUserInvitationResponseResourceProperties StaticSiteUserInvitationResponseResourceProperties
25408				err = json.Unmarshal(*v, &staticSiteUserInvitationResponseResourceProperties)
25409				if err != nil {
25410					return err
25411				}
25412				ssuirr.StaticSiteUserInvitationResponseResourceProperties = &staticSiteUserInvitationResponseResourceProperties
25413			}
25414		case "id":
25415			if v != nil {
25416				var ID string
25417				err = json.Unmarshal(*v, &ID)
25418				if err != nil {
25419					return err
25420				}
25421				ssuirr.ID = &ID
25422			}
25423		case "name":
25424			if v != nil {
25425				var name string
25426				err = json.Unmarshal(*v, &name)
25427				if err != nil {
25428					return err
25429				}
25430				ssuirr.Name = &name
25431			}
25432		case "kind":
25433			if v != nil {
25434				var kind string
25435				err = json.Unmarshal(*v, &kind)
25436				if err != nil {
25437					return err
25438				}
25439				ssuirr.Kind = &kind
25440			}
25441		case "type":
25442			if v != nil {
25443				var typeVar string
25444				err = json.Unmarshal(*v, &typeVar)
25445				if err != nil {
25446					return err
25447				}
25448				ssuirr.Type = &typeVar
25449			}
25450		}
25451	}
25452
25453	return nil
25454}
25455
25456// StaticSiteUserInvitationResponseResourceProperties staticSiteUserInvitationResponseResource resource
25457// specific properties
25458type StaticSiteUserInvitationResponseResourceProperties struct {
25459	// ExpiresOn - READ-ONLY; The expiration time of the invitation
25460	ExpiresOn *date.Time `json:"expiresOn,omitempty"`
25461	// InvitationURL - READ-ONLY; The url for the invitation link
25462	InvitationURL *string `json:"invitationUrl,omitempty"`
25463}
25464
25465// StatusCodesBasedTrigger trigger based on status code.
25466type StatusCodesBasedTrigger struct {
25467	// Status - HTTP status code.
25468	Status *int32 `json:"status,omitempty"`
25469	// SubStatus - Request Sub Status.
25470	SubStatus *int32 `json:"subStatus,omitempty"`
25471	// Win32Status - Win32 error code.
25472	Win32Status *int32 `json:"win32Status,omitempty"`
25473	// Count - Request Count.
25474	Count *int32 `json:"count,omitempty"`
25475	// TimeInterval - Time interval.
25476	TimeInterval *string `json:"timeInterval,omitempty"`
25477}
25478
25479// StorageMigrationOptions options for app content migration.
25480type StorageMigrationOptions struct {
25481	// StorageMigrationOptionsProperties - StorageMigrationOptions resource specific properties
25482	*StorageMigrationOptionsProperties `json:"properties,omitempty"`
25483	// ID - READ-ONLY; Resource Id.
25484	ID *string `json:"id,omitempty"`
25485	// Name - READ-ONLY; Resource Name.
25486	Name *string `json:"name,omitempty"`
25487	// Kind - Kind of resource.
25488	Kind *string `json:"kind,omitempty"`
25489	// Type - READ-ONLY; Resource type.
25490	Type *string `json:"type,omitempty"`
25491}
25492
25493// MarshalJSON is the custom marshaler for StorageMigrationOptions.
25494func (smo StorageMigrationOptions) MarshalJSON() ([]byte, error) {
25495	objectMap := make(map[string]interface{})
25496	if smo.StorageMigrationOptionsProperties != nil {
25497		objectMap["properties"] = smo.StorageMigrationOptionsProperties
25498	}
25499	if smo.Kind != nil {
25500		objectMap["kind"] = smo.Kind
25501	}
25502	return json.Marshal(objectMap)
25503}
25504
25505// UnmarshalJSON is the custom unmarshaler for StorageMigrationOptions struct.
25506func (smo *StorageMigrationOptions) UnmarshalJSON(body []byte) error {
25507	var m map[string]*json.RawMessage
25508	err := json.Unmarshal(body, &m)
25509	if err != nil {
25510		return err
25511	}
25512	for k, v := range m {
25513		switch k {
25514		case "properties":
25515			if v != nil {
25516				var storageMigrationOptionsProperties StorageMigrationOptionsProperties
25517				err = json.Unmarshal(*v, &storageMigrationOptionsProperties)
25518				if err != nil {
25519					return err
25520				}
25521				smo.StorageMigrationOptionsProperties = &storageMigrationOptionsProperties
25522			}
25523		case "id":
25524			if v != nil {
25525				var ID string
25526				err = json.Unmarshal(*v, &ID)
25527				if err != nil {
25528					return err
25529				}
25530				smo.ID = &ID
25531			}
25532		case "name":
25533			if v != nil {
25534				var name string
25535				err = json.Unmarshal(*v, &name)
25536				if err != nil {
25537					return err
25538				}
25539				smo.Name = &name
25540			}
25541		case "kind":
25542			if v != nil {
25543				var kind string
25544				err = json.Unmarshal(*v, &kind)
25545				if err != nil {
25546					return err
25547				}
25548				smo.Kind = &kind
25549			}
25550		case "type":
25551			if v != nil {
25552				var typeVar string
25553				err = json.Unmarshal(*v, &typeVar)
25554				if err != nil {
25555					return err
25556				}
25557				smo.Type = &typeVar
25558			}
25559		}
25560	}
25561
25562	return nil
25563}
25564
25565// StorageMigrationOptionsProperties storageMigrationOptions resource specific properties
25566type StorageMigrationOptionsProperties struct {
25567	// AzurefilesConnectionString - AzureFiles connection string.
25568	AzurefilesConnectionString *string `json:"azurefilesConnectionString,omitempty"`
25569	// AzurefilesShare - AzureFiles share.
25570	AzurefilesShare *string `json:"azurefilesShare,omitempty"`
25571	// SwitchSiteAfterMigration - <code>true</code>if the app should be switched over; otherwise, <code>false</code>.
25572	SwitchSiteAfterMigration *bool `json:"switchSiteAfterMigration,omitempty"`
25573	// BlockWriteAccessToSite - <code>true</code> if the app should be read only during copy operation; otherwise, <code>false</code>.
25574	BlockWriteAccessToSite *bool `json:"blockWriteAccessToSite,omitempty"`
25575}
25576
25577// StorageMigrationResponse response for a migration of app content request.
25578type StorageMigrationResponse struct {
25579	autorest.Response `json:"-"`
25580	// StorageMigrationResponseProperties - StorageMigrationResponse resource specific properties
25581	*StorageMigrationResponseProperties `json:"properties,omitempty"`
25582	// ID - READ-ONLY; Resource Id.
25583	ID *string `json:"id,omitempty"`
25584	// Name - READ-ONLY; Resource Name.
25585	Name *string `json:"name,omitempty"`
25586	// Kind - Kind of resource.
25587	Kind *string `json:"kind,omitempty"`
25588	// Type - READ-ONLY; Resource type.
25589	Type *string `json:"type,omitempty"`
25590}
25591
25592// MarshalJSON is the custom marshaler for StorageMigrationResponse.
25593func (smr StorageMigrationResponse) MarshalJSON() ([]byte, error) {
25594	objectMap := make(map[string]interface{})
25595	if smr.StorageMigrationResponseProperties != nil {
25596		objectMap["properties"] = smr.StorageMigrationResponseProperties
25597	}
25598	if smr.Kind != nil {
25599		objectMap["kind"] = smr.Kind
25600	}
25601	return json.Marshal(objectMap)
25602}
25603
25604// UnmarshalJSON is the custom unmarshaler for StorageMigrationResponse struct.
25605func (smr *StorageMigrationResponse) UnmarshalJSON(body []byte) error {
25606	var m map[string]*json.RawMessage
25607	err := json.Unmarshal(body, &m)
25608	if err != nil {
25609		return err
25610	}
25611	for k, v := range m {
25612		switch k {
25613		case "properties":
25614			if v != nil {
25615				var storageMigrationResponseProperties StorageMigrationResponseProperties
25616				err = json.Unmarshal(*v, &storageMigrationResponseProperties)
25617				if err != nil {
25618					return err
25619				}
25620				smr.StorageMigrationResponseProperties = &storageMigrationResponseProperties
25621			}
25622		case "id":
25623			if v != nil {
25624				var ID string
25625				err = json.Unmarshal(*v, &ID)
25626				if err != nil {
25627					return err
25628				}
25629				smr.ID = &ID
25630			}
25631		case "name":
25632			if v != nil {
25633				var name string
25634				err = json.Unmarshal(*v, &name)
25635				if err != nil {
25636					return err
25637				}
25638				smr.Name = &name
25639			}
25640		case "kind":
25641			if v != nil {
25642				var kind string
25643				err = json.Unmarshal(*v, &kind)
25644				if err != nil {
25645					return err
25646				}
25647				smr.Kind = &kind
25648			}
25649		case "type":
25650			if v != nil {
25651				var typeVar string
25652				err = json.Unmarshal(*v, &typeVar)
25653				if err != nil {
25654					return err
25655				}
25656				smr.Type = &typeVar
25657			}
25658		}
25659	}
25660
25661	return nil
25662}
25663
25664// StorageMigrationResponseProperties storageMigrationResponse resource specific properties
25665type StorageMigrationResponseProperties struct {
25666	// OperationID - READ-ONLY; When server starts the migration process, it will return an operation ID identifying that particular migration operation.
25667	OperationID *string `json:"operationId,omitempty"`
25668}
25669
25670// String ...
25671type String struct {
25672	autorest.Response `json:"-"`
25673	Value             *string `json:"value,omitempty"`
25674}
25675
25676// StringDictionary string dictionary resource.
25677type StringDictionary struct {
25678	autorest.Response `json:"-"`
25679	// Properties - Settings.
25680	Properties map[string]*string `json:"properties"`
25681	// ID - READ-ONLY; Resource Id.
25682	ID *string `json:"id,omitempty"`
25683	// Name - READ-ONLY; Resource Name.
25684	Name *string `json:"name,omitempty"`
25685	// Kind - Kind of resource.
25686	Kind *string `json:"kind,omitempty"`
25687	// Type - READ-ONLY; Resource type.
25688	Type *string `json:"type,omitempty"`
25689}
25690
25691// MarshalJSON is the custom marshaler for StringDictionary.
25692func (sd StringDictionary) MarshalJSON() ([]byte, error) {
25693	objectMap := make(map[string]interface{})
25694	if sd.Properties != nil {
25695		objectMap["properties"] = sd.Properties
25696	}
25697	if sd.Kind != nil {
25698		objectMap["kind"] = sd.Kind
25699	}
25700	return json.Marshal(objectMap)
25701}
25702
25703// SwiftVirtualNetwork swift Virtual Network Contract. This is used to enable the new Swift way of doing
25704// virtual network integration.
25705type SwiftVirtualNetwork struct {
25706	autorest.Response `json:"-"`
25707	// SwiftVirtualNetworkProperties - SwiftVirtualNetwork resource specific properties
25708	*SwiftVirtualNetworkProperties `json:"properties,omitempty"`
25709	// ID - READ-ONLY; Resource Id.
25710	ID *string `json:"id,omitempty"`
25711	// Name - READ-ONLY; Resource Name.
25712	Name *string `json:"name,omitempty"`
25713	// Kind - Kind of resource.
25714	Kind *string `json:"kind,omitempty"`
25715	// Type - READ-ONLY; Resource type.
25716	Type *string `json:"type,omitempty"`
25717}
25718
25719// MarshalJSON is the custom marshaler for SwiftVirtualNetwork.
25720func (svn SwiftVirtualNetwork) MarshalJSON() ([]byte, error) {
25721	objectMap := make(map[string]interface{})
25722	if svn.SwiftVirtualNetworkProperties != nil {
25723		objectMap["properties"] = svn.SwiftVirtualNetworkProperties
25724	}
25725	if svn.Kind != nil {
25726		objectMap["kind"] = svn.Kind
25727	}
25728	return json.Marshal(objectMap)
25729}
25730
25731// UnmarshalJSON is the custom unmarshaler for SwiftVirtualNetwork struct.
25732func (svn *SwiftVirtualNetwork) UnmarshalJSON(body []byte) error {
25733	var m map[string]*json.RawMessage
25734	err := json.Unmarshal(body, &m)
25735	if err != nil {
25736		return err
25737	}
25738	for k, v := range m {
25739		switch k {
25740		case "properties":
25741			if v != nil {
25742				var swiftVirtualNetworkProperties SwiftVirtualNetworkProperties
25743				err = json.Unmarshal(*v, &swiftVirtualNetworkProperties)
25744				if err != nil {
25745					return err
25746				}
25747				svn.SwiftVirtualNetworkProperties = &swiftVirtualNetworkProperties
25748			}
25749		case "id":
25750			if v != nil {
25751				var ID string
25752				err = json.Unmarshal(*v, &ID)
25753				if err != nil {
25754					return err
25755				}
25756				svn.ID = &ID
25757			}
25758		case "name":
25759			if v != nil {
25760				var name string
25761				err = json.Unmarshal(*v, &name)
25762				if err != nil {
25763					return err
25764				}
25765				svn.Name = &name
25766			}
25767		case "kind":
25768			if v != nil {
25769				var kind string
25770				err = json.Unmarshal(*v, &kind)
25771				if err != nil {
25772					return err
25773				}
25774				svn.Kind = &kind
25775			}
25776		case "type":
25777			if v != nil {
25778				var typeVar string
25779				err = json.Unmarshal(*v, &typeVar)
25780				if err != nil {
25781					return err
25782				}
25783				svn.Type = &typeVar
25784			}
25785		}
25786	}
25787
25788	return nil
25789}
25790
25791// SwiftVirtualNetworkProperties swiftVirtualNetwork resource specific properties
25792type SwiftVirtualNetworkProperties struct {
25793	// 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.
25794	SubnetResourceID *string `json:"subnetResourceId,omitempty"`
25795	// SwiftSupported - A flag that specifies if the scale unit this Web App is on supports Swift integration.
25796	SwiftSupported *bool `json:"swiftSupported,omitempty"`
25797}
25798
25799// TldLegalAgreement legal agreement for a top level domain.
25800type TldLegalAgreement struct {
25801	// AgreementKey - Unique identifier for the agreement.
25802	AgreementKey *string `json:"agreementKey,omitempty"`
25803	// Title - Agreement title.
25804	Title *string `json:"title,omitempty"`
25805	// Content - Agreement details.
25806	Content *string `json:"content,omitempty"`
25807	// URL - URL where a copy of the agreement details is hosted.
25808	URL *string `json:"url,omitempty"`
25809}
25810
25811// TldLegalAgreementCollection collection of top-level domain legal agreements.
25812type TldLegalAgreementCollection struct {
25813	autorest.Response `json:"-"`
25814	// Value - Collection of resources.
25815	Value *[]TldLegalAgreement `json:"value,omitempty"`
25816	// NextLink - READ-ONLY; Link to next page of resources.
25817	NextLink *string `json:"nextLink,omitempty"`
25818}
25819
25820// MarshalJSON is the custom marshaler for TldLegalAgreementCollection.
25821func (tlac TldLegalAgreementCollection) MarshalJSON() ([]byte, error) {
25822	objectMap := make(map[string]interface{})
25823	if tlac.Value != nil {
25824		objectMap["value"] = tlac.Value
25825	}
25826	return json.Marshal(objectMap)
25827}
25828
25829// TldLegalAgreementCollectionIterator provides access to a complete listing of TldLegalAgreement values.
25830type TldLegalAgreementCollectionIterator struct {
25831	i    int
25832	page TldLegalAgreementCollectionPage
25833}
25834
25835// NextWithContext advances to the next value.  If there was an error making
25836// the request the iterator does not advance and the error is returned.
25837func (iter *TldLegalAgreementCollectionIterator) NextWithContext(ctx context.Context) (err error) {
25838	if tracing.IsEnabled() {
25839		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionIterator.NextWithContext")
25840		defer func() {
25841			sc := -1
25842			if iter.Response().Response.Response != nil {
25843				sc = iter.Response().Response.Response.StatusCode
25844			}
25845			tracing.EndSpan(ctx, sc, err)
25846		}()
25847	}
25848	iter.i++
25849	if iter.i < len(iter.page.Values()) {
25850		return nil
25851	}
25852	err = iter.page.NextWithContext(ctx)
25853	if err != nil {
25854		iter.i--
25855		return err
25856	}
25857	iter.i = 0
25858	return nil
25859}
25860
25861// Next advances to the next value.  If there was an error making
25862// the request the iterator does not advance and the error is returned.
25863// Deprecated: Use NextWithContext() instead.
25864func (iter *TldLegalAgreementCollectionIterator) Next() error {
25865	return iter.NextWithContext(context.Background())
25866}
25867
25868// NotDone returns true if the enumeration should be started or is not yet complete.
25869func (iter TldLegalAgreementCollectionIterator) NotDone() bool {
25870	return iter.page.NotDone() && iter.i < len(iter.page.Values())
25871}
25872
25873// Response returns the raw server response from the last page request.
25874func (iter TldLegalAgreementCollectionIterator) Response() TldLegalAgreementCollection {
25875	return iter.page.Response()
25876}
25877
25878// Value returns the current value or a zero-initialized value if the
25879// iterator has advanced beyond the end of the collection.
25880func (iter TldLegalAgreementCollectionIterator) Value() TldLegalAgreement {
25881	if !iter.page.NotDone() {
25882		return TldLegalAgreement{}
25883	}
25884	return iter.page.Values()[iter.i]
25885}
25886
25887// Creates a new instance of the TldLegalAgreementCollectionIterator type.
25888func NewTldLegalAgreementCollectionIterator(page TldLegalAgreementCollectionPage) TldLegalAgreementCollectionIterator {
25889	return TldLegalAgreementCollectionIterator{page: page}
25890}
25891
25892// IsEmpty returns true if the ListResult contains no values.
25893func (tlac TldLegalAgreementCollection) IsEmpty() bool {
25894	return tlac.Value == nil || len(*tlac.Value) == 0
25895}
25896
25897// hasNextLink returns true if the NextLink is not empty.
25898func (tlac TldLegalAgreementCollection) hasNextLink() bool {
25899	return tlac.NextLink != nil && len(*tlac.NextLink) != 0
25900}
25901
25902// tldLegalAgreementCollectionPreparer prepares a request to retrieve the next set of results.
25903// It returns nil if no more results exist.
25904func (tlac TldLegalAgreementCollection) tldLegalAgreementCollectionPreparer(ctx context.Context) (*http.Request, error) {
25905	if !tlac.hasNextLink() {
25906		return nil, nil
25907	}
25908	return autorest.Prepare((&http.Request{}).WithContext(ctx),
25909		autorest.AsJSON(),
25910		autorest.AsGet(),
25911		autorest.WithBaseURL(to.String(tlac.NextLink)))
25912}
25913
25914// TldLegalAgreementCollectionPage contains a page of TldLegalAgreement values.
25915type TldLegalAgreementCollectionPage struct {
25916	fn   func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)
25917	tlac TldLegalAgreementCollection
25918}
25919
25920// NextWithContext advances to the next page of values.  If there was an error making
25921// the request the page does not advance and the error is returned.
25922func (page *TldLegalAgreementCollectionPage) NextWithContext(ctx context.Context) (err error) {
25923	if tracing.IsEnabled() {
25924		ctx = tracing.StartSpan(ctx, fqdn+"/TldLegalAgreementCollectionPage.NextWithContext")
25925		defer func() {
25926			sc := -1
25927			if page.Response().Response.Response != nil {
25928				sc = page.Response().Response.Response.StatusCode
25929			}
25930			tracing.EndSpan(ctx, sc, err)
25931		}()
25932	}
25933	for {
25934		next, err := page.fn(ctx, page.tlac)
25935		if err != nil {
25936			return err
25937		}
25938		page.tlac = next
25939		if !next.hasNextLink() || !next.IsEmpty() {
25940			break
25941		}
25942	}
25943	return nil
25944}
25945
25946// Next advances to the next page of values.  If there was an error making
25947// the request the page does not advance and the error is returned.
25948// Deprecated: Use NextWithContext() instead.
25949func (page *TldLegalAgreementCollectionPage) Next() error {
25950	return page.NextWithContext(context.Background())
25951}
25952
25953// NotDone returns true if the page enumeration should be started or is not yet complete.
25954func (page TldLegalAgreementCollectionPage) NotDone() bool {
25955	return !page.tlac.IsEmpty()
25956}
25957
25958// Response returns the raw server response from the last page request.
25959func (page TldLegalAgreementCollectionPage) Response() TldLegalAgreementCollection {
25960	return page.tlac
25961}
25962
25963// Values returns the slice of values for the current page or nil if there are no values.
25964func (page TldLegalAgreementCollectionPage) Values() []TldLegalAgreement {
25965	if page.tlac.IsEmpty() {
25966		return nil
25967	}
25968	return *page.tlac.Value
25969}
25970
25971// Creates a new instance of the TldLegalAgreementCollectionPage type.
25972func NewTldLegalAgreementCollectionPage(cur TldLegalAgreementCollection, getNextPage func(context.Context, TldLegalAgreementCollection) (TldLegalAgreementCollection, error)) TldLegalAgreementCollectionPage {
25973	return TldLegalAgreementCollectionPage{
25974		fn:   getNextPage,
25975		tlac: cur,
25976	}
25977}
25978
25979// TokenStore ...
25980type TokenStore struct {
25981	// TokenStoreProperties - TokenStore resource specific properties
25982	*TokenStoreProperties `json:"properties,omitempty"`
25983	// ID - READ-ONLY; Resource Id.
25984	ID *string `json:"id,omitempty"`
25985	// Name - READ-ONLY; Resource Name.
25986	Name *string `json:"name,omitempty"`
25987	// Kind - Kind of resource.
25988	Kind *string `json:"kind,omitempty"`
25989	// Type - READ-ONLY; Resource type.
25990	Type *string `json:"type,omitempty"`
25991}
25992
25993// MarshalJSON is the custom marshaler for TokenStore.
25994func (ts TokenStore) MarshalJSON() ([]byte, error) {
25995	objectMap := make(map[string]interface{})
25996	if ts.TokenStoreProperties != nil {
25997		objectMap["properties"] = ts.TokenStoreProperties
25998	}
25999	if ts.Kind != nil {
26000		objectMap["kind"] = ts.Kind
26001	}
26002	return json.Marshal(objectMap)
26003}
26004
26005// UnmarshalJSON is the custom unmarshaler for TokenStore struct.
26006func (ts *TokenStore) UnmarshalJSON(body []byte) error {
26007	var m map[string]*json.RawMessage
26008	err := json.Unmarshal(body, &m)
26009	if err != nil {
26010		return err
26011	}
26012	for k, v := range m {
26013		switch k {
26014		case "properties":
26015			if v != nil {
26016				var tokenStoreProperties TokenStoreProperties
26017				err = json.Unmarshal(*v, &tokenStoreProperties)
26018				if err != nil {
26019					return err
26020				}
26021				ts.TokenStoreProperties = &tokenStoreProperties
26022			}
26023		case "id":
26024			if v != nil {
26025				var ID string
26026				err = json.Unmarshal(*v, &ID)
26027				if err != nil {
26028					return err
26029				}
26030				ts.ID = &ID
26031			}
26032		case "name":
26033			if v != nil {
26034				var name string
26035				err = json.Unmarshal(*v, &name)
26036				if err != nil {
26037					return err
26038				}
26039				ts.Name = &name
26040			}
26041		case "kind":
26042			if v != nil {
26043				var kind string
26044				err = json.Unmarshal(*v, &kind)
26045				if err != nil {
26046					return err
26047				}
26048				ts.Kind = &kind
26049			}
26050		case "type":
26051			if v != nil {
26052				var typeVar string
26053				err = json.Unmarshal(*v, &typeVar)
26054				if err != nil {
26055					return err
26056				}
26057				ts.Type = &typeVar
26058			}
26059		}
26060	}
26061
26062	return nil
26063}
26064
26065// TokenStoreProperties tokenStore resource specific properties
26066type TokenStoreProperties struct {
26067	Enabled                    *bool                  `json:"enabled,omitempty"`
26068	TokenRefreshExtensionHours *float64               `json:"tokenRefreshExtensionHours,omitempty"`
26069	FileSystem                 *FileSystemTokenStore  `json:"fileSystem,omitempty"`
26070	AzureBlobStorage           *BlobStorageTokenStore `json:"azureBlobStorage,omitempty"`
26071}
26072
26073// TopLevelDomain a top level domain object.
26074type TopLevelDomain struct {
26075	autorest.Response `json:"-"`
26076	// TopLevelDomainProperties - TopLevelDomain resource specific properties
26077	*TopLevelDomainProperties `json:"properties,omitempty"`
26078	// ID - READ-ONLY; Resource Id.
26079	ID *string `json:"id,omitempty"`
26080	// Name - READ-ONLY; Resource Name.
26081	Name *string `json:"name,omitempty"`
26082	// Kind - Kind of resource.
26083	Kind *string `json:"kind,omitempty"`
26084	// Type - READ-ONLY; Resource type.
26085	Type *string `json:"type,omitempty"`
26086}
26087
26088// MarshalJSON is the custom marshaler for TopLevelDomain.
26089func (tld TopLevelDomain) MarshalJSON() ([]byte, error) {
26090	objectMap := make(map[string]interface{})
26091	if tld.TopLevelDomainProperties != nil {
26092		objectMap["properties"] = tld.TopLevelDomainProperties
26093	}
26094	if tld.Kind != nil {
26095		objectMap["kind"] = tld.Kind
26096	}
26097	return json.Marshal(objectMap)
26098}
26099
26100// UnmarshalJSON is the custom unmarshaler for TopLevelDomain struct.
26101func (tld *TopLevelDomain) UnmarshalJSON(body []byte) error {
26102	var m map[string]*json.RawMessage
26103	err := json.Unmarshal(body, &m)
26104	if err != nil {
26105		return err
26106	}
26107	for k, v := range m {
26108		switch k {
26109		case "properties":
26110			if v != nil {
26111				var topLevelDomainProperties TopLevelDomainProperties
26112				err = json.Unmarshal(*v, &topLevelDomainProperties)
26113				if err != nil {
26114					return err
26115				}
26116				tld.TopLevelDomainProperties = &topLevelDomainProperties
26117			}
26118		case "id":
26119			if v != nil {
26120				var ID string
26121				err = json.Unmarshal(*v, &ID)
26122				if err != nil {
26123					return err
26124				}
26125				tld.ID = &ID
26126			}
26127		case "name":
26128			if v != nil {
26129				var name string
26130				err = json.Unmarshal(*v, &name)
26131				if err != nil {
26132					return err
26133				}
26134				tld.Name = &name
26135			}
26136		case "kind":
26137			if v != nil {
26138				var kind string
26139				err = json.Unmarshal(*v, &kind)
26140				if err != nil {
26141					return err
26142				}
26143				tld.Kind = &kind
26144			}
26145		case "type":
26146			if v != nil {
26147				var typeVar string
26148				err = json.Unmarshal(*v, &typeVar)
26149				if err != nil {
26150					return err
26151				}
26152				tld.Type = &typeVar
26153			}
26154		}
26155	}
26156
26157	return nil
26158}
26159
26160// TopLevelDomainAgreementOption options for retrieving the list of top level domain legal agreements.
26161type TopLevelDomainAgreementOption struct {
26162	// IncludePrivacy - If <code>true</code>, then the list of agreements will include agreements for domain privacy as well; otherwise, <code>false</code>.
26163	IncludePrivacy *bool `json:"includePrivacy,omitempty"`
26164	// ForTransfer - If <code>true</code>, then the list of agreements will include agreements for domain transfer as well; otherwise, <code>false</code>.
26165	ForTransfer *bool `json:"forTransfer,omitempty"`
26166}
26167
26168// TopLevelDomainCollection collection of Top-level domains.
26169type TopLevelDomainCollection struct {
26170	autorest.Response `json:"-"`
26171	// Value - Collection of resources.
26172	Value *[]TopLevelDomain `json:"value,omitempty"`
26173	// NextLink - READ-ONLY; Link to next page of resources.
26174	NextLink *string `json:"nextLink,omitempty"`
26175}
26176
26177// MarshalJSON is the custom marshaler for TopLevelDomainCollection.
26178func (tldc TopLevelDomainCollection) MarshalJSON() ([]byte, error) {
26179	objectMap := make(map[string]interface{})
26180	if tldc.Value != nil {
26181		objectMap["value"] = tldc.Value
26182	}
26183	return json.Marshal(objectMap)
26184}
26185
26186// TopLevelDomainCollectionIterator provides access to a complete listing of TopLevelDomain values.
26187type TopLevelDomainCollectionIterator struct {
26188	i    int
26189	page TopLevelDomainCollectionPage
26190}
26191
26192// NextWithContext advances to the next value.  If there was an error making
26193// the request the iterator does not advance and the error is returned.
26194func (iter *TopLevelDomainCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26195	if tracing.IsEnabled() {
26196		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionIterator.NextWithContext")
26197		defer func() {
26198			sc := -1
26199			if iter.Response().Response.Response != nil {
26200				sc = iter.Response().Response.Response.StatusCode
26201			}
26202			tracing.EndSpan(ctx, sc, err)
26203		}()
26204	}
26205	iter.i++
26206	if iter.i < len(iter.page.Values()) {
26207		return nil
26208	}
26209	err = iter.page.NextWithContext(ctx)
26210	if err != nil {
26211		iter.i--
26212		return err
26213	}
26214	iter.i = 0
26215	return nil
26216}
26217
26218// Next advances to the next value.  If there was an error making
26219// the request the iterator does not advance and the error is returned.
26220// Deprecated: Use NextWithContext() instead.
26221func (iter *TopLevelDomainCollectionIterator) Next() error {
26222	return iter.NextWithContext(context.Background())
26223}
26224
26225// NotDone returns true if the enumeration should be started or is not yet complete.
26226func (iter TopLevelDomainCollectionIterator) NotDone() bool {
26227	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26228}
26229
26230// Response returns the raw server response from the last page request.
26231func (iter TopLevelDomainCollectionIterator) Response() TopLevelDomainCollection {
26232	return iter.page.Response()
26233}
26234
26235// Value returns the current value or a zero-initialized value if the
26236// iterator has advanced beyond the end of the collection.
26237func (iter TopLevelDomainCollectionIterator) Value() TopLevelDomain {
26238	if !iter.page.NotDone() {
26239		return TopLevelDomain{}
26240	}
26241	return iter.page.Values()[iter.i]
26242}
26243
26244// Creates a new instance of the TopLevelDomainCollectionIterator type.
26245func NewTopLevelDomainCollectionIterator(page TopLevelDomainCollectionPage) TopLevelDomainCollectionIterator {
26246	return TopLevelDomainCollectionIterator{page: page}
26247}
26248
26249// IsEmpty returns true if the ListResult contains no values.
26250func (tldc TopLevelDomainCollection) IsEmpty() bool {
26251	return tldc.Value == nil || len(*tldc.Value) == 0
26252}
26253
26254// hasNextLink returns true if the NextLink is not empty.
26255func (tldc TopLevelDomainCollection) hasNextLink() bool {
26256	return tldc.NextLink != nil && len(*tldc.NextLink) != 0
26257}
26258
26259// topLevelDomainCollectionPreparer prepares a request to retrieve the next set of results.
26260// It returns nil if no more results exist.
26261func (tldc TopLevelDomainCollection) topLevelDomainCollectionPreparer(ctx context.Context) (*http.Request, error) {
26262	if !tldc.hasNextLink() {
26263		return nil, nil
26264	}
26265	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26266		autorest.AsJSON(),
26267		autorest.AsGet(),
26268		autorest.WithBaseURL(to.String(tldc.NextLink)))
26269}
26270
26271// TopLevelDomainCollectionPage contains a page of TopLevelDomain values.
26272type TopLevelDomainCollectionPage struct {
26273	fn   func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)
26274	tldc TopLevelDomainCollection
26275}
26276
26277// NextWithContext advances to the next page of values.  If there was an error making
26278// the request the page does not advance and the error is returned.
26279func (page *TopLevelDomainCollectionPage) NextWithContext(ctx context.Context) (err error) {
26280	if tracing.IsEnabled() {
26281		ctx = tracing.StartSpan(ctx, fqdn+"/TopLevelDomainCollectionPage.NextWithContext")
26282		defer func() {
26283			sc := -1
26284			if page.Response().Response.Response != nil {
26285				sc = page.Response().Response.Response.StatusCode
26286			}
26287			tracing.EndSpan(ctx, sc, err)
26288		}()
26289	}
26290	for {
26291		next, err := page.fn(ctx, page.tldc)
26292		if err != nil {
26293			return err
26294		}
26295		page.tldc = next
26296		if !next.hasNextLink() || !next.IsEmpty() {
26297			break
26298		}
26299	}
26300	return nil
26301}
26302
26303// Next advances to the next page of values.  If there was an error making
26304// the request the page does not advance and the error is returned.
26305// Deprecated: Use NextWithContext() instead.
26306func (page *TopLevelDomainCollectionPage) Next() error {
26307	return page.NextWithContext(context.Background())
26308}
26309
26310// NotDone returns true if the page enumeration should be started or is not yet complete.
26311func (page TopLevelDomainCollectionPage) NotDone() bool {
26312	return !page.tldc.IsEmpty()
26313}
26314
26315// Response returns the raw server response from the last page request.
26316func (page TopLevelDomainCollectionPage) Response() TopLevelDomainCollection {
26317	return page.tldc
26318}
26319
26320// Values returns the slice of values for the current page or nil if there are no values.
26321func (page TopLevelDomainCollectionPage) Values() []TopLevelDomain {
26322	if page.tldc.IsEmpty() {
26323		return nil
26324	}
26325	return *page.tldc.Value
26326}
26327
26328// Creates a new instance of the TopLevelDomainCollectionPage type.
26329func NewTopLevelDomainCollectionPage(cur TopLevelDomainCollection, getNextPage func(context.Context, TopLevelDomainCollection) (TopLevelDomainCollection, error)) TopLevelDomainCollectionPage {
26330	return TopLevelDomainCollectionPage{
26331		fn:   getNextPage,
26332		tldc: cur,
26333	}
26334}
26335
26336// TopLevelDomainProperties topLevelDomain resource specific properties
26337type TopLevelDomainProperties struct {
26338	// Privacy - If <code>true</code>, then the top level domain supports domain privacy; otherwise, <code>false</code>.
26339	Privacy *bool `json:"privacy,omitempty"`
26340}
26341
26342// TriggeredJobHistory triggered Web Job History. List of Triggered Web Job Run Information elements.
26343type TriggeredJobHistory struct {
26344	autorest.Response `json:"-"`
26345	// TriggeredJobHistoryProperties - TriggeredJobHistory resource specific properties
26346	*TriggeredJobHistoryProperties `json:"properties,omitempty"`
26347	// ID - READ-ONLY; Resource Id.
26348	ID *string `json:"id,omitempty"`
26349	// Name - READ-ONLY; Resource Name.
26350	Name *string `json:"name,omitempty"`
26351	// Kind - Kind of resource.
26352	Kind *string `json:"kind,omitempty"`
26353	// Type - READ-ONLY; Resource type.
26354	Type *string `json:"type,omitempty"`
26355}
26356
26357// MarshalJSON is the custom marshaler for TriggeredJobHistory.
26358func (tjh TriggeredJobHistory) MarshalJSON() ([]byte, error) {
26359	objectMap := make(map[string]interface{})
26360	if tjh.TriggeredJobHistoryProperties != nil {
26361		objectMap["properties"] = tjh.TriggeredJobHistoryProperties
26362	}
26363	if tjh.Kind != nil {
26364		objectMap["kind"] = tjh.Kind
26365	}
26366	return json.Marshal(objectMap)
26367}
26368
26369// UnmarshalJSON is the custom unmarshaler for TriggeredJobHistory struct.
26370func (tjh *TriggeredJobHistory) UnmarshalJSON(body []byte) error {
26371	var m map[string]*json.RawMessage
26372	err := json.Unmarshal(body, &m)
26373	if err != nil {
26374		return err
26375	}
26376	for k, v := range m {
26377		switch k {
26378		case "properties":
26379			if v != nil {
26380				var triggeredJobHistoryProperties TriggeredJobHistoryProperties
26381				err = json.Unmarshal(*v, &triggeredJobHistoryProperties)
26382				if err != nil {
26383					return err
26384				}
26385				tjh.TriggeredJobHistoryProperties = &triggeredJobHistoryProperties
26386			}
26387		case "id":
26388			if v != nil {
26389				var ID string
26390				err = json.Unmarshal(*v, &ID)
26391				if err != nil {
26392					return err
26393				}
26394				tjh.ID = &ID
26395			}
26396		case "name":
26397			if v != nil {
26398				var name string
26399				err = json.Unmarshal(*v, &name)
26400				if err != nil {
26401					return err
26402				}
26403				tjh.Name = &name
26404			}
26405		case "kind":
26406			if v != nil {
26407				var kind string
26408				err = json.Unmarshal(*v, &kind)
26409				if err != nil {
26410					return err
26411				}
26412				tjh.Kind = &kind
26413			}
26414		case "type":
26415			if v != nil {
26416				var typeVar string
26417				err = json.Unmarshal(*v, &typeVar)
26418				if err != nil {
26419					return err
26420				}
26421				tjh.Type = &typeVar
26422			}
26423		}
26424	}
26425
26426	return nil
26427}
26428
26429// TriggeredJobHistoryCollection collection of Kudu continuous web job information elements.
26430type TriggeredJobHistoryCollection struct {
26431	autorest.Response `json:"-"`
26432	// Value - Collection of resources.
26433	Value *[]TriggeredJobHistory `json:"value,omitempty"`
26434	// NextLink - READ-ONLY; Link to next page of resources.
26435	NextLink *string `json:"nextLink,omitempty"`
26436}
26437
26438// MarshalJSON is the custom marshaler for TriggeredJobHistoryCollection.
26439func (tjhc TriggeredJobHistoryCollection) MarshalJSON() ([]byte, error) {
26440	objectMap := make(map[string]interface{})
26441	if tjhc.Value != nil {
26442		objectMap["value"] = tjhc.Value
26443	}
26444	return json.Marshal(objectMap)
26445}
26446
26447// TriggeredJobHistoryCollectionIterator provides access to a complete listing of TriggeredJobHistory
26448// values.
26449type TriggeredJobHistoryCollectionIterator struct {
26450	i    int
26451	page TriggeredJobHistoryCollectionPage
26452}
26453
26454// NextWithContext advances to the next value.  If there was an error making
26455// the request the iterator does not advance and the error is returned.
26456func (iter *TriggeredJobHistoryCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26457	if tracing.IsEnabled() {
26458		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionIterator.NextWithContext")
26459		defer func() {
26460			sc := -1
26461			if iter.Response().Response.Response != nil {
26462				sc = iter.Response().Response.Response.StatusCode
26463			}
26464			tracing.EndSpan(ctx, sc, err)
26465		}()
26466	}
26467	iter.i++
26468	if iter.i < len(iter.page.Values()) {
26469		return nil
26470	}
26471	err = iter.page.NextWithContext(ctx)
26472	if err != nil {
26473		iter.i--
26474		return err
26475	}
26476	iter.i = 0
26477	return nil
26478}
26479
26480// Next advances to the next value.  If there was an error making
26481// the request the iterator does not advance and the error is returned.
26482// Deprecated: Use NextWithContext() instead.
26483func (iter *TriggeredJobHistoryCollectionIterator) Next() error {
26484	return iter.NextWithContext(context.Background())
26485}
26486
26487// NotDone returns true if the enumeration should be started or is not yet complete.
26488func (iter TriggeredJobHistoryCollectionIterator) NotDone() bool {
26489	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26490}
26491
26492// Response returns the raw server response from the last page request.
26493func (iter TriggeredJobHistoryCollectionIterator) Response() TriggeredJobHistoryCollection {
26494	return iter.page.Response()
26495}
26496
26497// Value returns the current value or a zero-initialized value if the
26498// iterator has advanced beyond the end of the collection.
26499func (iter TriggeredJobHistoryCollectionIterator) Value() TriggeredJobHistory {
26500	if !iter.page.NotDone() {
26501		return TriggeredJobHistory{}
26502	}
26503	return iter.page.Values()[iter.i]
26504}
26505
26506// Creates a new instance of the TriggeredJobHistoryCollectionIterator type.
26507func NewTriggeredJobHistoryCollectionIterator(page TriggeredJobHistoryCollectionPage) TriggeredJobHistoryCollectionIterator {
26508	return TriggeredJobHistoryCollectionIterator{page: page}
26509}
26510
26511// IsEmpty returns true if the ListResult contains no values.
26512func (tjhc TriggeredJobHistoryCollection) IsEmpty() bool {
26513	return tjhc.Value == nil || len(*tjhc.Value) == 0
26514}
26515
26516// hasNextLink returns true if the NextLink is not empty.
26517func (tjhc TriggeredJobHistoryCollection) hasNextLink() bool {
26518	return tjhc.NextLink != nil && len(*tjhc.NextLink) != 0
26519}
26520
26521// triggeredJobHistoryCollectionPreparer prepares a request to retrieve the next set of results.
26522// It returns nil if no more results exist.
26523func (tjhc TriggeredJobHistoryCollection) triggeredJobHistoryCollectionPreparer(ctx context.Context) (*http.Request, error) {
26524	if !tjhc.hasNextLink() {
26525		return nil, nil
26526	}
26527	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26528		autorest.AsJSON(),
26529		autorest.AsGet(),
26530		autorest.WithBaseURL(to.String(tjhc.NextLink)))
26531}
26532
26533// TriggeredJobHistoryCollectionPage contains a page of TriggeredJobHistory values.
26534type TriggeredJobHistoryCollectionPage struct {
26535	fn   func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)
26536	tjhc TriggeredJobHistoryCollection
26537}
26538
26539// NextWithContext advances to the next page of values.  If there was an error making
26540// the request the page does not advance and the error is returned.
26541func (page *TriggeredJobHistoryCollectionPage) NextWithContext(ctx context.Context) (err error) {
26542	if tracing.IsEnabled() {
26543		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredJobHistoryCollectionPage.NextWithContext")
26544		defer func() {
26545			sc := -1
26546			if page.Response().Response.Response != nil {
26547				sc = page.Response().Response.Response.StatusCode
26548			}
26549			tracing.EndSpan(ctx, sc, err)
26550		}()
26551	}
26552	for {
26553		next, err := page.fn(ctx, page.tjhc)
26554		if err != nil {
26555			return err
26556		}
26557		page.tjhc = next
26558		if !next.hasNextLink() || !next.IsEmpty() {
26559			break
26560		}
26561	}
26562	return nil
26563}
26564
26565// Next advances to the next page of values.  If there was an error making
26566// the request the page does not advance and the error is returned.
26567// Deprecated: Use NextWithContext() instead.
26568func (page *TriggeredJobHistoryCollectionPage) Next() error {
26569	return page.NextWithContext(context.Background())
26570}
26571
26572// NotDone returns true if the page enumeration should be started or is not yet complete.
26573func (page TriggeredJobHistoryCollectionPage) NotDone() bool {
26574	return !page.tjhc.IsEmpty()
26575}
26576
26577// Response returns the raw server response from the last page request.
26578func (page TriggeredJobHistoryCollectionPage) Response() TriggeredJobHistoryCollection {
26579	return page.tjhc
26580}
26581
26582// Values returns the slice of values for the current page or nil if there are no values.
26583func (page TriggeredJobHistoryCollectionPage) Values() []TriggeredJobHistory {
26584	if page.tjhc.IsEmpty() {
26585		return nil
26586	}
26587	return *page.tjhc.Value
26588}
26589
26590// Creates a new instance of the TriggeredJobHistoryCollectionPage type.
26591func NewTriggeredJobHistoryCollectionPage(cur TriggeredJobHistoryCollection, getNextPage func(context.Context, TriggeredJobHistoryCollection) (TriggeredJobHistoryCollection, error)) TriggeredJobHistoryCollectionPage {
26592	return TriggeredJobHistoryCollectionPage{
26593		fn:   getNextPage,
26594		tjhc: cur,
26595	}
26596}
26597
26598// TriggeredJobHistoryProperties triggeredJobHistory resource specific properties
26599type TriggeredJobHistoryProperties struct {
26600	// Runs - List of triggered web job runs.
26601	Runs *[]TriggeredJobRun `json:"runs,omitempty"`
26602}
26603
26604// TriggeredJobRun triggered Web Job Run Information.
26605type TriggeredJobRun struct {
26606	// TriggeredJobRunProperties - TriggeredJobRun resource specific properties
26607	*TriggeredJobRunProperties `json:"properties,omitempty"`
26608	// ID - READ-ONLY; Resource Id.
26609	ID *string `json:"id,omitempty"`
26610	// Name - READ-ONLY; Resource Name.
26611	Name *string `json:"name,omitempty"`
26612	// Kind - Kind of resource.
26613	Kind *string `json:"kind,omitempty"`
26614	// Type - READ-ONLY; Resource type.
26615	Type *string `json:"type,omitempty"`
26616}
26617
26618// MarshalJSON is the custom marshaler for TriggeredJobRun.
26619func (tjr TriggeredJobRun) MarshalJSON() ([]byte, error) {
26620	objectMap := make(map[string]interface{})
26621	if tjr.TriggeredJobRunProperties != nil {
26622		objectMap["properties"] = tjr.TriggeredJobRunProperties
26623	}
26624	if tjr.Kind != nil {
26625		objectMap["kind"] = tjr.Kind
26626	}
26627	return json.Marshal(objectMap)
26628}
26629
26630// UnmarshalJSON is the custom unmarshaler for TriggeredJobRun struct.
26631func (tjr *TriggeredJobRun) UnmarshalJSON(body []byte) error {
26632	var m map[string]*json.RawMessage
26633	err := json.Unmarshal(body, &m)
26634	if err != nil {
26635		return err
26636	}
26637	for k, v := range m {
26638		switch k {
26639		case "properties":
26640			if v != nil {
26641				var triggeredJobRunProperties TriggeredJobRunProperties
26642				err = json.Unmarshal(*v, &triggeredJobRunProperties)
26643				if err != nil {
26644					return err
26645				}
26646				tjr.TriggeredJobRunProperties = &triggeredJobRunProperties
26647			}
26648		case "id":
26649			if v != nil {
26650				var ID string
26651				err = json.Unmarshal(*v, &ID)
26652				if err != nil {
26653					return err
26654				}
26655				tjr.ID = &ID
26656			}
26657		case "name":
26658			if v != nil {
26659				var name string
26660				err = json.Unmarshal(*v, &name)
26661				if err != nil {
26662					return err
26663				}
26664				tjr.Name = &name
26665			}
26666		case "kind":
26667			if v != nil {
26668				var kind string
26669				err = json.Unmarshal(*v, &kind)
26670				if err != nil {
26671					return err
26672				}
26673				tjr.Kind = &kind
26674			}
26675		case "type":
26676			if v != nil {
26677				var typeVar string
26678				err = json.Unmarshal(*v, &typeVar)
26679				if err != nil {
26680					return err
26681				}
26682				tjr.Type = &typeVar
26683			}
26684		}
26685	}
26686
26687	return nil
26688}
26689
26690// TriggeredJobRunProperties triggeredJobRun resource specific properties
26691type TriggeredJobRunProperties struct {
26692	// WebJobID - Job ID.
26693	WebJobID *string `json:"web_job_id,omitempty"`
26694	// WebJobName - Job name.
26695	WebJobName *string `json:"web_job_name,omitempty"`
26696	// Status - Job status. Possible values include: 'TriggeredWebJobStatusSuccess', 'TriggeredWebJobStatusFailed', 'TriggeredWebJobStatusError'
26697	Status TriggeredWebJobStatus `json:"status,omitempty"`
26698	// StartTime - Start time.
26699	StartTime *date.Time `json:"start_time,omitempty"`
26700	// EndTime - End time.
26701	EndTime *date.Time `json:"end_time,omitempty"`
26702	// Duration - Job duration.
26703	Duration *string `json:"duration,omitempty"`
26704	// OutputURL - Output URL.
26705	OutputURL *string `json:"output_url,omitempty"`
26706	// ErrorURL - Error URL.
26707	ErrorURL *string `json:"error_url,omitempty"`
26708	// URL - Job URL.
26709	URL *string `json:"url,omitempty"`
26710	// JobName - Job name.
26711	JobName *string `json:"job_name,omitempty"`
26712	// Trigger - Job trigger.
26713	Trigger *string `json:"trigger,omitempty"`
26714}
26715
26716// TriggeredWebJob triggered Web Job Information.
26717type TriggeredWebJob struct {
26718	autorest.Response `json:"-"`
26719	// TriggeredWebJobProperties - TriggeredWebJob resource specific properties
26720	*TriggeredWebJobProperties `json:"properties,omitempty"`
26721	// ID - READ-ONLY; Resource Id.
26722	ID *string `json:"id,omitempty"`
26723	// Name - READ-ONLY; Resource Name.
26724	Name *string `json:"name,omitempty"`
26725	// Kind - Kind of resource.
26726	Kind *string `json:"kind,omitempty"`
26727	// Type - READ-ONLY; Resource type.
26728	Type *string `json:"type,omitempty"`
26729}
26730
26731// MarshalJSON is the custom marshaler for TriggeredWebJob.
26732func (twj TriggeredWebJob) MarshalJSON() ([]byte, error) {
26733	objectMap := make(map[string]interface{})
26734	if twj.TriggeredWebJobProperties != nil {
26735		objectMap["properties"] = twj.TriggeredWebJobProperties
26736	}
26737	if twj.Kind != nil {
26738		objectMap["kind"] = twj.Kind
26739	}
26740	return json.Marshal(objectMap)
26741}
26742
26743// UnmarshalJSON is the custom unmarshaler for TriggeredWebJob struct.
26744func (twj *TriggeredWebJob) UnmarshalJSON(body []byte) error {
26745	var m map[string]*json.RawMessage
26746	err := json.Unmarshal(body, &m)
26747	if err != nil {
26748		return err
26749	}
26750	for k, v := range m {
26751		switch k {
26752		case "properties":
26753			if v != nil {
26754				var triggeredWebJobProperties TriggeredWebJobProperties
26755				err = json.Unmarshal(*v, &triggeredWebJobProperties)
26756				if err != nil {
26757					return err
26758				}
26759				twj.TriggeredWebJobProperties = &triggeredWebJobProperties
26760			}
26761		case "id":
26762			if v != nil {
26763				var ID string
26764				err = json.Unmarshal(*v, &ID)
26765				if err != nil {
26766					return err
26767				}
26768				twj.ID = &ID
26769			}
26770		case "name":
26771			if v != nil {
26772				var name string
26773				err = json.Unmarshal(*v, &name)
26774				if err != nil {
26775					return err
26776				}
26777				twj.Name = &name
26778			}
26779		case "kind":
26780			if v != nil {
26781				var kind string
26782				err = json.Unmarshal(*v, &kind)
26783				if err != nil {
26784					return err
26785				}
26786				twj.Kind = &kind
26787			}
26788		case "type":
26789			if v != nil {
26790				var typeVar string
26791				err = json.Unmarshal(*v, &typeVar)
26792				if err != nil {
26793					return err
26794				}
26795				twj.Type = &typeVar
26796			}
26797		}
26798	}
26799
26800	return nil
26801}
26802
26803// TriggeredWebJobCollection collection of Kudu continuous web job information elements.
26804type TriggeredWebJobCollection struct {
26805	autorest.Response `json:"-"`
26806	// Value - Collection of resources.
26807	Value *[]TriggeredWebJob `json:"value,omitempty"`
26808	// NextLink - READ-ONLY; Link to next page of resources.
26809	NextLink *string `json:"nextLink,omitempty"`
26810}
26811
26812// MarshalJSON is the custom marshaler for TriggeredWebJobCollection.
26813func (twjc TriggeredWebJobCollection) MarshalJSON() ([]byte, error) {
26814	objectMap := make(map[string]interface{})
26815	if twjc.Value != nil {
26816		objectMap["value"] = twjc.Value
26817	}
26818	return json.Marshal(objectMap)
26819}
26820
26821// TriggeredWebJobCollectionIterator provides access to a complete listing of TriggeredWebJob values.
26822type TriggeredWebJobCollectionIterator struct {
26823	i    int
26824	page TriggeredWebJobCollectionPage
26825}
26826
26827// NextWithContext advances to the next value.  If there was an error making
26828// the request the iterator does not advance and the error is returned.
26829func (iter *TriggeredWebJobCollectionIterator) NextWithContext(ctx context.Context) (err error) {
26830	if tracing.IsEnabled() {
26831		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionIterator.NextWithContext")
26832		defer func() {
26833			sc := -1
26834			if iter.Response().Response.Response != nil {
26835				sc = iter.Response().Response.Response.StatusCode
26836			}
26837			tracing.EndSpan(ctx, sc, err)
26838		}()
26839	}
26840	iter.i++
26841	if iter.i < len(iter.page.Values()) {
26842		return nil
26843	}
26844	err = iter.page.NextWithContext(ctx)
26845	if err != nil {
26846		iter.i--
26847		return err
26848	}
26849	iter.i = 0
26850	return nil
26851}
26852
26853// Next advances to the next value.  If there was an error making
26854// the request the iterator does not advance and the error is returned.
26855// Deprecated: Use NextWithContext() instead.
26856func (iter *TriggeredWebJobCollectionIterator) Next() error {
26857	return iter.NextWithContext(context.Background())
26858}
26859
26860// NotDone returns true if the enumeration should be started or is not yet complete.
26861func (iter TriggeredWebJobCollectionIterator) NotDone() bool {
26862	return iter.page.NotDone() && iter.i < len(iter.page.Values())
26863}
26864
26865// Response returns the raw server response from the last page request.
26866func (iter TriggeredWebJobCollectionIterator) Response() TriggeredWebJobCollection {
26867	return iter.page.Response()
26868}
26869
26870// Value returns the current value or a zero-initialized value if the
26871// iterator has advanced beyond the end of the collection.
26872func (iter TriggeredWebJobCollectionIterator) Value() TriggeredWebJob {
26873	if !iter.page.NotDone() {
26874		return TriggeredWebJob{}
26875	}
26876	return iter.page.Values()[iter.i]
26877}
26878
26879// Creates a new instance of the TriggeredWebJobCollectionIterator type.
26880func NewTriggeredWebJobCollectionIterator(page TriggeredWebJobCollectionPage) TriggeredWebJobCollectionIterator {
26881	return TriggeredWebJobCollectionIterator{page: page}
26882}
26883
26884// IsEmpty returns true if the ListResult contains no values.
26885func (twjc TriggeredWebJobCollection) IsEmpty() bool {
26886	return twjc.Value == nil || len(*twjc.Value) == 0
26887}
26888
26889// hasNextLink returns true if the NextLink is not empty.
26890func (twjc TriggeredWebJobCollection) hasNextLink() bool {
26891	return twjc.NextLink != nil && len(*twjc.NextLink) != 0
26892}
26893
26894// triggeredWebJobCollectionPreparer prepares a request to retrieve the next set of results.
26895// It returns nil if no more results exist.
26896func (twjc TriggeredWebJobCollection) triggeredWebJobCollectionPreparer(ctx context.Context) (*http.Request, error) {
26897	if !twjc.hasNextLink() {
26898		return nil, nil
26899	}
26900	return autorest.Prepare((&http.Request{}).WithContext(ctx),
26901		autorest.AsJSON(),
26902		autorest.AsGet(),
26903		autorest.WithBaseURL(to.String(twjc.NextLink)))
26904}
26905
26906// TriggeredWebJobCollectionPage contains a page of TriggeredWebJob values.
26907type TriggeredWebJobCollectionPage struct {
26908	fn   func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)
26909	twjc TriggeredWebJobCollection
26910}
26911
26912// NextWithContext advances to the next page of values.  If there was an error making
26913// the request the page does not advance and the error is returned.
26914func (page *TriggeredWebJobCollectionPage) NextWithContext(ctx context.Context) (err error) {
26915	if tracing.IsEnabled() {
26916		ctx = tracing.StartSpan(ctx, fqdn+"/TriggeredWebJobCollectionPage.NextWithContext")
26917		defer func() {
26918			sc := -1
26919			if page.Response().Response.Response != nil {
26920				sc = page.Response().Response.Response.StatusCode
26921			}
26922			tracing.EndSpan(ctx, sc, err)
26923		}()
26924	}
26925	for {
26926		next, err := page.fn(ctx, page.twjc)
26927		if err != nil {
26928			return err
26929		}
26930		page.twjc = next
26931		if !next.hasNextLink() || !next.IsEmpty() {
26932			break
26933		}
26934	}
26935	return nil
26936}
26937
26938// Next advances to the next page of values.  If there was an error making
26939// the request the page does not advance and the error is returned.
26940// Deprecated: Use NextWithContext() instead.
26941func (page *TriggeredWebJobCollectionPage) Next() error {
26942	return page.NextWithContext(context.Background())
26943}
26944
26945// NotDone returns true if the page enumeration should be started or is not yet complete.
26946func (page TriggeredWebJobCollectionPage) NotDone() bool {
26947	return !page.twjc.IsEmpty()
26948}
26949
26950// Response returns the raw server response from the last page request.
26951func (page TriggeredWebJobCollectionPage) Response() TriggeredWebJobCollection {
26952	return page.twjc
26953}
26954
26955// Values returns the slice of values for the current page or nil if there are no values.
26956func (page TriggeredWebJobCollectionPage) Values() []TriggeredWebJob {
26957	if page.twjc.IsEmpty() {
26958		return nil
26959	}
26960	return *page.twjc.Value
26961}
26962
26963// Creates a new instance of the TriggeredWebJobCollectionPage type.
26964func NewTriggeredWebJobCollectionPage(cur TriggeredWebJobCollection, getNextPage func(context.Context, TriggeredWebJobCollection) (TriggeredWebJobCollection, error)) TriggeredWebJobCollectionPage {
26965	return TriggeredWebJobCollectionPage{
26966		fn:   getNextPage,
26967		twjc: cur,
26968	}
26969}
26970
26971// TriggeredWebJobProperties triggeredWebJob resource specific properties
26972type TriggeredWebJobProperties struct {
26973	// LatestRun - Latest job run information.
26974	LatestRun *TriggeredJobRun `json:"latest_run,omitempty"`
26975	// HistoryURL - History URL.
26976	HistoryURL *string `json:"history_url,omitempty"`
26977	// SchedulerLogsURL - Scheduler Logs URL.
26978	SchedulerLogsURL *string `json:"scheduler_logs_url,omitempty"`
26979	// RunCommand - Run command.
26980	RunCommand *string `json:"run_command,omitempty"`
26981	// URL - Job URL.
26982	URL *string `json:"url,omitempty"`
26983	// ExtraInfoURL - Extra Info URL.
26984	ExtraInfoURL *string `json:"extra_info_url,omitempty"`
26985	// WebJobType - Job type. Possible values include: 'Continuous', 'Triggered'
26986	WebJobType JobType `json:"web_job_type,omitempty"`
26987	// Error - Error information.
26988	Error *string `json:"error,omitempty"`
26989	// UsingSdk - Using SDK?
26990	UsingSdk *bool `json:"using_sdk,omitempty"`
26991	// Settings - Job settings.
26992	Settings map[string]interface{} `json:"settings"`
26993}
26994
26995// MarshalJSON is the custom marshaler for TriggeredWebJobProperties.
26996func (twj TriggeredWebJobProperties) MarshalJSON() ([]byte, error) {
26997	objectMap := make(map[string]interface{})
26998	if twj.LatestRun != nil {
26999		objectMap["latest_run"] = twj.LatestRun
27000	}
27001	if twj.HistoryURL != nil {
27002		objectMap["history_url"] = twj.HistoryURL
27003	}
27004	if twj.SchedulerLogsURL != nil {
27005		objectMap["scheduler_logs_url"] = twj.SchedulerLogsURL
27006	}
27007	if twj.RunCommand != nil {
27008		objectMap["run_command"] = twj.RunCommand
27009	}
27010	if twj.URL != nil {
27011		objectMap["url"] = twj.URL
27012	}
27013	if twj.ExtraInfoURL != nil {
27014		objectMap["extra_info_url"] = twj.ExtraInfoURL
27015	}
27016	if twj.WebJobType != "" {
27017		objectMap["web_job_type"] = twj.WebJobType
27018	}
27019	if twj.Error != nil {
27020		objectMap["error"] = twj.Error
27021	}
27022	if twj.UsingSdk != nil {
27023		objectMap["using_sdk"] = twj.UsingSdk
27024	}
27025	if twj.Settings != nil {
27026		objectMap["settings"] = twj.Settings
27027	}
27028	return json.Marshal(objectMap)
27029}
27030
27031// Twitter ...
27032type Twitter struct {
27033	// TwitterProperties - Twitter resource specific properties
27034	*TwitterProperties `json:"properties,omitempty"`
27035	// ID - READ-ONLY; Resource Id.
27036	ID *string `json:"id,omitempty"`
27037	// Name - READ-ONLY; Resource Name.
27038	Name *string `json:"name,omitempty"`
27039	// Kind - Kind of resource.
27040	Kind *string `json:"kind,omitempty"`
27041	// Type - READ-ONLY; Resource type.
27042	Type *string `json:"type,omitempty"`
27043}
27044
27045// MarshalJSON is the custom marshaler for Twitter.
27046func (t Twitter) MarshalJSON() ([]byte, error) {
27047	objectMap := make(map[string]interface{})
27048	if t.TwitterProperties != nil {
27049		objectMap["properties"] = t.TwitterProperties
27050	}
27051	if t.Kind != nil {
27052		objectMap["kind"] = t.Kind
27053	}
27054	return json.Marshal(objectMap)
27055}
27056
27057// UnmarshalJSON is the custom unmarshaler for Twitter struct.
27058func (t *Twitter) UnmarshalJSON(body []byte) error {
27059	var m map[string]*json.RawMessage
27060	err := json.Unmarshal(body, &m)
27061	if err != nil {
27062		return err
27063	}
27064	for k, v := range m {
27065		switch k {
27066		case "properties":
27067			if v != nil {
27068				var twitterProperties TwitterProperties
27069				err = json.Unmarshal(*v, &twitterProperties)
27070				if err != nil {
27071					return err
27072				}
27073				t.TwitterProperties = &twitterProperties
27074			}
27075		case "id":
27076			if v != nil {
27077				var ID string
27078				err = json.Unmarshal(*v, &ID)
27079				if err != nil {
27080					return err
27081				}
27082				t.ID = &ID
27083			}
27084		case "name":
27085			if v != nil {
27086				var name string
27087				err = json.Unmarshal(*v, &name)
27088				if err != nil {
27089					return err
27090				}
27091				t.Name = &name
27092			}
27093		case "kind":
27094			if v != nil {
27095				var kind string
27096				err = json.Unmarshal(*v, &kind)
27097				if err != nil {
27098					return err
27099				}
27100				t.Kind = &kind
27101			}
27102		case "type":
27103			if v != nil {
27104				var typeVar string
27105				err = json.Unmarshal(*v, &typeVar)
27106				if err != nil {
27107					return err
27108				}
27109				t.Type = &typeVar
27110			}
27111		}
27112	}
27113
27114	return nil
27115}
27116
27117// TwitterProperties twitter resource specific properties
27118type TwitterProperties struct {
27119	Enabled      *bool                `json:"enabled,omitempty"`
27120	Registration *TwitterRegistration `json:"registration,omitempty"`
27121}
27122
27123// TwitterRegistration ...
27124type TwitterRegistration struct {
27125	// TwitterRegistrationProperties - TwitterRegistration resource specific properties
27126	*TwitterRegistrationProperties `json:"properties,omitempty"`
27127	// ID - READ-ONLY; Resource Id.
27128	ID *string `json:"id,omitempty"`
27129	// Name - READ-ONLY; Resource Name.
27130	Name *string `json:"name,omitempty"`
27131	// Kind - Kind of resource.
27132	Kind *string `json:"kind,omitempty"`
27133	// Type - READ-ONLY; Resource type.
27134	Type *string `json:"type,omitempty"`
27135}
27136
27137// MarshalJSON is the custom marshaler for TwitterRegistration.
27138func (tr TwitterRegistration) MarshalJSON() ([]byte, error) {
27139	objectMap := make(map[string]interface{})
27140	if tr.TwitterRegistrationProperties != nil {
27141		objectMap["properties"] = tr.TwitterRegistrationProperties
27142	}
27143	if tr.Kind != nil {
27144		objectMap["kind"] = tr.Kind
27145	}
27146	return json.Marshal(objectMap)
27147}
27148
27149// UnmarshalJSON is the custom unmarshaler for TwitterRegistration struct.
27150func (tr *TwitterRegistration) UnmarshalJSON(body []byte) error {
27151	var m map[string]*json.RawMessage
27152	err := json.Unmarshal(body, &m)
27153	if err != nil {
27154		return err
27155	}
27156	for k, v := range m {
27157		switch k {
27158		case "properties":
27159			if v != nil {
27160				var twitterRegistrationProperties TwitterRegistrationProperties
27161				err = json.Unmarshal(*v, &twitterRegistrationProperties)
27162				if err != nil {
27163					return err
27164				}
27165				tr.TwitterRegistrationProperties = &twitterRegistrationProperties
27166			}
27167		case "id":
27168			if v != nil {
27169				var ID string
27170				err = json.Unmarshal(*v, &ID)
27171				if err != nil {
27172					return err
27173				}
27174				tr.ID = &ID
27175			}
27176		case "name":
27177			if v != nil {
27178				var name string
27179				err = json.Unmarshal(*v, &name)
27180				if err != nil {
27181					return err
27182				}
27183				tr.Name = &name
27184			}
27185		case "kind":
27186			if v != nil {
27187				var kind string
27188				err = json.Unmarshal(*v, &kind)
27189				if err != nil {
27190					return err
27191				}
27192				tr.Kind = &kind
27193			}
27194		case "type":
27195			if v != nil {
27196				var typeVar string
27197				err = json.Unmarshal(*v, &typeVar)
27198				if err != nil {
27199					return err
27200				}
27201				tr.Type = &typeVar
27202			}
27203		}
27204	}
27205
27206	return nil
27207}
27208
27209// TwitterRegistrationProperties twitterRegistration resource specific properties
27210type TwitterRegistrationProperties struct {
27211	ConsumerKey               *string `json:"consumerKey,omitempty"`
27212	ConsumerSecretSettingName *string `json:"consumerSecretSettingName,omitempty"`
27213}
27214
27215// Usage usage of the quota resource.
27216type Usage struct {
27217	// UsageProperties - Usage resource specific properties
27218	*UsageProperties `json:"properties,omitempty"`
27219	// ID - READ-ONLY; Resource Id.
27220	ID *string `json:"id,omitempty"`
27221	// Name - READ-ONLY; Resource Name.
27222	Name *string `json:"name,omitempty"`
27223	// Kind - Kind of resource.
27224	Kind *string `json:"kind,omitempty"`
27225	// Type - READ-ONLY; Resource type.
27226	Type *string `json:"type,omitempty"`
27227}
27228
27229// MarshalJSON is the custom marshaler for Usage.
27230func (u Usage) MarshalJSON() ([]byte, error) {
27231	objectMap := make(map[string]interface{})
27232	if u.UsageProperties != nil {
27233		objectMap["properties"] = u.UsageProperties
27234	}
27235	if u.Kind != nil {
27236		objectMap["kind"] = u.Kind
27237	}
27238	return json.Marshal(objectMap)
27239}
27240
27241// UnmarshalJSON is the custom unmarshaler for Usage struct.
27242func (u *Usage) UnmarshalJSON(body []byte) error {
27243	var m map[string]*json.RawMessage
27244	err := json.Unmarshal(body, &m)
27245	if err != nil {
27246		return err
27247	}
27248	for k, v := range m {
27249		switch k {
27250		case "properties":
27251			if v != nil {
27252				var usageProperties UsageProperties
27253				err = json.Unmarshal(*v, &usageProperties)
27254				if err != nil {
27255					return err
27256				}
27257				u.UsageProperties = &usageProperties
27258			}
27259		case "id":
27260			if v != nil {
27261				var ID string
27262				err = json.Unmarshal(*v, &ID)
27263				if err != nil {
27264					return err
27265				}
27266				u.ID = &ID
27267			}
27268		case "name":
27269			if v != nil {
27270				var name string
27271				err = json.Unmarshal(*v, &name)
27272				if err != nil {
27273					return err
27274				}
27275				u.Name = &name
27276			}
27277		case "kind":
27278			if v != nil {
27279				var kind string
27280				err = json.Unmarshal(*v, &kind)
27281				if err != nil {
27282					return err
27283				}
27284				u.Kind = &kind
27285			}
27286		case "type":
27287			if v != nil {
27288				var typeVar string
27289				err = json.Unmarshal(*v, &typeVar)
27290				if err != nil {
27291					return err
27292				}
27293				u.Type = &typeVar
27294			}
27295		}
27296	}
27297
27298	return nil
27299}
27300
27301// UsageCollection collection of usages.
27302type UsageCollection struct {
27303	autorest.Response `json:"-"`
27304	// Value - Collection of resources.
27305	Value *[]Usage `json:"value,omitempty"`
27306	// NextLink - READ-ONLY; Link to next page of resources.
27307	NextLink *string `json:"nextLink,omitempty"`
27308}
27309
27310// MarshalJSON is the custom marshaler for UsageCollection.
27311func (uc UsageCollection) MarshalJSON() ([]byte, error) {
27312	objectMap := make(map[string]interface{})
27313	if uc.Value != nil {
27314		objectMap["value"] = uc.Value
27315	}
27316	return json.Marshal(objectMap)
27317}
27318
27319// UsageCollectionIterator provides access to a complete listing of Usage values.
27320type UsageCollectionIterator struct {
27321	i    int
27322	page UsageCollectionPage
27323}
27324
27325// NextWithContext advances to the next value.  If there was an error making
27326// the request the iterator does not advance and the error is returned.
27327func (iter *UsageCollectionIterator) NextWithContext(ctx context.Context) (err error) {
27328	if tracing.IsEnabled() {
27329		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionIterator.NextWithContext")
27330		defer func() {
27331			sc := -1
27332			if iter.Response().Response.Response != nil {
27333				sc = iter.Response().Response.Response.StatusCode
27334			}
27335			tracing.EndSpan(ctx, sc, err)
27336		}()
27337	}
27338	iter.i++
27339	if iter.i < len(iter.page.Values()) {
27340		return nil
27341	}
27342	err = iter.page.NextWithContext(ctx)
27343	if err != nil {
27344		iter.i--
27345		return err
27346	}
27347	iter.i = 0
27348	return nil
27349}
27350
27351// Next advances to the next value.  If there was an error making
27352// the request the iterator does not advance and the error is returned.
27353// Deprecated: Use NextWithContext() instead.
27354func (iter *UsageCollectionIterator) Next() error {
27355	return iter.NextWithContext(context.Background())
27356}
27357
27358// NotDone returns true if the enumeration should be started or is not yet complete.
27359func (iter UsageCollectionIterator) NotDone() bool {
27360	return iter.page.NotDone() && iter.i < len(iter.page.Values())
27361}
27362
27363// Response returns the raw server response from the last page request.
27364func (iter UsageCollectionIterator) Response() UsageCollection {
27365	return iter.page.Response()
27366}
27367
27368// Value returns the current value or a zero-initialized value if the
27369// iterator has advanced beyond the end of the collection.
27370func (iter UsageCollectionIterator) Value() Usage {
27371	if !iter.page.NotDone() {
27372		return Usage{}
27373	}
27374	return iter.page.Values()[iter.i]
27375}
27376
27377// Creates a new instance of the UsageCollectionIterator type.
27378func NewUsageCollectionIterator(page UsageCollectionPage) UsageCollectionIterator {
27379	return UsageCollectionIterator{page: page}
27380}
27381
27382// IsEmpty returns true if the ListResult contains no values.
27383func (uc UsageCollection) IsEmpty() bool {
27384	return uc.Value == nil || len(*uc.Value) == 0
27385}
27386
27387// hasNextLink returns true if the NextLink is not empty.
27388func (uc UsageCollection) hasNextLink() bool {
27389	return uc.NextLink != nil && len(*uc.NextLink) != 0
27390}
27391
27392// usageCollectionPreparer prepares a request to retrieve the next set of results.
27393// It returns nil if no more results exist.
27394func (uc UsageCollection) usageCollectionPreparer(ctx context.Context) (*http.Request, error) {
27395	if !uc.hasNextLink() {
27396		return nil, nil
27397	}
27398	return autorest.Prepare((&http.Request{}).WithContext(ctx),
27399		autorest.AsJSON(),
27400		autorest.AsGet(),
27401		autorest.WithBaseURL(to.String(uc.NextLink)))
27402}
27403
27404// UsageCollectionPage contains a page of Usage values.
27405type UsageCollectionPage struct {
27406	fn func(context.Context, UsageCollection) (UsageCollection, error)
27407	uc UsageCollection
27408}
27409
27410// NextWithContext advances to the next page of values.  If there was an error making
27411// the request the page does not advance and the error is returned.
27412func (page *UsageCollectionPage) NextWithContext(ctx context.Context) (err error) {
27413	if tracing.IsEnabled() {
27414		ctx = tracing.StartSpan(ctx, fqdn+"/UsageCollectionPage.NextWithContext")
27415		defer func() {
27416			sc := -1
27417			if page.Response().Response.Response != nil {
27418				sc = page.Response().Response.Response.StatusCode
27419			}
27420			tracing.EndSpan(ctx, sc, err)
27421		}()
27422	}
27423	for {
27424		next, err := page.fn(ctx, page.uc)
27425		if err != nil {
27426			return err
27427		}
27428		page.uc = next
27429		if !next.hasNextLink() || !next.IsEmpty() {
27430			break
27431		}
27432	}
27433	return nil
27434}
27435
27436// Next advances to the next page of values.  If there was an error making
27437// the request the page does not advance and the error is returned.
27438// Deprecated: Use NextWithContext() instead.
27439func (page *UsageCollectionPage) Next() error {
27440	return page.NextWithContext(context.Background())
27441}
27442
27443// NotDone returns true if the page enumeration should be started or is not yet complete.
27444func (page UsageCollectionPage) NotDone() bool {
27445	return !page.uc.IsEmpty()
27446}
27447
27448// Response returns the raw server response from the last page request.
27449func (page UsageCollectionPage) Response() UsageCollection {
27450	return page.uc
27451}
27452
27453// Values returns the slice of values for the current page or nil if there are no values.
27454func (page UsageCollectionPage) Values() []Usage {
27455	if page.uc.IsEmpty() {
27456		return nil
27457	}
27458	return *page.uc.Value
27459}
27460
27461// Creates a new instance of the UsageCollectionPage type.
27462func NewUsageCollectionPage(cur UsageCollection, getNextPage func(context.Context, UsageCollection) (UsageCollection, error)) UsageCollectionPage {
27463	return UsageCollectionPage{
27464		fn: getNextPage,
27465		uc: cur,
27466	}
27467}
27468
27469// UsageProperties usage resource specific properties
27470type UsageProperties struct {
27471	// DisplayName - READ-ONLY; Friendly name shown in the UI.
27472	DisplayName *string `json:"displayName,omitempty"`
27473	// ResourceName - READ-ONLY; Name of the quota resource.
27474	ResourceName *string `json:"resourceName,omitempty"`
27475	// Unit - READ-ONLY; Units of measurement for the quota resource.
27476	Unit *string `json:"unit,omitempty"`
27477	// CurrentValue - READ-ONLY; The current value of the resource counter.
27478	CurrentValue *int64 `json:"currentValue,omitempty"`
27479	// Limit - READ-ONLY; The resource limit.
27480	Limit *int64 `json:"limit,omitempty"`
27481	// NextResetTime - READ-ONLY; Next reset time for the resource counter.
27482	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
27483	// ComputeMode - READ-ONLY; Compute mode used for this usage. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
27484	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
27485	// SiteMode - READ-ONLY; Site mode used for this usage.
27486	SiteMode *string `json:"siteMode,omitempty"`
27487}
27488
27489// User user credentials used for publishing activity.
27490type User struct {
27491	autorest.Response `json:"-"`
27492	// UserProperties - User resource specific properties
27493	*UserProperties `json:"properties,omitempty"`
27494	// ID - READ-ONLY; Resource Id.
27495	ID *string `json:"id,omitempty"`
27496	// Name - READ-ONLY; Resource Name.
27497	Name *string `json:"name,omitempty"`
27498	// Kind - Kind of resource.
27499	Kind *string `json:"kind,omitempty"`
27500	// Type - READ-ONLY; Resource type.
27501	Type *string `json:"type,omitempty"`
27502}
27503
27504// MarshalJSON is the custom marshaler for User.
27505func (u User) MarshalJSON() ([]byte, error) {
27506	objectMap := make(map[string]interface{})
27507	if u.UserProperties != nil {
27508		objectMap["properties"] = u.UserProperties
27509	}
27510	if u.Kind != nil {
27511		objectMap["kind"] = u.Kind
27512	}
27513	return json.Marshal(objectMap)
27514}
27515
27516// UnmarshalJSON is the custom unmarshaler for User struct.
27517func (u *User) UnmarshalJSON(body []byte) error {
27518	var m map[string]*json.RawMessage
27519	err := json.Unmarshal(body, &m)
27520	if err != nil {
27521		return err
27522	}
27523	for k, v := range m {
27524		switch k {
27525		case "properties":
27526			if v != nil {
27527				var userProperties UserProperties
27528				err = json.Unmarshal(*v, &userProperties)
27529				if err != nil {
27530					return err
27531				}
27532				u.UserProperties = &userProperties
27533			}
27534		case "id":
27535			if v != nil {
27536				var ID string
27537				err = json.Unmarshal(*v, &ID)
27538				if err != nil {
27539					return err
27540				}
27541				u.ID = &ID
27542			}
27543		case "name":
27544			if v != nil {
27545				var name string
27546				err = json.Unmarshal(*v, &name)
27547				if err != nil {
27548					return err
27549				}
27550				u.Name = &name
27551			}
27552		case "kind":
27553			if v != nil {
27554				var kind string
27555				err = json.Unmarshal(*v, &kind)
27556				if err != nil {
27557					return err
27558				}
27559				u.Kind = &kind
27560			}
27561		case "type":
27562			if v != nil {
27563				var typeVar string
27564				err = json.Unmarshal(*v, &typeVar)
27565				if err != nil {
27566					return err
27567				}
27568				u.Type = &typeVar
27569			}
27570		}
27571	}
27572
27573	return nil
27574}
27575
27576// UserProperties user resource specific properties
27577type UserProperties struct {
27578	// PublishingUserName - Username used for publishing.
27579	PublishingUserName *string `json:"publishingUserName,omitempty"`
27580	// PublishingPassword - Password used for publishing.
27581	PublishingPassword *string `json:"publishingPassword,omitempty"`
27582	// PublishingPasswordHash - Password hash used for publishing.
27583	PublishingPasswordHash *string `json:"publishingPasswordHash,omitempty"`
27584	// PublishingPasswordHashSalt - Password hash salt used for publishing.
27585	PublishingPasswordHashSalt *string `json:"publishingPasswordHashSalt,omitempty"`
27586	// ScmURI - Url of SCM site.
27587	ScmURI *string `json:"scmUri,omitempty"`
27588}
27589
27590// ValidateProperties app properties used for validation.
27591type ValidateProperties struct {
27592	// ServerFarmID - ARM resource ID of an App Service plan that would host the app.
27593	ServerFarmID *string `json:"serverFarmId,omitempty"`
27594	// SkuName - Name of the target SKU for the App Service plan.
27595	SkuName *string `json:"skuName,omitempty"`
27596	// NeedLinuxWorkers - <code>true</code> if App Service plan is for Linux workers; otherwise, <code>false</code>.
27597	NeedLinuxWorkers *bool `json:"needLinuxWorkers,omitempty"`
27598	// IsSpot - <code>true</code> if App Service plan is for Spot instances; otherwise, <code>false</code>.
27599	IsSpot *bool `json:"isSpot,omitempty"`
27600	// Capacity - Target capacity of the App Service plan (number of VMs).
27601	Capacity *int32 `json:"capacity,omitempty"`
27602	// HostingEnvironment - Name of App Service Environment where app or App Service plan should be created.
27603	HostingEnvironment *string `json:"hostingEnvironment,omitempty"`
27604	// IsXenon - <code>true</code> if App Service plan is running as a windows container
27605	IsXenon *bool `json:"isXenon,omitempty"`
27606	// ContainerRegistryBaseURL - Base URL of the container registry
27607	ContainerRegistryBaseURL *string `json:"containerRegistryBaseUrl,omitempty"`
27608	// ContainerRegistryUsername - Username for to access the container registry
27609	ContainerRegistryUsername *string `json:"containerRegistryUsername,omitempty"`
27610	// ContainerRegistryPassword - Password for to access the container registry
27611	ContainerRegistryPassword *string `json:"containerRegistryPassword,omitempty"`
27612	// ContainerImageRepository - Repository name (image name)
27613	ContainerImageRepository *string `json:"containerImageRepository,omitempty"`
27614	// ContainerImageTag - Image tag
27615	ContainerImageTag *string `json:"containerImageTag,omitempty"`
27616	// ContainerImagePlatform - Platform (windows or linux)
27617	ContainerImagePlatform *string `json:"containerImagePlatform,omitempty"`
27618}
27619
27620// ValidateRequest resource validation request content.
27621type ValidateRequest struct {
27622	// Name - Resource name to verify.
27623	Name *string `json:"name,omitempty"`
27624	// Type - Resource type used for verification. Possible values include: 'ValidateResourceTypesServerFarm', 'ValidateResourceTypesSite'
27625	Type ValidateResourceTypes `json:"type,omitempty"`
27626	// Location - Expected location of the resource.
27627	Location *string `json:"location,omitempty"`
27628	// ValidateProperties - Properties of the resource to validate.
27629	*ValidateProperties `json:"properties,omitempty"`
27630}
27631
27632// MarshalJSON is the custom marshaler for ValidateRequest.
27633func (vr ValidateRequest) MarshalJSON() ([]byte, error) {
27634	objectMap := make(map[string]interface{})
27635	if vr.Name != nil {
27636		objectMap["name"] = vr.Name
27637	}
27638	if vr.Type != "" {
27639		objectMap["type"] = vr.Type
27640	}
27641	if vr.Location != nil {
27642		objectMap["location"] = vr.Location
27643	}
27644	if vr.ValidateProperties != nil {
27645		objectMap["properties"] = vr.ValidateProperties
27646	}
27647	return json.Marshal(objectMap)
27648}
27649
27650// UnmarshalJSON is the custom unmarshaler for ValidateRequest struct.
27651func (vr *ValidateRequest) UnmarshalJSON(body []byte) error {
27652	var m map[string]*json.RawMessage
27653	err := json.Unmarshal(body, &m)
27654	if err != nil {
27655		return err
27656	}
27657	for k, v := range m {
27658		switch k {
27659		case "name":
27660			if v != nil {
27661				var name string
27662				err = json.Unmarshal(*v, &name)
27663				if err != nil {
27664					return err
27665				}
27666				vr.Name = &name
27667			}
27668		case "type":
27669			if v != nil {
27670				var typeVar ValidateResourceTypes
27671				err = json.Unmarshal(*v, &typeVar)
27672				if err != nil {
27673					return err
27674				}
27675				vr.Type = typeVar
27676			}
27677		case "location":
27678			if v != nil {
27679				var location string
27680				err = json.Unmarshal(*v, &location)
27681				if err != nil {
27682					return err
27683				}
27684				vr.Location = &location
27685			}
27686		case "properties":
27687			if v != nil {
27688				var validateProperties ValidateProperties
27689				err = json.Unmarshal(*v, &validateProperties)
27690				if err != nil {
27691					return err
27692				}
27693				vr.ValidateProperties = &validateProperties
27694			}
27695		}
27696	}
27697
27698	return nil
27699}
27700
27701// ValidateResponse describes the result of resource validation.
27702type ValidateResponse struct {
27703	autorest.Response `json:"-"`
27704	// Status - Result of validation.
27705	Status *string `json:"status,omitempty"`
27706	// Error - Error details for the case when validation fails.
27707	Error *ValidateResponseError `json:"error,omitempty"`
27708}
27709
27710// ValidateResponseError error details for when validation fails.
27711type ValidateResponseError struct {
27712	// Code - Validation error code.
27713	Code *string `json:"code,omitempty"`
27714	// Message - Validation error message.
27715	Message *string `json:"message,omitempty"`
27716}
27717
27718// VirtualApplication virtual application in an app.
27719type VirtualApplication struct {
27720	// VirtualPath - Virtual path.
27721	VirtualPath *string `json:"virtualPath,omitempty"`
27722	// PhysicalPath - Physical path.
27723	PhysicalPath *string `json:"physicalPath,omitempty"`
27724	// PreloadEnabled - <code>true</code> if preloading is enabled; otherwise, <code>false</code>.
27725	PreloadEnabled *bool `json:"preloadEnabled,omitempty"`
27726	// VirtualDirectories - Virtual directories for virtual application.
27727	VirtualDirectories *[]VirtualDirectory `json:"virtualDirectories,omitempty"`
27728}
27729
27730// VirtualDirectory directory for virtual application.
27731type VirtualDirectory struct {
27732	// VirtualPath - Path to virtual application.
27733	VirtualPath *string `json:"virtualPath,omitempty"`
27734	// PhysicalPath - Physical path.
27735	PhysicalPath *string `json:"physicalPath,omitempty"`
27736}
27737
27738// VirtualIPMapping virtual IP mapping.
27739type VirtualIPMapping struct {
27740	// VirtualIP - Virtual IP address.
27741	VirtualIP *string `json:"virtualIP,omitempty"`
27742	// InternalHTTPPort - Internal HTTP port.
27743	InternalHTTPPort *int32 `json:"internalHttpPort,omitempty"`
27744	// InternalHTTPSPort - Internal HTTPS port.
27745	InternalHTTPSPort *int32 `json:"internalHttpsPort,omitempty"`
27746	// InUse - Is virtual IP mapping in use.
27747	InUse *bool `json:"inUse,omitempty"`
27748	// ServiceName - name of the service that virtual IP is assigned to
27749	ServiceName *string `json:"serviceName,omitempty"`
27750}
27751
27752// VirtualNetworkProfile specification for using a Virtual Network.
27753type VirtualNetworkProfile struct {
27754	// ID - Resource id of the Virtual Network.
27755	ID *string `json:"id,omitempty"`
27756	// Name - READ-ONLY; Name of the Virtual Network (read-only).
27757	Name *string `json:"name,omitempty"`
27758	// Type - READ-ONLY; Resource type of the Virtual Network (read-only).
27759	Type *string `json:"type,omitempty"`
27760	// Subnet - Subnet within the Virtual Network.
27761	Subnet *string `json:"subnet,omitempty"`
27762}
27763
27764// MarshalJSON is the custom marshaler for VirtualNetworkProfile.
27765func (vnp VirtualNetworkProfile) MarshalJSON() ([]byte, error) {
27766	objectMap := make(map[string]interface{})
27767	if vnp.ID != nil {
27768		objectMap["id"] = vnp.ID
27769	}
27770	if vnp.Subnet != nil {
27771		objectMap["subnet"] = vnp.Subnet
27772	}
27773	return json.Marshal(objectMap)
27774}
27775
27776// VnetGateway the Virtual Network gateway contract. This is used to give the Virtual Network gateway
27777// access to the VPN package.
27778type VnetGateway struct {
27779	autorest.Response `json:"-"`
27780	// VnetGatewayProperties - VnetGateway resource specific properties
27781	*VnetGatewayProperties `json:"properties,omitempty"`
27782	// ID - READ-ONLY; Resource Id.
27783	ID *string `json:"id,omitempty"`
27784	// Name - READ-ONLY; Resource Name.
27785	Name *string `json:"name,omitempty"`
27786	// Kind - Kind of resource.
27787	Kind *string `json:"kind,omitempty"`
27788	// Type - READ-ONLY; Resource type.
27789	Type *string `json:"type,omitempty"`
27790}
27791
27792// MarshalJSON is the custom marshaler for VnetGateway.
27793func (vg VnetGateway) MarshalJSON() ([]byte, error) {
27794	objectMap := make(map[string]interface{})
27795	if vg.VnetGatewayProperties != nil {
27796		objectMap["properties"] = vg.VnetGatewayProperties
27797	}
27798	if vg.Kind != nil {
27799		objectMap["kind"] = vg.Kind
27800	}
27801	return json.Marshal(objectMap)
27802}
27803
27804// UnmarshalJSON is the custom unmarshaler for VnetGateway struct.
27805func (vg *VnetGateway) UnmarshalJSON(body []byte) error {
27806	var m map[string]*json.RawMessage
27807	err := json.Unmarshal(body, &m)
27808	if err != nil {
27809		return err
27810	}
27811	for k, v := range m {
27812		switch k {
27813		case "properties":
27814			if v != nil {
27815				var vnetGatewayProperties VnetGatewayProperties
27816				err = json.Unmarshal(*v, &vnetGatewayProperties)
27817				if err != nil {
27818					return err
27819				}
27820				vg.VnetGatewayProperties = &vnetGatewayProperties
27821			}
27822		case "id":
27823			if v != nil {
27824				var ID string
27825				err = json.Unmarshal(*v, &ID)
27826				if err != nil {
27827					return err
27828				}
27829				vg.ID = &ID
27830			}
27831		case "name":
27832			if v != nil {
27833				var name string
27834				err = json.Unmarshal(*v, &name)
27835				if err != nil {
27836					return err
27837				}
27838				vg.Name = &name
27839			}
27840		case "kind":
27841			if v != nil {
27842				var kind string
27843				err = json.Unmarshal(*v, &kind)
27844				if err != nil {
27845					return err
27846				}
27847				vg.Kind = &kind
27848			}
27849		case "type":
27850			if v != nil {
27851				var typeVar string
27852				err = json.Unmarshal(*v, &typeVar)
27853				if err != nil {
27854					return err
27855				}
27856				vg.Type = &typeVar
27857			}
27858		}
27859	}
27860
27861	return nil
27862}
27863
27864// VnetGatewayProperties vnetGateway resource specific properties
27865type VnetGatewayProperties struct {
27866	// VnetName - The Virtual Network name.
27867	VnetName *string `json:"vnetName,omitempty"`
27868	// VpnPackageURI - The URI where the VPN package can be downloaded.
27869	VpnPackageURI *string `json:"vpnPackageUri,omitempty"`
27870}
27871
27872// VnetInfo virtual Network information contract.
27873type VnetInfo struct {
27874	autorest.Response `json:"-"`
27875	// VnetInfoProperties - VnetInfo resource specific properties
27876	*VnetInfoProperties `json:"properties,omitempty"`
27877	// ID - READ-ONLY; Resource Id.
27878	ID *string `json:"id,omitempty"`
27879	// Name - READ-ONLY; Resource Name.
27880	Name *string `json:"name,omitempty"`
27881	// Kind - Kind of resource.
27882	Kind *string `json:"kind,omitempty"`
27883	// Type - READ-ONLY; Resource type.
27884	Type *string `json:"type,omitempty"`
27885}
27886
27887// MarshalJSON is the custom marshaler for VnetInfo.
27888func (vi VnetInfo) MarshalJSON() ([]byte, error) {
27889	objectMap := make(map[string]interface{})
27890	if vi.VnetInfoProperties != nil {
27891		objectMap["properties"] = vi.VnetInfoProperties
27892	}
27893	if vi.Kind != nil {
27894		objectMap["kind"] = vi.Kind
27895	}
27896	return json.Marshal(objectMap)
27897}
27898
27899// UnmarshalJSON is the custom unmarshaler for VnetInfo struct.
27900func (vi *VnetInfo) UnmarshalJSON(body []byte) error {
27901	var m map[string]*json.RawMessage
27902	err := json.Unmarshal(body, &m)
27903	if err != nil {
27904		return err
27905	}
27906	for k, v := range m {
27907		switch k {
27908		case "properties":
27909			if v != nil {
27910				var vnetInfoProperties VnetInfoProperties
27911				err = json.Unmarshal(*v, &vnetInfoProperties)
27912				if err != nil {
27913					return err
27914				}
27915				vi.VnetInfoProperties = &vnetInfoProperties
27916			}
27917		case "id":
27918			if v != nil {
27919				var ID string
27920				err = json.Unmarshal(*v, &ID)
27921				if err != nil {
27922					return err
27923				}
27924				vi.ID = &ID
27925			}
27926		case "name":
27927			if v != nil {
27928				var name string
27929				err = json.Unmarshal(*v, &name)
27930				if err != nil {
27931					return err
27932				}
27933				vi.Name = &name
27934			}
27935		case "kind":
27936			if v != nil {
27937				var kind string
27938				err = json.Unmarshal(*v, &kind)
27939				if err != nil {
27940					return err
27941				}
27942				vi.Kind = &kind
27943			}
27944		case "type":
27945			if v != nil {
27946				var typeVar string
27947				err = json.Unmarshal(*v, &typeVar)
27948				if err != nil {
27949					return err
27950				}
27951				vi.Type = &typeVar
27952			}
27953		}
27954	}
27955
27956	return nil
27957}
27958
27959// VnetInfoProperties vnetInfo resource specific properties
27960type VnetInfoProperties struct {
27961	// VnetResourceID - The Virtual Network's resource ID.
27962	VnetResourceID *string `json:"vnetResourceId,omitempty"`
27963	// CertThumbprint - READ-ONLY; The client certificate thumbprint.
27964	CertThumbprint *string `json:"certThumbprint,omitempty"`
27965	// CertBlob - A certificate file (.cer) blob containing the public key of the private key used to authenticate a
27966	// Point-To-Site VPN connection.
27967	CertBlob *string `json:"certBlob,omitempty"`
27968	// Routes - READ-ONLY; The routes that this Virtual Network connection uses.
27969	Routes *[]VnetRoute `json:"routes,omitempty"`
27970	// ResyncRequired - READ-ONLY; <code>true</code> if a resync is required; otherwise, <code>false</code>.
27971	ResyncRequired *bool `json:"resyncRequired,omitempty"`
27972	// DNSServers - DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP addresses.
27973	DNSServers *string `json:"dnsServers,omitempty"`
27974	// IsSwift - Flag that is used to denote if this is VNET injection
27975	IsSwift *bool `json:"isSwift,omitempty"`
27976}
27977
27978// MarshalJSON is the custom marshaler for VnetInfoProperties.
27979func (vi VnetInfoProperties) MarshalJSON() ([]byte, error) {
27980	objectMap := make(map[string]interface{})
27981	if vi.VnetResourceID != nil {
27982		objectMap["vnetResourceId"] = vi.VnetResourceID
27983	}
27984	if vi.CertBlob != nil {
27985		objectMap["certBlob"] = vi.CertBlob
27986	}
27987	if vi.DNSServers != nil {
27988		objectMap["dnsServers"] = vi.DNSServers
27989	}
27990	if vi.IsSwift != nil {
27991		objectMap["isSwift"] = vi.IsSwift
27992	}
27993	return json.Marshal(objectMap)
27994}
27995
27996// VnetParameters the required set of inputs to validate a VNET
27997type VnetParameters struct {
27998	// VnetParametersProperties - VnetParameters resource specific properties
27999	*VnetParametersProperties `json:"properties,omitempty"`
28000	// ID - READ-ONLY; Resource Id.
28001	ID *string `json:"id,omitempty"`
28002	// Name - READ-ONLY; Resource Name.
28003	Name *string `json:"name,omitempty"`
28004	// Kind - Kind of resource.
28005	Kind *string `json:"kind,omitempty"`
28006	// Type - READ-ONLY; Resource type.
28007	Type *string `json:"type,omitempty"`
28008}
28009
28010// MarshalJSON is the custom marshaler for VnetParameters.
28011func (vp VnetParameters) MarshalJSON() ([]byte, error) {
28012	objectMap := make(map[string]interface{})
28013	if vp.VnetParametersProperties != nil {
28014		objectMap["properties"] = vp.VnetParametersProperties
28015	}
28016	if vp.Kind != nil {
28017		objectMap["kind"] = vp.Kind
28018	}
28019	return json.Marshal(objectMap)
28020}
28021
28022// UnmarshalJSON is the custom unmarshaler for VnetParameters struct.
28023func (vp *VnetParameters) UnmarshalJSON(body []byte) error {
28024	var m map[string]*json.RawMessage
28025	err := json.Unmarshal(body, &m)
28026	if err != nil {
28027		return err
28028	}
28029	for k, v := range m {
28030		switch k {
28031		case "properties":
28032			if v != nil {
28033				var vnetParametersProperties VnetParametersProperties
28034				err = json.Unmarshal(*v, &vnetParametersProperties)
28035				if err != nil {
28036					return err
28037				}
28038				vp.VnetParametersProperties = &vnetParametersProperties
28039			}
28040		case "id":
28041			if v != nil {
28042				var ID string
28043				err = json.Unmarshal(*v, &ID)
28044				if err != nil {
28045					return err
28046				}
28047				vp.ID = &ID
28048			}
28049		case "name":
28050			if v != nil {
28051				var name string
28052				err = json.Unmarshal(*v, &name)
28053				if err != nil {
28054					return err
28055				}
28056				vp.Name = &name
28057			}
28058		case "kind":
28059			if v != nil {
28060				var kind string
28061				err = json.Unmarshal(*v, &kind)
28062				if err != nil {
28063					return err
28064				}
28065				vp.Kind = &kind
28066			}
28067		case "type":
28068			if v != nil {
28069				var typeVar string
28070				err = json.Unmarshal(*v, &typeVar)
28071				if err != nil {
28072					return err
28073				}
28074				vp.Type = &typeVar
28075			}
28076		}
28077	}
28078
28079	return nil
28080}
28081
28082// VnetParametersProperties vnetParameters resource specific properties
28083type VnetParametersProperties struct {
28084	// VnetResourceGroup - The Resource Group of the VNET to be validated
28085	VnetResourceGroup *string `json:"vnetResourceGroup,omitempty"`
28086	// VnetName - The name of the VNET to be validated
28087	VnetName *string `json:"vnetName,omitempty"`
28088	// VnetSubnetName - The subnet name to be validated
28089	VnetSubnetName *string `json:"vnetSubnetName,omitempty"`
28090}
28091
28092// VnetRoute virtual Network route contract used to pass routing information for a Virtual Network.
28093type VnetRoute struct {
28094	autorest.Response `json:"-"`
28095	// VnetRouteProperties - VnetRoute resource specific properties
28096	*VnetRouteProperties `json:"properties,omitempty"`
28097	// ID - READ-ONLY; Resource Id.
28098	ID *string `json:"id,omitempty"`
28099	// Name - READ-ONLY; Resource Name.
28100	Name *string `json:"name,omitempty"`
28101	// Kind - Kind of resource.
28102	Kind *string `json:"kind,omitempty"`
28103	// Type - READ-ONLY; Resource type.
28104	Type *string `json:"type,omitempty"`
28105}
28106
28107// MarshalJSON is the custom marshaler for VnetRoute.
28108func (vr VnetRoute) MarshalJSON() ([]byte, error) {
28109	objectMap := make(map[string]interface{})
28110	if vr.VnetRouteProperties != nil {
28111		objectMap["properties"] = vr.VnetRouteProperties
28112	}
28113	if vr.Kind != nil {
28114		objectMap["kind"] = vr.Kind
28115	}
28116	return json.Marshal(objectMap)
28117}
28118
28119// UnmarshalJSON is the custom unmarshaler for VnetRoute struct.
28120func (vr *VnetRoute) UnmarshalJSON(body []byte) error {
28121	var m map[string]*json.RawMessage
28122	err := json.Unmarshal(body, &m)
28123	if err != nil {
28124		return err
28125	}
28126	for k, v := range m {
28127		switch k {
28128		case "properties":
28129			if v != nil {
28130				var vnetRouteProperties VnetRouteProperties
28131				err = json.Unmarshal(*v, &vnetRouteProperties)
28132				if err != nil {
28133					return err
28134				}
28135				vr.VnetRouteProperties = &vnetRouteProperties
28136			}
28137		case "id":
28138			if v != nil {
28139				var ID string
28140				err = json.Unmarshal(*v, &ID)
28141				if err != nil {
28142					return err
28143				}
28144				vr.ID = &ID
28145			}
28146		case "name":
28147			if v != nil {
28148				var name string
28149				err = json.Unmarshal(*v, &name)
28150				if err != nil {
28151					return err
28152				}
28153				vr.Name = &name
28154			}
28155		case "kind":
28156			if v != nil {
28157				var kind string
28158				err = json.Unmarshal(*v, &kind)
28159				if err != nil {
28160					return err
28161				}
28162				vr.Kind = &kind
28163			}
28164		case "type":
28165			if v != nil {
28166				var typeVar string
28167				err = json.Unmarshal(*v, &typeVar)
28168				if err != nil {
28169					return err
28170				}
28171				vr.Type = &typeVar
28172			}
28173		}
28174	}
28175
28176	return nil
28177}
28178
28179// VnetRouteProperties vnetRoute resource specific properties
28180type VnetRouteProperties struct {
28181	// StartAddress - The starting address for this route. This may also include a CIDR notation, in which case the end address must not be specified.
28182	StartAddress *string `json:"startAddress,omitempty"`
28183	// EndAddress - The ending address for this route. If the start address is specified in CIDR notation, this must be omitted.
28184	EndAddress *string `json:"endAddress,omitempty"`
28185	// RouteType - The type of route this is:
28186	// DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918
28187	// INHERITED - Routes inherited from the real Virtual Network routes
28188	// STATIC - Static route set on the app only
28189	// These values will be used for syncing an app's routes with those from a Virtual Network. Possible values include: 'DEFAULT', 'INHERITED', 'STATIC'
28190	RouteType RouteType `json:"routeType,omitempty"`
28191}
28192
28193// VnetValidationFailureDetails a class that describes the reason for a validation failure.
28194type VnetValidationFailureDetails struct {
28195	autorest.Response `json:"-"`
28196	// VnetValidationFailureDetailsProperties - VnetValidationFailureDetails resource specific properties
28197	*VnetValidationFailureDetailsProperties `json:"properties,omitempty"`
28198	// ID - READ-ONLY; Resource Id.
28199	ID *string `json:"id,omitempty"`
28200	// Name - READ-ONLY; Resource Name.
28201	Name *string `json:"name,omitempty"`
28202	// Kind - Kind of resource.
28203	Kind *string `json:"kind,omitempty"`
28204	// Type - READ-ONLY; Resource type.
28205	Type *string `json:"type,omitempty"`
28206}
28207
28208// MarshalJSON is the custom marshaler for VnetValidationFailureDetails.
28209func (vvfd VnetValidationFailureDetails) MarshalJSON() ([]byte, error) {
28210	objectMap := make(map[string]interface{})
28211	if vvfd.VnetValidationFailureDetailsProperties != nil {
28212		objectMap["properties"] = vvfd.VnetValidationFailureDetailsProperties
28213	}
28214	if vvfd.Kind != nil {
28215		objectMap["kind"] = vvfd.Kind
28216	}
28217	return json.Marshal(objectMap)
28218}
28219
28220// UnmarshalJSON is the custom unmarshaler for VnetValidationFailureDetails struct.
28221func (vvfd *VnetValidationFailureDetails) UnmarshalJSON(body []byte) error {
28222	var m map[string]*json.RawMessage
28223	err := json.Unmarshal(body, &m)
28224	if err != nil {
28225		return err
28226	}
28227	for k, v := range m {
28228		switch k {
28229		case "properties":
28230			if v != nil {
28231				var vnetValidationFailureDetailsProperties VnetValidationFailureDetailsProperties
28232				err = json.Unmarshal(*v, &vnetValidationFailureDetailsProperties)
28233				if err != nil {
28234					return err
28235				}
28236				vvfd.VnetValidationFailureDetailsProperties = &vnetValidationFailureDetailsProperties
28237			}
28238		case "id":
28239			if v != nil {
28240				var ID string
28241				err = json.Unmarshal(*v, &ID)
28242				if err != nil {
28243					return err
28244				}
28245				vvfd.ID = &ID
28246			}
28247		case "name":
28248			if v != nil {
28249				var name string
28250				err = json.Unmarshal(*v, &name)
28251				if err != nil {
28252					return err
28253				}
28254				vvfd.Name = &name
28255			}
28256		case "kind":
28257			if v != nil {
28258				var kind string
28259				err = json.Unmarshal(*v, &kind)
28260				if err != nil {
28261					return err
28262				}
28263				vvfd.Kind = &kind
28264			}
28265		case "type":
28266			if v != nil {
28267				var typeVar string
28268				err = json.Unmarshal(*v, &typeVar)
28269				if err != nil {
28270					return err
28271				}
28272				vvfd.Type = &typeVar
28273			}
28274		}
28275	}
28276
28277	return nil
28278}
28279
28280// VnetValidationFailureDetailsProperties vnetValidationFailureDetails resource specific properties
28281type VnetValidationFailureDetailsProperties struct {
28282	// Failed - A flag describing whether or not validation failed.
28283	Failed *bool `json:"failed,omitempty"`
28284	// FailedTests - A list of tests that failed in the validation.
28285	FailedTests *[]VnetValidationTestFailure `json:"failedTests,omitempty"`
28286}
28287
28288// VnetValidationTestFailure a class that describes a test that failed during NSG and UDR validation.
28289type VnetValidationTestFailure struct {
28290	// VnetValidationTestFailureProperties - VnetValidationTestFailure resource specific properties
28291	*VnetValidationTestFailureProperties `json:"properties,omitempty"`
28292	// ID - READ-ONLY; Resource Id.
28293	ID *string `json:"id,omitempty"`
28294	// Name - READ-ONLY; Resource Name.
28295	Name *string `json:"name,omitempty"`
28296	// Kind - Kind of resource.
28297	Kind *string `json:"kind,omitempty"`
28298	// Type - READ-ONLY; Resource type.
28299	Type *string `json:"type,omitempty"`
28300}
28301
28302// MarshalJSON is the custom marshaler for VnetValidationTestFailure.
28303func (vvtf VnetValidationTestFailure) MarshalJSON() ([]byte, error) {
28304	objectMap := make(map[string]interface{})
28305	if vvtf.VnetValidationTestFailureProperties != nil {
28306		objectMap["properties"] = vvtf.VnetValidationTestFailureProperties
28307	}
28308	if vvtf.Kind != nil {
28309		objectMap["kind"] = vvtf.Kind
28310	}
28311	return json.Marshal(objectMap)
28312}
28313
28314// UnmarshalJSON is the custom unmarshaler for VnetValidationTestFailure struct.
28315func (vvtf *VnetValidationTestFailure) UnmarshalJSON(body []byte) error {
28316	var m map[string]*json.RawMessage
28317	err := json.Unmarshal(body, &m)
28318	if err != nil {
28319		return err
28320	}
28321	for k, v := range m {
28322		switch k {
28323		case "properties":
28324			if v != nil {
28325				var vnetValidationTestFailureProperties VnetValidationTestFailureProperties
28326				err = json.Unmarshal(*v, &vnetValidationTestFailureProperties)
28327				if err != nil {
28328					return err
28329				}
28330				vvtf.VnetValidationTestFailureProperties = &vnetValidationTestFailureProperties
28331			}
28332		case "id":
28333			if v != nil {
28334				var ID string
28335				err = json.Unmarshal(*v, &ID)
28336				if err != nil {
28337					return err
28338				}
28339				vvtf.ID = &ID
28340			}
28341		case "name":
28342			if v != nil {
28343				var name string
28344				err = json.Unmarshal(*v, &name)
28345				if err != nil {
28346					return err
28347				}
28348				vvtf.Name = &name
28349			}
28350		case "kind":
28351			if v != nil {
28352				var kind string
28353				err = json.Unmarshal(*v, &kind)
28354				if err != nil {
28355					return err
28356				}
28357				vvtf.Kind = &kind
28358			}
28359		case "type":
28360			if v != nil {
28361				var typeVar string
28362				err = json.Unmarshal(*v, &typeVar)
28363				if err != nil {
28364					return err
28365				}
28366				vvtf.Type = &typeVar
28367			}
28368		}
28369	}
28370
28371	return nil
28372}
28373
28374// VnetValidationTestFailureProperties vnetValidationTestFailure resource specific properties
28375type VnetValidationTestFailureProperties struct {
28376	// TestName - The name of the test that failed.
28377	TestName *string `json:"testName,omitempty"`
28378	// Details - The details of what caused the failure, e.g. the blocking rule name, etc.
28379	Details *string `json:"details,omitempty"`
28380}
28381
28382// WorkerPool worker pool of an App Service Environment.
28383type WorkerPool struct {
28384	// WorkerSizeID - Worker size ID for referencing this worker pool.
28385	WorkerSizeID *int32 `json:"workerSizeId,omitempty"`
28386	// ComputeMode - Shared or dedicated app hosting. Possible values include: 'ComputeModeOptionsShared', 'ComputeModeOptionsDedicated', 'ComputeModeOptionsDynamic'
28387	ComputeMode ComputeModeOptions `json:"computeMode,omitempty"`
28388	// WorkerSize - VM size of the worker pool instances.
28389	WorkerSize *string `json:"workerSize,omitempty"`
28390	// WorkerCount - Number of instances in the worker pool.
28391	WorkerCount *int32 `json:"workerCount,omitempty"`
28392	// InstanceNames - READ-ONLY; Names of all instances in the worker pool (read only).
28393	InstanceNames *[]string `json:"instanceNames,omitempty"`
28394}
28395
28396// MarshalJSON is the custom marshaler for WorkerPool.
28397func (wp WorkerPool) MarshalJSON() ([]byte, error) {
28398	objectMap := make(map[string]interface{})
28399	if wp.WorkerSizeID != nil {
28400		objectMap["workerSizeId"] = wp.WorkerSizeID
28401	}
28402	if wp.ComputeMode != "" {
28403		objectMap["computeMode"] = wp.ComputeMode
28404	}
28405	if wp.WorkerSize != nil {
28406		objectMap["workerSize"] = wp.WorkerSize
28407	}
28408	if wp.WorkerCount != nil {
28409		objectMap["workerCount"] = wp.WorkerCount
28410	}
28411	return json.Marshal(objectMap)
28412}
28413
28414// WorkerPoolCollection collection of worker pools.
28415type WorkerPoolCollection struct {
28416	autorest.Response `json:"-"`
28417	// Value - Collection of resources.
28418	Value *[]WorkerPoolResource `json:"value,omitempty"`
28419	// NextLink - READ-ONLY; Link to next page of resources.
28420	NextLink *string `json:"nextLink,omitempty"`
28421}
28422
28423// MarshalJSON is the custom marshaler for WorkerPoolCollection.
28424func (wpc WorkerPoolCollection) MarshalJSON() ([]byte, error) {
28425	objectMap := make(map[string]interface{})
28426	if wpc.Value != nil {
28427		objectMap["value"] = wpc.Value
28428	}
28429	return json.Marshal(objectMap)
28430}
28431
28432// WorkerPoolCollectionIterator provides access to a complete listing of WorkerPoolResource values.
28433type WorkerPoolCollectionIterator struct {
28434	i    int
28435	page WorkerPoolCollectionPage
28436}
28437
28438// NextWithContext advances to the next value.  If there was an error making
28439// the request the iterator does not advance and the error is returned.
28440func (iter *WorkerPoolCollectionIterator) NextWithContext(ctx context.Context) (err error) {
28441	if tracing.IsEnabled() {
28442		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionIterator.NextWithContext")
28443		defer func() {
28444			sc := -1
28445			if iter.Response().Response.Response != nil {
28446				sc = iter.Response().Response.Response.StatusCode
28447			}
28448			tracing.EndSpan(ctx, sc, err)
28449		}()
28450	}
28451	iter.i++
28452	if iter.i < len(iter.page.Values()) {
28453		return nil
28454	}
28455	err = iter.page.NextWithContext(ctx)
28456	if err != nil {
28457		iter.i--
28458		return err
28459	}
28460	iter.i = 0
28461	return nil
28462}
28463
28464// Next advances to the next value.  If there was an error making
28465// the request the iterator does not advance and the error is returned.
28466// Deprecated: Use NextWithContext() instead.
28467func (iter *WorkerPoolCollectionIterator) Next() error {
28468	return iter.NextWithContext(context.Background())
28469}
28470
28471// NotDone returns true if the enumeration should be started or is not yet complete.
28472func (iter WorkerPoolCollectionIterator) NotDone() bool {
28473	return iter.page.NotDone() && iter.i < len(iter.page.Values())
28474}
28475
28476// Response returns the raw server response from the last page request.
28477func (iter WorkerPoolCollectionIterator) Response() WorkerPoolCollection {
28478	return iter.page.Response()
28479}
28480
28481// Value returns the current value or a zero-initialized value if the
28482// iterator has advanced beyond the end of the collection.
28483func (iter WorkerPoolCollectionIterator) Value() WorkerPoolResource {
28484	if !iter.page.NotDone() {
28485		return WorkerPoolResource{}
28486	}
28487	return iter.page.Values()[iter.i]
28488}
28489
28490// Creates a new instance of the WorkerPoolCollectionIterator type.
28491func NewWorkerPoolCollectionIterator(page WorkerPoolCollectionPage) WorkerPoolCollectionIterator {
28492	return WorkerPoolCollectionIterator{page: page}
28493}
28494
28495// IsEmpty returns true if the ListResult contains no values.
28496func (wpc WorkerPoolCollection) IsEmpty() bool {
28497	return wpc.Value == nil || len(*wpc.Value) == 0
28498}
28499
28500// hasNextLink returns true if the NextLink is not empty.
28501func (wpc WorkerPoolCollection) hasNextLink() bool {
28502	return wpc.NextLink != nil && len(*wpc.NextLink) != 0
28503}
28504
28505// workerPoolCollectionPreparer prepares a request to retrieve the next set of results.
28506// It returns nil if no more results exist.
28507func (wpc WorkerPoolCollection) workerPoolCollectionPreparer(ctx context.Context) (*http.Request, error) {
28508	if !wpc.hasNextLink() {
28509		return nil, nil
28510	}
28511	return autorest.Prepare((&http.Request{}).WithContext(ctx),
28512		autorest.AsJSON(),
28513		autorest.AsGet(),
28514		autorest.WithBaseURL(to.String(wpc.NextLink)))
28515}
28516
28517// WorkerPoolCollectionPage contains a page of WorkerPoolResource values.
28518type WorkerPoolCollectionPage struct {
28519	fn  func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)
28520	wpc WorkerPoolCollection
28521}
28522
28523// NextWithContext advances to the next page of values.  If there was an error making
28524// the request the page does not advance and the error is returned.
28525func (page *WorkerPoolCollectionPage) NextWithContext(ctx context.Context) (err error) {
28526	if tracing.IsEnabled() {
28527		ctx = tracing.StartSpan(ctx, fqdn+"/WorkerPoolCollectionPage.NextWithContext")
28528		defer func() {
28529			sc := -1
28530			if page.Response().Response.Response != nil {
28531				sc = page.Response().Response.Response.StatusCode
28532			}
28533			tracing.EndSpan(ctx, sc, err)
28534		}()
28535	}
28536	for {
28537		next, err := page.fn(ctx, page.wpc)
28538		if err != nil {
28539			return err
28540		}
28541		page.wpc = next
28542		if !next.hasNextLink() || !next.IsEmpty() {
28543			break
28544		}
28545	}
28546	return nil
28547}
28548
28549// Next advances to the next page of values.  If there was an error making
28550// the request the page does not advance and the error is returned.
28551// Deprecated: Use NextWithContext() instead.
28552func (page *WorkerPoolCollectionPage) Next() error {
28553	return page.NextWithContext(context.Background())
28554}
28555
28556// NotDone returns true if the page enumeration should be started or is not yet complete.
28557func (page WorkerPoolCollectionPage) NotDone() bool {
28558	return !page.wpc.IsEmpty()
28559}
28560
28561// Response returns the raw server response from the last page request.
28562func (page WorkerPoolCollectionPage) Response() WorkerPoolCollection {
28563	return page.wpc
28564}
28565
28566// Values returns the slice of values for the current page or nil if there are no values.
28567func (page WorkerPoolCollectionPage) Values() []WorkerPoolResource {
28568	if page.wpc.IsEmpty() {
28569		return nil
28570	}
28571	return *page.wpc.Value
28572}
28573
28574// Creates a new instance of the WorkerPoolCollectionPage type.
28575func NewWorkerPoolCollectionPage(cur WorkerPoolCollection, getNextPage func(context.Context, WorkerPoolCollection) (WorkerPoolCollection, error)) WorkerPoolCollectionPage {
28576	return WorkerPoolCollectionPage{
28577		fn:  getNextPage,
28578		wpc: cur,
28579	}
28580}
28581
28582// WorkerPoolResource worker pool of an App Service Environment ARM resource.
28583type WorkerPoolResource struct {
28584	autorest.Response `json:"-"`
28585	// WorkerPool - Core resource properties
28586	*WorkerPool `json:"properties,omitempty"`
28587	Sku         *SkuDescription `json:"sku,omitempty"`
28588	// ID - READ-ONLY; Resource Id.
28589	ID *string `json:"id,omitempty"`
28590	// Name - READ-ONLY; Resource Name.
28591	Name *string `json:"name,omitempty"`
28592	// Kind - Kind of resource.
28593	Kind *string `json:"kind,omitempty"`
28594	// Type - READ-ONLY; Resource type.
28595	Type *string `json:"type,omitempty"`
28596}
28597
28598// MarshalJSON is the custom marshaler for WorkerPoolResource.
28599func (wpr WorkerPoolResource) MarshalJSON() ([]byte, error) {
28600	objectMap := make(map[string]interface{})
28601	if wpr.WorkerPool != nil {
28602		objectMap["properties"] = wpr.WorkerPool
28603	}
28604	if wpr.Sku != nil {
28605		objectMap["sku"] = wpr.Sku
28606	}
28607	if wpr.Kind != nil {
28608		objectMap["kind"] = wpr.Kind
28609	}
28610	return json.Marshal(objectMap)
28611}
28612
28613// UnmarshalJSON is the custom unmarshaler for WorkerPoolResource struct.
28614func (wpr *WorkerPoolResource) UnmarshalJSON(body []byte) error {
28615	var m map[string]*json.RawMessage
28616	err := json.Unmarshal(body, &m)
28617	if err != nil {
28618		return err
28619	}
28620	for k, v := range m {
28621		switch k {
28622		case "properties":
28623			if v != nil {
28624				var workerPool WorkerPool
28625				err = json.Unmarshal(*v, &workerPool)
28626				if err != nil {
28627					return err
28628				}
28629				wpr.WorkerPool = &workerPool
28630			}
28631		case "sku":
28632			if v != nil {
28633				var sku SkuDescription
28634				err = json.Unmarshal(*v, &sku)
28635				if err != nil {
28636					return err
28637				}
28638				wpr.Sku = &sku
28639			}
28640		case "id":
28641			if v != nil {
28642				var ID string
28643				err = json.Unmarshal(*v, &ID)
28644				if err != nil {
28645					return err
28646				}
28647				wpr.ID = &ID
28648			}
28649		case "name":
28650			if v != nil {
28651				var name string
28652				err = json.Unmarshal(*v, &name)
28653				if err != nil {
28654					return err
28655				}
28656				wpr.Name = &name
28657			}
28658		case "kind":
28659			if v != nil {
28660				var kind string
28661				err = json.Unmarshal(*v, &kind)
28662				if err != nil {
28663					return err
28664				}
28665				wpr.Kind = &kind
28666			}
28667		case "type":
28668			if v != nil {
28669				var typeVar string
28670				err = json.Unmarshal(*v, &typeVar)
28671				if err != nil {
28672					return err
28673				}
28674				wpr.Type = &typeVar
28675			}
28676		}
28677	}
28678
28679	return nil
28680}
28681