1package synapse
2
3// Copyright (c) Microsoft Corporation. All rights reserved.
4// Licensed under the MIT License. See License.txt in the project root for license information.
5//
6// Code generated by Microsoft (R) AutoRest Code Generator.
7// Changes may cause incorrect behavior and will be lost if the code is regenerated.
8
9import (
10	"context"
11	"encoding/json"
12	"github.com/Azure/go-autorest/autorest"
13	"github.com/Azure/go-autorest/autorest/azure"
14	"github.com/Azure/go-autorest/autorest/date"
15	"github.com/Azure/go-autorest/autorest/to"
16	"github.com/Azure/go-autorest/tracing"
17	"github.com/gofrs/uuid"
18	"net/http"
19)
20
21// The package's fully qualified name.
22const fqdn = "github.com/Azure/azure-sdk-for-go/services/preview/synapse/mgmt/2019-06-01-preview/synapse"
23
24// AadAdminProperties workspace active directory administrator properties
25type AadAdminProperties struct {
26	// TenantID - Tenant ID of the workspace active directory administrator
27	TenantID *string `json:"tenantId,omitempty"`
28	// Login - Login of the workspace active directory administrator
29	Login *string `json:"login,omitempty"`
30	// AdministratorType - Workspace active directory administrator type
31	AdministratorType *string `json:"administratorType,omitempty"`
32	// Sid - Object ID of the workspace active directory administrator
33	Sid *string `json:"sid,omitempty"`
34}
35
36// AutoPauseProperties auto-pausing properties of a Big Data pool powered by Apache Spark
37type AutoPauseProperties struct {
38	// DelayInMinutes - Number of minutes of idle time before the Big Data pool is automatically paused.
39	DelayInMinutes *int32 `json:"delayInMinutes,omitempty"`
40	// Enabled - Whether auto-pausing is enabled for the Big Data pool.
41	Enabled *bool `json:"enabled,omitempty"`
42}
43
44// AutoScaleProperties auto-scaling properties of a Big Data pool powered by Apache Spark
45type AutoScaleProperties struct {
46	// MinNodeCount - The minimum number of nodes the Big Data pool can support.
47	MinNodeCount *int32 `json:"minNodeCount,omitempty"`
48	// Enabled - Whether automatic scaling is enabled for the Big Data pool.
49	Enabled *bool `json:"enabled,omitempty"`
50	// MaxNodeCount - The maximum number of nodes the Big Data pool can support.
51	MaxNodeCount *int32 `json:"maxNodeCount,omitempty"`
52}
53
54// AvailableRpOperation an operation that is available in this resource provider
55type AvailableRpOperation struct {
56	// Display - Display properties of the operation
57	Display *AvailableRpOperationDisplayInfo `json:"display,omitempty"`
58	// IsDataAction - Whether this operation is a data action
59	IsDataAction *string `json:"isDataAction,omitempty"`
60	// Name - Operation name
61	Name *string `json:"name,omitempty"`
62	// OperationMetaPropertyInfo - Operation properties
63	*OperationMetaPropertyInfo `json:"properties,omitempty"`
64	// Origin - Operation origin
65	Origin *string `json:"origin,omitempty"`
66}
67
68// MarshalJSON is the custom marshaler for AvailableRpOperation.
69func (aro AvailableRpOperation) MarshalJSON() ([]byte, error) {
70	objectMap := make(map[string]interface{})
71	if aro.Display != nil {
72		objectMap["display"] = aro.Display
73	}
74	if aro.IsDataAction != nil {
75		objectMap["isDataAction"] = aro.IsDataAction
76	}
77	if aro.Name != nil {
78		objectMap["name"] = aro.Name
79	}
80	if aro.OperationMetaPropertyInfo != nil {
81		objectMap["properties"] = aro.OperationMetaPropertyInfo
82	}
83	if aro.Origin != nil {
84		objectMap["origin"] = aro.Origin
85	}
86	return json.Marshal(objectMap)
87}
88
89// UnmarshalJSON is the custom unmarshaler for AvailableRpOperation struct.
90func (aro *AvailableRpOperation) UnmarshalJSON(body []byte) error {
91	var m map[string]*json.RawMessage
92	err := json.Unmarshal(body, &m)
93	if err != nil {
94		return err
95	}
96	for k, v := range m {
97		switch k {
98		case "display":
99			if v != nil {
100				var display AvailableRpOperationDisplayInfo
101				err = json.Unmarshal(*v, &display)
102				if err != nil {
103					return err
104				}
105				aro.Display = &display
106			}
107		case "isDataAction":
108			if v != nil {
109				var isDataAction string
110				err = json.Unmarshal(*v, &isDataAction)
111				if err != nil {
112					return err
113				}
114				aro.IsDataAction = &isDataAction
115			}
116		case "name":
117			if v != nil {
118				var name string
119				err = json.Unmarshal(*v, &name)
120				if err != nil {
121					return err
122				}
123				aro.Name = &name
124			}
125		case "properties":
126			if v != nil {
127				var operationMetaPropertyInfo OperationMetaPropertyInfo
128				err = json.Unmarshal(*v, &operationMetaPropertyInfo)
129				if err != nil {
130					return err
131				}
132				aro.OperationMetaPropertyInfo = &operationMetaPropertyInfo
133			}
134		case "origin":
135			if v != nil {
136				var origin string
137				err = json.Unmarshal(*v, &origin)
138				if err != nil {
139					return err
140				}
141				aro.Origin = &origin
142			}
143		}
144	}
145
146	return nil
147}
148
149// AvailableRpOperationDisplayInfo description of an available operation
150type AvailableRpOperationDisplayInfo struct {
151	// Description - Operation description
152	Description *string `json:"description,omitempty"`
153	// Resource - Resource type
154	Resource *string `json:"resource,omitempty"`
155	// Provider - Resource provider name
156	Provider *string `json:"provider,omitempty"`
157	// Operation - Operation name
158	Operation *string `json:"operation,omitempty"`
159}
160
161// AzureEntityResource the resource model definition for an Azure Resource Manager resource with an etag.
162type AzureEntityResource struct {
163	// Etag - READ-ONLY; Resource Etag.
164	Etag *string `json:"etag,omitempty"`
165	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
166	ID *string `json:"id,omitempty"`
167	// Name - READ-ONLY; The name of the resource
168	Name *string `json:"name,omitempty"`
169	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
170	Type *string `json:"type,omitempty"`
171}
172
173// MarshalJSON is the custom marshaler for AzureEntityResource.
174func (aer AzureEntityResource) MarshalJSON() ([]byte, error) {
175	objectMap := make(map[string]interface{})
176	return json.Marshal(objectMap)
177}
178
179// BigDataPoolPatchInfo properties patch for a Big Data pool
180type BigDataPoolPatchInfo struct {
181	// Tags - Updated tags for the Big Data pool
182	Tags map[string]*string `json:"tags"`
183}
184
185// MarshalJSON is the custom marshaler for BigDataPoolPatchInfo.
186func (bdppi BigDataPoolPatchInfo) MarshalJSON() ([]byte, error) {
187	objectMap := make(map[string]interface{})
188	if bdppi.Tags != nil {
189		objectMap["tags"] = bdppi.Tags
190	}
191	return json.Marshal(objectMap)
192}
193
194// BigDataPoolResourceInfo a Big Data pool
195type BigDataPoolResourceInfo struct {
196	autorest.Response `json:"-"`
197	// BigDataPoolResourceProperties - Big Data pool properties
198	*BigDataPoolResourceProperties `json:"properties,omitempty"`
199	// Tags - Resource tags.
200	Tags map[string]*string `json:"tags"`
201	// Location - The geo-location where the resource lives
202	Location *string `json:"location,omitempty"`
203	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
204	ID *string `json:"id,omitempty"`
205	// Name - READ-ONLY; The name of the resource
206	Name *string `json:"name,omitempty"`
207	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
208	Type *string `json:"type,omitempty"`
209}
210
211// MarshalJSON is the custom marshaler for BigDataPoolResourceInfo.
212func (bdpri BigDataPoolResourceInfo) MarshalJSON() ([]byte, error) {
213	objectMap := make(map[string]interface{})
214	if bdpri.BigDataPoolResourceProperties != nil {
215		objectMap["properties"] = bdpri.BigDataPoolResourceProperties
216	}
217	if bdpri.Tags != nil {
218		objectMap["tags"] = bdpri.Tags
219	}
220	if bdpri.Location != nil {
221		objectMap["location"] = bdpri.Location
222	}
223	return json.Marshal(objectMap)
224}
225
226// UnmarshalJSON is the custom unmarshaler for BigDataPoolResourceInfo struct.
227func (bdpri *BigDataPoolResourceInfo) UnmarshalJSON(body []byte) error {
228	var m map[string]*json.RawMessage
229	err := json.Unmarshal(body, &m)
230	if err != nil {
231		return err
232	}
233	for k, v := range m {
234		switch k {
235		case "properties":
236			if v != nil {
237				var bigDataPoolResourceProperties BigDataPoolResourceProperties
238				err = json.Unmarshal(*v, &bigDataPoolResourceProperties)
239				if err != nil {
240					return err
241				}
242				bdpri.BigDataPoolResourceProperties = &bigDataPoolResourceProperties
243			}
244		case "tags":
245			if v != nil {
246				var tags map[string]*string
247				err = json.Unmarshal(*v, &tags)
248				if err != nil {
249					return err
250				}
251				bdpri.Tags = tags
252			}
253		case "location":
254			if v != nil {
255				var location string
256				err = json.Unmarshal(*v, &location)
257				if err != nil {
258					return err
259				}
260				bdpri.Location = &location
261			}
262		case "id":
263			if v != nil {
264				var ID string
265				err = json.Unmarshal(*v, &ID)
266				if err != nil {
267					return err
268				}
269				bdpri.ID = &ID
270			}
271		case "name":
272			if v != nil {
273				var name string
274				err = json.Unmarshal(*v, &name)
275				if err != nil {
276					return err
277				}
278				bdpri.Name = &name
279			}
280		case "type":
281			if v != nil {
282				var typeVar string
283				err = json.Unmarshal(*v, &typeVar)
284				if err != nil {
285					return err
286				}
287				bdpri.Type = &typeVar
288			}
289		}
290	}
291
292	return nil
293}
294
295// BigDataPoolResourceInfoListResult collection of Big Data pool information
296type BigDataPoolResourceInfoListResult struct {
297	autorest.Response `json:"-"`
298	// NextLink - Link to the next page of results
299	NextLink *string `json:"nextLink,omitempty"`
300	// Value - List of Big Data pools
301	Value *[]BigDataPoolResourceInfo `json:"value,omitempty"`
302}
303
304// BigDataPoolResourceInfoListResultIterator provides access to a complete listing of
305// BigDataPoolResourceInfo values.
306type BigDataPoolResourceInfoListResultIterator struct {
307	i    int
308	page BigDataPoolResourceInfoListResultPage
309}
310
311// NextWithContext advances to the next value.  If there was an error making
312// the request the iterator does not advance and the error is returned.
313func (iter *BigDataPoolResourceInfoListResultIterator) NextWithContext(ctx context.Context) (err error) {
314	if tracing.IsEnabled() {
315		ctx = tracing.StartSpan(ctx, fqdn+"/BigDataPoolResourceInfoListResultIterator.NextWithContext")
316		defer func() {
317			sc := -1
318			if iter.Response().Response.Response != nil {
319				sc = iter.Response().Response.Response.StatusCode
320			}
321			tracing.EndSpan(ctx, sc, err)
322		}()
323	}
324	iter.i++
325	if iter.i < len(iter.page.Values()) {
326		return nil
327	}
328	err = iter.page.NextWithContext(ctx)
329	if err != nil {
330		iter.i--
331		return err
332	}
333	iter.i = 0
334	return nil
335}
336
337// Next advances to the next value.  If there was an error making
338// the request the iterator does not advance and the error is returned.
339// Deprecated: Use NextWithContext() instead.
340func (iter *BigDataPoolResourceInfoListResultIterator) Next() error {
341	return iter.NextWithContext(context.Background())
342}
343
344// NotDone returns true if the enumeration should be started or is not yet complete.
345func (iter BigDataPoolResourceInfoListResultIterator) NotDone() bool {
346	return iter.page.NotDone() && iter.i < len(iter.page.Values())
347}
348
349// Response returns the raw server response from the last page request.
350func (iter BigDataPoolResourceInfoListResultIterator) Response() BigDataPoolResourceInfoListResult {
351	return iter.page.Response()
352}
353
354// Value returns the current value or a zero-initialized value if the
355// iterator has advanced beyond the end of the collection.
356func (iter BigDataPoolResourceInfoListResultIterator) Value() BigDataPoolResourceInfo {
357	if !iter.page.NotDone() {
358		return BigDataPoolResourceInfo{}
359	}
360	return iter.page.Values()[iter.i]
361}
362
363// Creates a new instance of the BigDataPoolResourceInfoListResultIterator type.
364func NewBigDataPoolResourceInfoListResultIterator(page BigDataPoolResourceInfoListResultPage) BigDataPoolResourceInfoListResultIterator {
365	return BigDataPoolResourceInfoListResultIterator{page: page}
366}
367
368// IsEmpty returns true if the ListResult contains no values.
369func (bdprilr BigDataPoolResourceInfoListResult) IsEmpty() bool {
370	return bdprilr.Value == nil || len(*bdprilr.Value) == 0
371}
372
373// hasNextLink returns true if the NextLink is not empty.
374func (bdprilr BigDataPoolResourceInfoListResult) hasNextLink() bool {
375	return bdprilr.NextLink != nil && len(*bdprilr.NextLink) != 0
376}
377
378// bigDataPoolResourceInfoListResultPreparer prepares a request to retrieve the next set of results.
379// It returns nil if no more results exist.
380func (bdprilr BigDataPoolResourceInfoListResult) bigDataPoolResourceInfoListResultPreparer(ctx context.Context) (*http.Request, error) {
381	if !bdprilr.hasNextLink() {
382		return nil, nil
383	}
384	return autorest.Prepare((&http.Request{}).WithContext(ctx),
385		autorest.AsJSON(),
386		autorest.AsGet(),
387		autorest.WithBaseURL(to.String(bdprilr.NextLink)))
388}
389
390// BigDataPoolResourceInfoListResultPage contains a page of BigDataPoolResourceInfo values.
391type BigDataPoolResourceInfoListResultPage struct {
392	fn      func(context.Context, BigDataPoolResourceInfoListResult) (BigDataPoolResourceInfoListResult, error)
393	bdprilr BigDataPoolResourceInfoListResult
394}
395
396// NextWithContext advances to the next page of values.  If there was an error making
397// the request the page does not advance and the error is returned.
398func (page *BigDataPoolResourceInfoListResultPage) NextWithContext(ctx context.Context) (err error) {
399	if tracing.IsEnabled() {
400		ctx = tracing.StartSpan(ctx, fqdn+"/BigDataPoolResourceInfoListResultPage.NextWithContext")
401		defer func() {
402			sc := -1
403			if page.Response().Response.Response != nil {
404				sc = page.Response().Response.Response.StatusCode
405			}
406			tracing.EndSpan(ctx, sc, err)
407		}()
408	}
409	for {
410		next, err := page.fn(ctx, page.bdprilr)
411		if err != nil {
412			return err
413		}
414		page.bdprilr = next
415		if !next.hasNextLink() || !next.IsEmpty() {
416			break
417		}
418	}
419	return nil
420}
421
422// Next advances to the next page of values.  If there was an error making
423// the request the page does not advance and the error is returned.
424// Deprecated: Use NextWithContext() instead.
425func (page *BigDataPoolResourceInfoListResultPage) Next() error {
426	return page.NextWithContext(context.Background())
427}
428
429// NotDone returns true if the page enumeration should be started or is not yet complete.
430func (page BigDataPoolResourceInfoListResultPage) NotDone() bool {
431	return !page.bdprilr.IsEmpty()
432}
433
434// Response returns the raw server response from the last page request.
435func (page BigDataPoolResourceInfoListResultPage) Response() BigDataPoolResourceInfoListResult {
436	return page.bdprilr
437}
438
439// Values returns the slice of values for the current page or nil if there are no values.
440func (page BigDataPoolResourceInfoListResultPage) Values() []BigDataPoolResourceInfo {
441	if page.bdprilr.IsEmpty() {
442		return nil
443	}
444	return *page.bdprilr.Value
445}
446
447// Creates a new instance of the BigDataPoolResourceInfoListResultPage type.
448func NewBigDataPoolResourceInfoListResultPage(cur BigDataPoolResourceInfoListResult, getNextPage func(context.Context, BigDataPoolResourceInfoListResult) (BigDataPoolResourceInfoListResult, error)) BigDataPoolResourceInfoListResultPage {
449	return BigDataPoolResourceInfoListResultPage{
450		fn:      getNextPage,
451		bdprilr: cur,
452	}
453}
454
455// BigDataPoolResourceProperties properties of a Big Data pool powered by Apache Spark
456type BigDataPoolResourceProperties struct {
457	// ProvisioningState - The state of the Big Data pool.
458	ProvisioningState *string `json:"provisioningState,omitempty"`
459	// AutoScale - Auto-scaling properties
460	AutoScale *AutoScaleProperties `json:"autoScale,omitempty"`
461	// CreationDate - The time when the Big Data pool was created.
462	CreationDate *date.Time `json:"creationDate,omitempty"`
463	// AutoPause - Auto-pausing properties
464	AutoPause *AutoPauseProperties `json:"autoPause,omitempty"`
465	// IsComputeIsolationEnabled - Whether compute isolation is required or not.
466	IsComputeIsolationEnabled *bool `json:"isComputeIsolationEnabled,omitempty"`
467	// HaveLibraryRequirementsChanged - Whether library requirements changed.
468	HaveLibraryRequirementsChanged *bool `json:"haveLibraryRequirementsChanged,omitempty"`
469	// SessionLevelPackagesEnabled - Whether session level packages enabled.
470	SessionLevelPackagesEnabled *bool `json:"sessionLevelPackagesEnabled,omitempty"`
471	// SparkEventsFolder - The Spark events folder
472	SparkEventsFolder *string `json:"sparkEventsFolder,omitempty"`
473	// NodeCount - The number of nodes in the Big Data pool.
474	NodeCount *int32 `json:"nodeCount,omitempty"`
475	// LibraryRequirements - Library version requirements
476	LibraryRequirements *LibraryRequirements `json:"libraryRequirements,omitempty"`
477	// SparkConfigProperties - Spark configuration file to specify additional properties
478	SparkConfigProperties *LibraryRequirements `json:"sparkConfigProperties,omitempty"`
479	// SparkVersion - The Apache Spark version.
480	SparkVersion *string `json:"sparkVersion,omitempty"`
481	// DefaultSparkLogFolder - The default folder where Spark logs will be written.
482	DefaultSparkLogFolder *string `json:"defaultSparkLogFolder,omitempty"`
483	// NodeSize - The level of compute power that each node in the Big Data pool has. Possible values include: 'NodeSizeNone', 'NodeSizeSmall', 'NodeSizeMedium', 'NodeSizeLarge', 'NodeSizeXLarge', 'NodeSizeXXLarge', 'NodeSizeXXXLarge'
484	NodeSize NodeSize `json:"nodeSize,omitempty"`
485	// NodeSizeFamily - The kind of nodes that the Big Data pool provides. Possible values include: 'NodeSizeFamilyNone', 'NodeSizeFamilyMemoryOptimized'
486	NodeSizeFamily NodeSizeFamily `json:"nodeSizeFamily,omitempty"`
487}
488
489// BigDataPoolsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
490// long-running operation.
491type BigDataPoolsCreateOrUpdateFuture struct {
492	azure.FutureAPI
493	// Result returns the result of the asynchronous operation.
494	// If the operation has not completed it will return an error.
495	Result func(BigDataPoolsClient) (BigDataPoolResourceInfo, error)
496}
497
498// UnmarshalJSON is the custom unmarshaller for CreateFuture.
499func (future *BigDataPoolsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
500	var azFuture azure.Future
501	if err := json.Unmarshal(body, &azFuture); err != nil {
502		return err
503	}
504	future.FutureAPI = &azFuture
505	future.Result = future.result
506	return nil
507}
508
509// result is the default implementation for BigDataPoolsCreateOrUpdateFuture.Result.
510func (future *BigDataPoolsCreateOrUpdateFuture) result(client BigDataPoolsClient) (bdpri BigDataPoolResourceInfo, err error) {
511	var done bool
512	done, err = future.DoneWithContext(context.Background(), client)
513	if err != nil {
514		err = autorest.NewErrorWithError(err, "synapse.BigDataPoolsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
515		return
516	}
517	if !done {
518		bdpri.Response.Response = future.Response()
519		err = azure.NewAsyncOpIncompleteError("synapse.BigDataPoolsCreateOrUpdateFuture")
520		return
521	}
522	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
523	if bdpri.Response.Response, err = future.GetResult(sender); err == nil && bdpri.Response.Response.StatusCode != http.StatusNoContent {
524		bdpri, err = client.CreateOrUpdateResponder(bdpri.Response.Response)
525		if err != nil {
526			err = autorest.NewErrorWithError(err, "synapse.BigDataPoolsCreateOrUpdateFuture", "Result", bdpri.Response.Response, "Failure responding to request")
527		}
528	}
529	return
530}
531
532// BigDataPoolsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
533// operation.
534type BigDataPoolsDeleteFuture struct {
535	azure.FutureAPI
536	// Result returns the result of the asynchronous operation.
537	// If the operation has not completed it will return an error.
538	Result func(BigDataPoolsClient) (SetObject, error)
539}
540
541// UnmarshalJSON is the custom unmarshaller for CreateFuture.
542func (future *BigDataPoolsDeleteFuture) UnmarshalJSON(body []byte) error {
543	var azFuture azure.Future
544	if err := json.Unmarshal(body, &azFuture); err != nil {
545		return err
546	}
547	future.FutureAPI = &azFuture
548	future.Result = future.result
549	return nil
550}
551
552// result is the default implementation for BigDataPoolsDeleteFuture.Result.
553func (future *BigDataPoolsDeleteFuture) result(client BigDataPoolsClient) (so SetObject, err error) {
554	var done bool
555	done, err = future.DoneWithContext(context.Background(), client)
556	if err != nil {
557		err = autorest.NewErrorWithError(err, "synapse.BigDataPoolsDeleteFuture", "Result", future.Response(), "Polling failure")
558		return
559	}
560	if !done {
561		so.Response.Response = future.Response()
562		err = azure.NewAsyncOpIncompleteError("synapse.BigDataPoolsDeleteFuture")
563		return
564	}
565	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
566	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
567		so, err = client.DeleteResponder(so.Response.Response)
568		if err != nil {
569			err = autorest.NewErrorWithError(err, "synapse.BigDataPoolsDeleteFuture", "Result", so.Response.Response, "Failure responding to request")
570		}
571	}
572	return
573}
574
575// CheckNameAvailabilityRequest a request about whether a workspace name is available
576type CheckNameAvailabilityRequest struct {
577	// Name - Workspace name
578	Name *string `json:"name,omitempty"`
579	// Type - Type: workspace
580	Type *string `json:"type,omitempty"`
581}
582
583// CheckNameAvailabilityResponse a response saying whether the workspace name is available
584type CheckNameAvailabilityResponse struct {
585	autorest.Response `json:"-"`
586	// Message - Validation message
587	Message *string `json:"message,omitempty"`
588	// Available - Whether the workspace name is available
589	Available *bool `json:"available,omitempty"`
590	// Reason - Reason the workspace name is or is not available
591	Reason *string `json:"reason,omitempty"`
592	// Name - Workspace name
593	Name *string `json:"name,omitempty"`
594}
595
596// CloudError the object that defines the structure of an Azure Synapse error response.
597type CloudError struct {
598	// CloudErrorBody - Error data
599	*CloudErrorBody `json:"error,omitempty"`
600}
601
602// MarshalJSON is the custom marshaler for CloudError.
603func (ce CloudError) MarshalJSON() ([]byte, error) {
604	objectMap := make(map[string]interface{})
605	if ce.CloudErrorBody != nil {
606		objectMap["error"] = ce.CloudErrorBody
607	}
608	return json.Marshal(objectMap)
609}
610
611// UnmarshalJSON is the custom unmarshaler for CloudError struct.
612func (ce *CloudError) UnmarshalJSON(body []byte) error {
613	var m map[string]*json.RawMessage
614	err := json.Unmarshal(body, &m)
615	if err != nil {
616		return err
617	}
618	for k, v := range m {
619		switch k {
620		case "error":
621			if v != nil {
622				var cloudErrorBody CloudErrorBody
623				err = json.Unmarshal(*v, &cloudErrorBody)
624				if err != nil {
625					return err
626				}
627				ce.CloudErrorBody = &cloudErrorBody
628			}
629		}
630	}
631
632	return nil
633}
634
635// CloudErrorBody the object that defines the structure of an Azure Synapse error.
636type CloudErrorBody struct {
637	// Code - Error code.
638	Code *string `json:"code,omitempty"`
639	// Message - Error message.
640	Message *string `json:"message,omitempty"`
641	// Target - Property name/path in request associated with error.
642	Target *string `json:"target,omitempty"`
643	// Details - Array with additional error details.
644	Details *[]CloudError `json:"details,omitempty"`
645}
646
647// CmdkeySetup the custom setup of running cmdkey commands.
648type CmdkeySetup struct {
649	// CmdkeySetupTypeProperties - Cmdkey command custom setup type properties.
650	*CmdkeySetupTypeProperties `json:"typeProperties,omitempty"`
651	// Type - Possible values include: 'TypeCustomSetupBase', 'TypeCmdkeySetup', 'TypeEnvironmentVariableSetup', 'TypeComponentSetup'
652	Type TypeBasicCustomSetupBase `json:"type,omitempty"`
653}
654
655// MarshalJSON is the custom marshaler for CmdkeySetup.
656func (cs CmdkeySetup) MarshalJSON() ([]byte, error) {
657	cs.Type = TypeCmdkeySetup
658	objectMap := make(map[string]interface{})
659	if cs.CmdkeySetupTypeProperties != nil {
660		objectMap["typeProperties"] = cs.CmdkeySetupTypeProperties
661	}
662	if cs.Type != "" {
663		objectMap["type"] = cs.Type
664	}
665	return json.Marshal(objectMap)
666}
667
668// AsCmdkeySetup is the BasicCustomSetupBase implementation for CmdkeySetup.
669func (cs CmdkeySetup) AsCmdkeySetup() (*CmdkeySetup, bool) {
670	return &cs, true
671}
672
673// AsEnvironmentVariableSetup is the BasicCustomSetupBase implementation for CmdkeySetup.
674func (cs CmdkeySetup) AsEnvironmentVariableSetup() (*EnvironmentVariableSetup, bool) {
675	return nil, false
676}
677
678// AsComponentSetup is the BasicCustomSetupBase implementation for CmdkeySetup.
679func (cs CmdkeySetup) AsComponentSetup() (*ComponentSetup, bool) {
680	return nil, false
681}
682
683// AsCustomSetupBase is the BasicCustomSetupBase implementation for CmdkeySetup.
684func (cs CmdkeySetup) AsCustomSetupBase() (*CustomSetupBase, bool) {
685	return nil, false
686}
687
688// AsBasicCustomSetupBase is the BasicCustomSetupBase implementation for CmdkeySetup.
689func (cs CmdkeySetup) AsBasicCustomSetupBase() (BasicCustomSetupBase, bool) {
690	return &cs, true
691}
692
693// UnmarshalJSON is the custom unmarshaler for CmdkeySetup struct.
694func (cs *CmdkeySetup) UnmarshalJSON(body []byte) error {
695	var m map[string]*json.RawMessage
696	err := json.Unmarshal(body, &m)
697	if err != nil {
698		return err
699	}
700	for k, v := range m {
701		switch k {
702		case "typeProperties":
703			if v != nil {
704				var cmdkeySetupTypeProperties CmdkeySetupTypeProperties
705				err = json.Unmarshal(*v, &cmdkeySetupTypeProperties)
706				if err != nil {
707					return err
708				}
709				cs.CmdkeySetupTypeProperties = &cmdkeySetupTypeProperties
710			}
711		case "type":
712			if v != nil {
713				var typeVar TypeBasicCustomSetupBase
714				err = json.Unmarshal(*v, &typeVar)
715				if err != nil {
716					return err
717				}
718				cs.Type = typeVar
719			}
720		}
721	}
722
723	return nil
724}
725
726// CmdkeySetupTypeProperties cmdkey command custom setup type properties.
727type CmdkeySetupTypeProperties struct {
728	// TargetName - The server name of data source access.
729	TargetName interface{} `json:"targetName,omitempty"`
730	// UserName - The user name of data source access.
731	UserName interface{} `json:"userName,omitempty"`
732	// Password - The password of data source access.
733	Password BasicSecretBase `json:"password,omitempty"`
734}
735
736// UnmarshalJSON is the custom unmarshaler for CmdkeySetupTypeProperties struct.
737func (cstp *CmdkeySetupTypeProperties) UnmarshalJSON(body []byte) error {
738	var m map[string]*json.RawMessage
739	err := json.Unmarshal(body, &m)
740	if err != nil {
741		return err
742	}
743	for k, v := range m {
744		switch k {
745		case "targetName":
746			if v != nil {
747				var targetName interface{}
748				err = json.Unmarshal(*v, &targetName)
749				if err != nil {
750					return err
751				}
752				cstp.TargetName = targetName
753			}
754		case "userName":
755			if v != nil {
756				var userName interface{}
757				err = json.Unmarshal(*v, &userName)
758				if err != nil {
759					return err
760				}
761				cstp.UserName = userName
762			}
763		case "password":
764			if v != nil {
765				password, err := unmarshalBasicSecretBase(*v)
766				if err != nil {
767					return err
768				}
769				cstp.Password = password
770			}
771		}
772	}
773
774	return nil
775}
776
777// ComponentSetup the custom setup of installing 3rd party components.
778type ComponentSetup struct {
779	// LicensedComponentSetupTypeProperties - Install 3rd party component type properties.
780	*LicensedComponentSetupTypeProperties `json:"typeProperties,omitempty"`
781	// Type - Possible values include: 'TypeCustomSetupBase', 'TypeCmdkeySetup', 'TypeEnvironmentVariableSetup', 'TypeComponentSetup'
782	Type TypeBasicCustomSetupBase `json:"type,omitempty"`
783}
784
785// MarshalJSON is the custom marshaler for ComponentSetup.
786func (cs ComponentSetup) MarshalJSON() ([]byte, error) {
787	cs.Type = TypeComponentSetup
788	objectMap := make(map[string]interface{})
789	if cs.LicensedComponentSetupTypeProperties != nil {
790		objectMap["typeProperties"] = cs.LicensedComponentSetupTypeProperties
791	}
792	if cs.Type != "" {
793		objectMap["type"] = cs.Type
794	}
795	return json.Marshal(objectMap)
796}
797
798// AsCmdkeySetup is the BasicCustomSetupBase implementation for ComponentSetup.
799func (cs ComponentSetup) AsCmdkeySetup() (*CmdkeySetup, bool) {
800	return nil, false
801}
802
803// AsEnvironmentVariableSetup is the BasicCustomSetupBase implementation for ComponentSetup.
804func (cs ComponentSetup) AsEnvironmentVariableSetup() (*EnvironmentVariableSetup, bool) {
805	return nil, false
806}
807
808// AsComponentSetup is the BasicCustomSetupBase implementation for ComponentSetup.
809func (cs ComponentSetup) AsComponentSetup() (*ComponentSetup, bool) {
810	return &cs, true
811}
812
813// AsCustomSetupBase is the BasicCustomSetupBase implementation for ComponentSetup.
814func (cs ComponentSetup) AsCustomSetupBase() (*CustomSetupBase, bool) {
815	return nil, false
816}
817
818// AsBasicCustomSetupBase is the BasicCustomSetupBase implementation for ComponentSetup.
819func (cs ComponentSetup) AsBasicCustomSetupBase() (BasicCustomSetupBase, bool) {
820	return &cs, true
821}
822
823// UnmarshalJSON is the custom unmarshaler for ComponentSetup struct.
824func (cs *ComponentSetup) UnmarshalJSON(body []byte) error {
825	var m map[string]*json.RawMessage
826	err := json.Unmarshal(body, &m)
827	if err != nil {
828		return err
829	}
830	for k, v := range m {
831		switch k {
832		case "typeProperties":
833			if v != nil {
834				var licensedComponentSetupTypeProperties LicensedComponentSetupTypeProperties
835				err = json.Unmarshal(*v, &licensedComponentSetupTypeProperties)
836				if err != nil {
837					return err
838				}
839				cs.LicensedComponentSetupTypeProperties = &licensedComponentSetupTypeProperties
840			}
841		case "type":
842			if v != nil {
843				var typeVar TypeBasicCustomSetupBase
844				err = json.Unmarshal(*v, &typeVar)
845				if err != nil {
846					return err
847				}
848				cs.Type = typeVar
849			}
850		}
851	}
852
853	return nil
854}
855
856// CreateSQLPoolRestorePointDefinition contains the information necessary to perform a create Sql pool
857// restore point operation.
858type CreateSQLPoolRestorePointDefinition struct {
859	// RestorePointLabel - The restore point label to apply
860	RestorePointLabel *string `json:"restorePointLabel,omitempty"`
861}
862
863// CustomerManagedKeyDetails details of the customer managed key associated with the workspace
864type CustomerManagedKeyDetails struct {
865	// Status - READ-ONLY; The customer managed key status on the workspace
866	Status *string `json:"status,omitempty"`
867	// Key - The key object of the workspace
868	Key *WorkspaceKeyDetails `json:"key,omitempty"`
869}
870
871// MarshalJSON is the custom marshaler for CustomerManagedKeyDetails.
872func (cmkd CustomerManagedKeyDetails) MarshalJSON() ([]byte, error) {
873	objectMap := make(map[string]interface{})
874	if cmkd.Key != nil {
875		objectMap["key"] = cmkd.Key
876	}
877	return json.Marshal(objectMap)
878}
879
880// BasicCustomSetupBase the base definition of the custom setup.
881type BasicCustomSetupBase interface {
882	AsCmdkeySetup() (*CmdkeySetup, bool)
883	AsEnvironmentVariableSetup() (*EnvironmentVariableSetup, bool)
884	AsComponentSetup() (*ComponentSetup, bool)
885	AsCustomSetupBase() (*CustomSetupBase, bool)
886}
887
888// CustomSetupBase the base definition of the custom setup.
889type CustomSetupBase struct {
890	// Type - Possible values include: 'TypeCustomSetupBase', 'TypeCmdkeySetup', 'TypeEnvironmentVariableSetup', 'TypeComponentSetup'
891	Type TypeBasicCustomSetupBase `json:"type,omitempty"`
892}
893
894func unmarshalBasicCustomSetupBase(body []byte) (BasicCustomSetupBase, error) {
895	var m map[string]interface{}
896	err := json.Unmarshal(body, &m)
897	if err != nil {
898		return nil, err
899	}
900
901	switch m["type"] {
902	case string(TypeCmdkeySetup):
903		var cs CmdkeySetup
904		err := json.Unmarshal(body, &cs)
905		return cs, err
906	case string(TypeEnvironmentVariableSetup):
907		var evs EnvironmentVariableSetup
908		err := json.Unmarshal(body, &evs)
909		return evs, err
910	case string(TypeComponentSetup):
911		var cs ComponentSetup
912		err := json.Unmarshal(body, &cs)
913		return cs, err
914	default:
915		var csb CustomSetupBase
916		err := json.Unmarshal(body, &csb)
917		return csb, err
918	}
919}
920func unmarshalBasicCustomSetupBaseArray(body []byte) ([]BasicCustomSetupBase, error) {
921	var rawMessages []*json.RawMessage
922	err := json.Unmarshal(body, &rawMessages)
923	if err != nil {
924		return nil, err
925	}
926
927	csbArray := make([]BasicCustomSetupBase, len(rawMessages))
928
929	for index, rawMessage := range rawMessages {
930		csb, err := unmarshalBasicCustomSetupBase(*rawMessage)
931		if err != nil {
932			return nil, err
933		}
934		csbArray[index] = csb
935	}
936	return csbArray, nil
937}
938
939// MarshalJSON is the custom marshaler for CustomSetupBase.
940func (csb CustomSetupBase) MarshalJSON() ([]byte, error) {
941	csb.Type = TypeCustomSetupBase
942	objectMap := make(map[string]interface{})
943	if csb.Type != "" {
944		objectMap["type"] = csb.Type
945	}
946	return json.Marshal(objectMap)
947}
948
949// AsCmdkeySetup is the BasicCustomSetupBase implementation for CustomSetupBase.
950func (csb CustomSetupBase) AsCmdkeySetup() (*CmdkeySetup, bool) {
951	return nil, false
952}
953
954// AsEnvironmentVariableSetup is the BasicCustomSetupBase implementation for CustomSetupBase.
955func (csb CustomSetupBase) AsEnvironmentVariableSetup() (*EnvironmentVariableSetup, bool) {
956	return nil, false
957}
958
959// AsComponentSetup is the BasicCustomSetupBase implementation for CustomSetupBase.
960func (csb CustomSetupBase) AsComponentSetup() (*ComponentSetup, bool) {
961	return nil, false
962}
963
964// AsCustomSetupBase is the BasicCustomSetupBase implementation for CustomSetupBase.
965func (csb CustomSetupBase) AsCustomSetupBase() (*CustomSetupBase, bool) {
966	return &csb, true
967}
968
969// AsBasicCustomSetupBase is the BasicCustomSetupBase implementation for CustomSetupBase.
970func (csb CustomSetupBase) AsBasicCustomSetupBase() (BasicCustomSetupBase, bool) {
971	return &csb, true
972}
973
974// DataLakeStorageAccountDetails details of the data lake storage account associated with the workspace
975type DataLakeStorageAccountDetails struct {
976	// AccountURL - Account URL
977	AccountURL *string `json:"accountUrl,omitempty"`
978	// Filesystem - Filesystem name
979	Filesystem *string `json:"filesystem,omitempty"`
980}
981
982// DataMaskingPolicy ...
983type DataMaskingPolicy struct {
984	autorest.Response `json:"-"`
985	// DataMaskingPolicyProperties - The properties of the data masking policy.
986	*DataMaskingPolicyProperties `json:"properties,omitempty"`
987	// Location - READ-ONLY; The location of the data masking policy.
988	Location *string `json:"location,omitempty"`
989	// Kind - READ-ONLY; The kind of data masking policy. Metadata, used for Azure portal.
990	Kind *string `json:"kind,omitempty"`
991	// ManagedBy - READ-ONLY; Fully qualified resource ID of the sql pool
992	ManagedBy *string `json:"managedBy,omitempty"`
993	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
994	ID *string `json:"id,omitempty"`
995	// Name - READ-ONLY; The name of the resource
996	Name *string `json:"name,omitempty"`
997	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
998	Type *string `json:"type,omitempty"`
999}
1000
1001// MarshalJSON is the custom marshaler for DataMaskingPolicy.
1002func (dmp DataMaskingPolicy) MarshalJSON() ([]byte, error) {
1003	objectMap := make(map[string]interface{})
1004	if dmp.DataMaskingPolicyProperties != nil {
1005		objectMap["properties"] = dmp.DataMaskingPolicyProperties
1006	}
1007	return json.Marshal(objectMap)
1008}
1009
1010// UnmarshalJSON is the custom unmarshaler for DataMaskingPolicy struct.
1011func (dmp *DataMaskingPolicy) UnmarshalJSON(body []byte) error {
1012	var m map[string]*json.RawMessage
1013	err := json.Unmarshal(body, &m)
1014	if err != nil {
1015		return err
1016	}
1017	for k, v := range m {
1018		switch k {
1019		case "properties":
1020			if v != nil {
1021				var dataMaskingPolicyProperties DataMaskingPolicyProperties
1022				err = json.Unmarshal(*v, &dataMaskingPolicyProperties)
1023				if err != nil {
1024					return err
1025				}
1026				dmp.DataMaskingPolicyProperties = &dataMaskingPolicyProperties
1027			}
1028		case "location":
1029			if v != nil {
1030				var location string
1031				err = json.Unmarshal(*v, &location)
1032				if err != nil {
1033					return err
1034				}
1035				dmp.Location = &location
1036			}
1037		case "kind":
1038			if v != nil {
1039				var kind string
1040				err = json.Unmarshal(*v, &kind)
1041				if err != nil {
1042					return err
1043				}
1044				dmp.Kind = &kind
1045			}
1046		case "managedBy":
1047			if v != nil {
1048				var managedBy string
1049				err = json.Unmarshal(*v, &managedBy)
1050				if err != nil {
1051					return err
1052				}
1053				dmp.ManagedBy = &managedBy
1054			}
1055		case "id":
1056			if v != nil {
1057				var ID string
1058				err = json.Unmarshal(*v, &ID)
1059				if err != nil {
1060					return err
1061				}
1062				dmp.ID = &ID
1063			}
1064		case "name":
1065			if v != nil {
1066				var name string
1067				err = json.Unmarshal(*v, &name)
1068				if err != nil {
1069					return err
1070				}
1071				dmp.Name = &name
1072			}
1073		case "type":
1074			if v != nil {
1075				var typeVar string
1076				err = json.Unmarshal(*v, &typeVar)
1077				if err != nil {
1078					return err
1079				}
1080				dmp.Type = &typeVar
1081			}
1082		}
1083	}
1084
1085	return nil
1086}
1087
1088// DataMaskingPolicyProperties the properties of a database data masking policy.
1089type DataMaskingPolicyProperties struct {
1090	// DataMaskingState - The state of the data masking policy. Possible values include: 'DataMaskingStateDisabled', 'DataMaskingStateEnabled'
1091	DataMaskingState DataMaskingState `json:"dataMaskingState,omitempty"`
1092	// ExemptPrincipals - The list of the exempt principals. Specifies the semicolon-separated list of database users for which the data masking policy does not apply. The specified users receive data results without masking for all of the database queries.
1093	ExemptPrincipals *string `json:"exemptPrincipals,omitempty"`
1094	// ApplicationPrincipals - READ-ONLY; The list of the application principals. This is a legacy parameter and is no longer used.
1095	ApplicationPrincipals *string `json:"applicationPrincipals,omitempty"`
1096	// MaskingLevel - READ-ONLY; The masking level. This is a legacy parameter and is no longer used.
1097	MaskingLevel *string `json:"maskingLevel,omitempty"`
1098}
1099
1100// MarshalJSON is the custom marshaler for DataMaskingPolicyProperties.
1101func (dmpp DataMaskingPolicyProperties) MarshalJSON() ([]byte, error) {
1102	objectMap := make(map[string]interface{})
1103	if dmpp.DataMaskingState != "" {
1104		objectMap["dataMaskingState"] = dmpp.DataMaskingState
1105	}
1106	if dmpp.ExemptPrincipals != nil {
1107		objectMap["exemptPrincipals"] = dmpp.ExemptPrincipals
1108	}
1109	return json.Marshal(objectMap)
1110}
1111
1112// DataMaskingRule represents a Sql pool data masking rule.
1113type DataMaskingRule struct {
1114	autorest.Response `json:"-"`
1115	// DataMaskingRuleProperties - The properties of the resource.
1116	*DataMaskingRuleProperties `json:"properties,omitempty"`
1117	// Location - READ-ONLY; The location of the data masking rule.
1118	Location *string `json:"location,omitempty"`
1119	// Kind - READ-ONLY; The kind of Data Masking Rule. Metadata, used for Azure portal.
1120	Kind *string `json:"kind,omitempty"`
1121	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
1122	ID *string `json:"id,omitempty"`
1123	// Name - READ-ONLY; The name of the resource
1124	Name *string `json:"name,omitempty"`
1125	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
1126	Type *string `json:"type,omitempty"`
1127}
1128
1129// MarshalJSON is the custom marshaler for DataMaskingRule.
1130func (dmr DataMaskingRule) MarshalJSON() ([]byte, error) {
1131	objectMap := make(map[string]interface{})
1132	if dmr.DataMaskingRuleProperties != nil {
1133		objectMap["properties"] = dmr.DataMaskingRuleProperties
1134	}
1135	return json.Marshal(objectMap)
1136}
1137
1138// UnmarshalJSON is the custom unmarshaler for DataMaskingRule struct.
1139func (dmr *DataMaskingRule) UnmarshalJSON(body []byte) error {
1140	var m map[string]*json.RawMessage
1141	err := json.Unmarshal(body, &m)
1142	if err != nil {
1143		return err
1144	}
1145	for k, v := range m {
1146		switch k {
1147		case "properties":
1148			if v != nil {
1149				var dataMaskingRuleProperties DataMaskingRuleProperties
1150				err = json.Unmarshal(*v, &dataMaskingRuleProperties)
1151				if err != nil {
1152					return err
1153				}
1154				dmr.DataMaskingRuleProperties = &dataMaskingRuleProperties
1155			}
1156		case "location":
1157			if v != nil {
1158				var location string
1159				err = json.Unmarshal(*v, &location)
1160				if err != nil {
1161					return err
1162				}
1163				dmr.Location = &location
1164			}
1165		case "kind":
1166			if v != nil {
1167				var kind string
1168				err = json.Unmarshal(*v, &kind)
1169				if err != nil {
1170					return err
1171				}
1172				dmr.Kind = &kind
1173			}
1174		case "id":
1175			if v != nil {
1176				var ID string
1177				err = json.Unmarshal(*v, &ID)
1178				if err != nil {
1179					return err
1180				}
1181				dmr.ID = &ID
1182			}
1183		case "name":
1184			if v != nil {
1185				var name string
1186				err = json.Unmarshal(*v, &name)
1187				if err != nil {
1188					return err
1189				}
1190				dmr.Name = &name
1191			}
1192		case "type":
1193			if v != nil {
1194				var typeVar string
1195				err = json.Unmarshal(*v, &typeVar)
1196				if err != nil {
1197					return err
1198				}
1199				dmr.Type = &typeVar
1200			}
1201		}
1202	}
1203
1204	return nil
1205}
1206
1207// DataMaskingRuleListResult the response to a list data masking rules request.
1208type DataMaskingRuleListResult struct {
1209	autorest.Response `json:"-"`
1210	// Value - The list of Sql pool data masking rules.
1211	Value *[]DataMaskingRule `json:"value,omitempty"`
1212}
1213
1214// DataMaskingRuleProperties the properties of a Sql pool data masking rule.
1215type DataMaskingRuleProperties struct {
1216	// ID - READ-ONLY; The rule Id.
1217	ID *string `json:"id,omitempty"`
1218	// AliasName - The alias name. This is a legacy parameter and is no longer used.
1219	AliasName *string `json:"aliasName,omitempty"`
1220	// RuleState - The rule state. Used to delete a rule. To delete an existing rule, specify the schemaName, tableName, columnName, maskingFunction, and specify ruleState as disabled. However, if the rule doesn't already exist, the rule will be created with ruleState set to enabled, regardless of the provided value of ruleState. Possible values include: 'DataMaskingRuleStateDisabled', 'DataMaskingRuleStateEnabled'
1221	RuleState DataMaskingRuleState `json:"ruleState,omitempty"`
1222	// SchemaName - The schema name on which the data masking rule is applied.
1223	SchemaName *string `json:"schemaName,omitempty"`
1224	// TableName - The table name on which the data masking rule is applied.
1225	TableName *string `json:"tableName,omitempty"`
1226	// ColumnName - The column name on which the data masking rule is applied.
1227	ColumnName *string `json:"columnName,omitempty"`
1228	// MaskingFunction - The masking function that is used for the data masking rule. Possible values include: 'DataMaskingFunctionDefault', 'DataMaskingFunctionCCN', 'DataMaskingFunctionEmail', 'DataMaskingFunctionNumber', 'DataMaskingFunctionSSN', 'DataMaskingFunctionText'
1229	MaskingFunction DataMaskingFunction `json:"maskingFunction,omitempty"`
1230	// NumberFrom - The numberFrom property of the masking rule. Required if maskingFunction is set to Number, otherwise this parameter will be ignored.
1231	NumberFrom *string `json:"numberFrom,omitempty"`
1232	// NumberTo - The numberTo property of the data masking rule. Required if maskingFunction is set to Number, otherwise this parameter will be ignored.
1233	NumberTo *string `json:"numberTo,omitempty"`
1234	// PrefixSize - If maskingFunction is set to Text, the number of characters to show unmasked in the beginning of the string. Otherwise, this parameter will be ignored.
1235	PrefixSize *string `json:"prefixSize,omitempty"`
1236	// SuffixSize - If maskingFunction is set to Text, the number of characters to show unmasked at the end of the string. Otherwise, this parameter will be ignored.
1237	SuffixSize *string `json:"suffixSize,omitempty"`
1238	// ReplacementString - If maskingFunction is set to Text, the character to use for masking the unexposed part of the string. Otherwise, this parameter will be ignored.
1239	ReplacementString *string `json:"replacementString,omitempty"`
1240}
1241
1242// MarshalJSON is the custom marshaler for DataMaskingRuleProperties.
1243func (dmrp DataMaskingRuleProperties) MarshalJSON() ([]byte, error) {
1244	objectMap := make(map[string]interface{})
1245	if dmrp.AliasName != nil {
1246		objectMap["aliasName"] = dmrp.AliasName
1247	}
1248	if dmrp.RuleState != "" {
1249		objectMap["ruleState"] = dmrp.RuleState
1250	}
1251	if dmrp.SchemaName != nil {
1252		objectMap["schemaName"] = dmrp.SchemaName
1253	}
1254	if dmrp.TableName != nil {
1255		objectMap["tableName"] = dmrp.TableName
1256	}
1257	if dmrp.ColumnName != nil {
1258		objectMap["columnName"] = dmrp.ColumnName
1259	}
1260	if dmrp.MaskingFunction != "" {
1261		objectMap["maskingFunction"] = dmrp.MaskingFunction
1262	}
1263	if dmrp.NumberFrom != nil {
1264		objectMap["numberFrom"] = dmrp.NumberFrom
1265	}
1266	if dmrp.NumberTo != nil {
1267		objectMap["numberTo"] = dmrp.NumberTo
1268	}
1269	if dmrp.PrefixSize != nil {
1270		objectMap["prefixSize"] = dmrp.PrefixSize
1271	}
1272	if dmrp.SuffixSize != nil {
1273		objectMap["suffixSize"] = dmrp.SuffixSize
1274	}
1275	if dmrp.ReplacementString != nil {
1276		objectMap["replacementString"] = dmrp.ReplacementString
1277	}
1278	return json.Marshal(objectMap)
1279}
1280
1281// DataWarehouseUserActivities user activities of a data warehouse
1282type DataWarehouseUserActivities struct {
1283	autorest.Response `json:"-"`
1284	// DataWarehouseUserActivitiesProperties - Resource properties.
1285	*DataWarehouseUserActivitiesProperties `json:"properties,omitempty"`
1286	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
1287	ID *string `json:"id,omitempty"`
1288	// Name - READ-ONLY; The name of the resource
1289	Name *string `json:"name,omitempty"`
1290	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
1291	Type *string `json:"type,omitempty"`
1292}
1293
1294// MarshalJSON is the custom marshaler for DataWarehouseUserActivities.
1295func (dwua DataWarehouseUserActivities) MarshalJSON() ([]byte, error) {
1296	objectMap := make(map[string]interface{})
1297	if dwua.DataWarehouseUserActivitiesProperties != nil {
1298		objectMap["properties"] = dwua.DataWarehouseUserActivitiesProperties
1299	}
1300	return json.Marshal(objectMap)
1301}
1302
1303// UnmarshalJSON is the custom unmarshaler for DataWarehouseUserActivities struct.
1304func (dwua *DataWarehouseUserActivities) UnmarshalJSON(body []byte) error {
1305	var m map[string]*json.RawMessage
1306	err := json.Unmarshal(body, &m)
1307	if err != nil {
1308		return err
1309	}
1310	for k, v := range m {
1311		switch k {
1312		case "properties":
1313			if v != nil {
1314				var dataWarehouseUserActivitiesProperties DataWarehouseUserActivitiesProperties
1315				err = json.Unmarshal(*v, &dataWarehouseUserActivitiesProperties)
1316				if err != nil {
1317					return err
1318				}
1319				dwua.DataWarehouseUserActivitiesProperties = &dataWarehouseUserActivitiesProperties
1320			}
1321		case "id":
1322			if v != nil {
1323				var ID string
1324				err = json.Unmarshal(*v, &ID)
1325				if err != nil {
1326					return err
1327				}
1328				dwua.ID = &ID
1329			}
1330		case "name":
1331			if v != nil {
1332				var name string
1333				err = json.Unmarshal(*v, &name)
1334				if err != nil {
1335					return err
1336				}
1337				dwua.Name = &name
1338			}
1339		case "type":
1340			if v != nil {
1341				var typeVar string
1342				err = json.Unmarshal(*v, &typeVar)
1343				if err != nil {
1344					return err
1345				}
1346				dwua.Type = &typeVar
1347			}
1348		}
1349	}
1350
1351	return nil
1352}
1353
1354// DataWarehouseUserActivitiesProperties user activities of a data warehouse. This currently includes the
1355// count of running or suspended queries. For more information, please view the sys.dm_pdw_exec_requests
1356// dynamic management view (DMV).
1357type DataWarehouseUserActivitiesProperties struct {
1358	// ActiveQueriesCount - READ-ONLY; Count of running and suspended queries.
1359	ActiveQueriesCount *int32 `json:"activeQueriesCount,omitempty"`
1360}
1361
1362// MarshalJSON is the custom marshaler for DataWarehouseUserActivitiesProperties.
1363func (dwuap DataWarehouseUserActivitiesProperties) MarshalJSON() ([]byte, error) {
1364	objectMap := make(map[string]interface{})
1365	return json.Marshal(objectMap)
1366}
1367
1368// EncryptionDetails details of the encryption associated with the workspace
1369type EncryptionDetails struct {
1370	// DoubleEncryptionEnabled - READ-ONLY; Double Encryption enabled
1371	DoubleEncryptionEnabled *bool `json:"doubleEncryptionEnabled,omitempty"`
1372	// Cmk - Customer Managed Key Details
1373	Cmk *CustomerManagedKeyDetails `json:"cmk,omitempty"`
1374}
1375
1376// MarshalJSON is the custom marshaler for EncryptionDetails.
1377func (ed EncryptionDetails) MarshalJSON() ([]byte, error) {
1378	objectMap := make(map[string]interface{})
1379	if ed.Cmk != nil {
1380		objectMap["cmk"] = ed.Cmk
1381	}
1382	return json.Marshal(objectMap)
1383}
1384
1385// EntityReference the entity reference.
1386type EntityReference struct {
1387	// Type - The type of this referenced entity. Possible values include: 'IntegrationRuntimeReference', 'LinkedServiceReference'
1388	Type IntegrationRuntimeEntityReferenceType `json:"type,omitempty"`
1389	// ReferenceName - The name of this referenced entity.
1390	ReferenceName *string `json:"referenceName,omitempty"`
1391}
1392
1393// EnvironmentVariableSetup the custom setup of setting environment variable.
1394type EnvironmentVariableSetup struct {
1395	// EnvironmentVariableSetupTypeProperties - Add environment variable type properties.
1396	*EnvironmentVariableSetupTypeProperties `json:"typeProperties,omitempty"`
1397	// Type - Possible values include: 'TypeCustomSetupBase', 'TypeCmdkeySetup', 'TypeEnvironmentVariableSetup', 'TypeComponentSetup'
1398	Type TypeBasicCustomSetupBase `json:"type,omitempty"`
1399}
1400
1401// MarshalJSON is the custom marshaler for EnvironmentVariableSetup.
1402func (evs EnvironmentVariableSetup) MarshalJSON() ([]byte, error) {
1403	evs.Type = TypeEnvironmentVariableSetup
1404	objectMap := make(map[string]interface{})
1405	if evs.EnvironmentVariableSetupTypeProperties != nil {
1406		objectMap["typeProperties"] = evs.EnvironmentVariableSetupTypeProperties
1407	}
1408	if evs.Type != "" {
1409		objectMap["type"] = evs.Type
1410	}
1411	return json.Marshal(objectMap)
1412}
1413
1414// AsCmdkeySetup is the BasicCustomSetupBase implementation for EnvironmentVariableSetup.
1415func (evs EnvironmentVariableSetup) AsCmdkeySetup() (*CmdkeySetup, bool) {
1416	return nil, false
1417}
1418
1419// AsEnvironmentVariableSetup is the BasicCustomSetupBase implementation for EnvironmentVariableSetup.
1420func (evs EnvironmentVariableSetup) AsEnvironmentVariableSetup() (*EnvironmentVariableSetup, bool) {
1421	return &evs, true
1422}
1423
1424// AsComponentSetup is the BasicCustomSetupBase implementation for EnvironmentVariableSetup.
1425func (evs EnvironmentVariableSetup) AsComponentSetup() (*ComponentSetup, bool) {
1426	return nil, false
1427}
1428
1429// AsCustomSetupBase is the BasicCustomSetupBase implementation for EnvironmentVariableSetup.
1430func (evs EnvironmentVariableSetup) AsCustomSetupBase() (*CustomSetupBase, bool) {
1431	return nil, false
1432}
1433
1434// AsBasicCustomSetupBase is the BasicCustomSetupBase implementation for EnvironmentVariableSetup.
1435func (evs EnvironmentVariableSetup) AsBasicCustomSetupBase() (BasicCustomSetupBase, bool) {
1436	return &evs, true
1437}
1438
1439// UnmarshalJSON is the custom unmarshaler for EnvironmentVariableSetup struct.
1440func (evs *EnvironmentVariableSetup) UnmarshalJSON(body []byte) error {
1441	var m map[string]*json.RawMessage
1442	err := json.Unmarshal(body, &m)
1443	if err != nil {
1444		return err
1445	}
1446	for k, v := range m {
1447		switch k {
1448		case "typeProperties":
1449			if v != nil {
1450				var environmentVariableSetupTypeProperties EnvironmentVariableSetupTypeProperties
1451				err = json.Unmarshal(*v, &environmentVariableSetupTypeProperties)
1452				if err != nil {
1453					return err
1454				}
1455				evs.EnvironmentVariableSetupTypeProperties = &environmentVariableSetupTypeProperties
1456			}
1457		case "type":
1458			if v != nil {
1459				var typeVar TypeBasicCustomSetupBase
1460				err = json.Unmarshal(*v, &typeVar)
1461				if err != nil {
1462					return err
1463				}
1464				evs.Type = typeVar
1465			}
1466		}
1467	}
1468
1469	return nil
1470}
1471
1472// EnvironmentVariableSetupTypeProperties environment variable custom setup type properties.
1473type EnvironmentVariableSetupTypeProperties struct {
1474	// VariableName - The name of the environment variable.
1475	VariableName *string `json:"variableName,omitempty"`
1476	// VariableValue - The value of the environment variable.
1477	VariableValue *string `json:"variableValue,omitempty"`
1478}
1479
1480// ErrorAdditionalInfo the resource management error additional info.
1481type ErrorAdditionalInfo struct {
1482	// Type - READ-ONLY; The additional info type.
1483	Type *string `json:"type,omitempty"`
1484	// Info - READ-ONLY; The additional info.
1485	Info interface{} `json:"info,omitempty"`
1486}
1487
1488// MarshalJSON is the custom marshaler for ErrorAdditionalInfo.
1489func (eai ErrorAdditionalInfo) MarshalJSON() ([]byte, error) {
1490	objectMap := make(map[string]interface{})
1491	return json.Marshal(objectMap)
1492}
1493
1494// ErrorContract contains details when the response code indicates an error.
1495type ErrorContract struct {
1496	// Error - The error details.
1497	Error *ErrorResponse `json:"error,omitempty"`
1498}
1499
1500// ErrorDetail error details
1501type ErrorDetail struct {
1502	// Message - Error message
1503	Message *string `json:"message,omitempty"`
1504	// Code - Error code
1505	Code *string `json:"code,omitempty"`
1506	// Target - Error target
1507	Target *string `json:"target,omitempty"`
1508}
1509
1510// ErrorResponse common error response for all Azure Resource Manager APIs to return error details for
1511// failed operations. (This also follows the OData error response format.)
1512type ErrorResponse struct {
1513	// Code - READ-ONLY; The error code.
1514	Code *string `json:"code,omitempty"`
1515	// Message - READ-ONLY; The error message.
1516	Message *string `json:"message,omitempty"`
1517	// Target - READ-ONLY; The error target.
1518	Target *string `json:"target,omitempty"`
1519	// Details - READ-ONLY; The error details.
1520	Details *[]ErrorResponse `json:"details,omitempty"`
1521	// AdditionalInfo - READ-ONLY; The error additional info.
1522	AdditionalInfo *[]ErrorAdditionalInfo `json:"additionalInfo,omitempty"`
1523}
1524
1525// MarshalJSON is the custom marshaler for ErrorResponse.
1526func (er ErrorResponse) MarshalJSON() ([]byte, error) {
1527	objectMap := make(map[string]interface{})
1528	return json.Marshal(objectMap)
1529}
1530
1531// ExtendedServerBlobAuditingPolicy an extended server blob auditing policy.
1532type ExtendedServerBlobAuditingPolicy struct {
1533	autorest.Response `json:"-"`
1534	// ExtendedServerBlobAuditingPolicyProperties - Resource properties.
1535	*ExtendedServerBlobAuditingPolicyProperties `json:"properties,omitempty"`
1536	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
1537	ID *string `json:"id,omitempty"`
1538	// Name - READ-ONLY; The name of the resource
1539	Name *string `json:"name,omitempty"`
1540	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
1541	Type *string `json:"type,omitempty"`
1542}
1543
1544// MarshalJSON is the custom marshaler for ExtendedServerBlobAuditingPolicy.
1545func (esbap ExtendedServerBlobAuditingPolicy) MarshalJSON() ([]byte, error) {
1546	objectMap := make(map[string]interface{})
1547	if esbap.ExtendedServerBlobAuditingPolicyProperties != nil {
1548		objectMap["properties"] = esbap.ExtendedServerBlobAuditingPolicyProperties
1549	}
1550	return json.Marshal(objectMap)
1551}
1552
1553// UnmarshalJSON is the custom unmarshaler for ExtendedServerBlobAuditingPolicy struct.
1554func (esbap *ExtendedServerBlobAuditingPolicy) UnmarshalJSON(body []byte) error {
1555	var m map[string]*json.RawMessage
1556	err := json.Unmarshal(body, &m)
1557	if err != nil {
1558		return err
1559	}
1560	for k, v := range m {
1561		switch k {
1562		case "properties":
1563			if v != nil {
1564				var extendedServerBlobAuditingPolicyProperties ExtendedServerBlobAuditingPolicyProperties
1565				err = json.Unmarshal(*v, &extendedServerBlobAuditingPolicyProperties)
1566				if err != nil {
1567					return err
1568				}
1569				esbap.ExtendedServerBlobAuditingPolicyProperties = &extendedServerBlobAuditingPolicyProperties
1570			}
1571		case "id":
1572			if v != nil {
1573				var ID string
1574				err = json.Unmarshal(*v, &ID)
1575				if err != nil {
1576					return err
1577				}
1578				esbap.ID = &ID
1579			}
1580		case "name":
1581			if v != nil {
1582				var name string
1583				err = json.Unmarshal(*v, &name)
1584				if err != nil {
1585					return err
1586				}
1587				esbap.Name = &name
1588			}
1589		case "type":
1590			if v != nil {
1591				var typeVar string
1592				err = json.Unmarshal(*v, &typeVar)
1593				if err != nil {
1594					return err
1595				}
1596				esbap.Type = &typeVar
1597			}
1598		}
1599	}
1600
1601	return nil
1602}
1603
1604// ExtendedServerBlobAuditingPolicyListResult a list of server extended auditing settings.
1605type ExtendedServerBlobAuditingPolicyListResult struct {
1606	autorest.Response `json:"-"`
1607	// Value - READ-ONLY; Array of results.
1608	Value *[]ExtendedServerBlobAuditingPolicy `json:"value,omitempty"`
1609	// NextLink - READ-ONLY; Link to retrieve next page of results.
1610	NextLink *string `json:"nextLink,omitempty"`
1611}
1612
1613// MarshalJSON is the custom marshaler for ExtendedServerBlobAuditingPolicyListResult.
1614func (esbaplr ExtendedServerBlobAuditingPolicyListResult) MarshalJSON() ([]byte, error) {
1615	objectMap := make(map[string]interface{})
1616	return json.Marshal(objectMap)
1617}
1618
1619// ExtendedServerBlobAuditingPolicyListResultIterator provides access to a complete listing of
1620// ExtendedServerBlobAuditingPolicy values.
1621type ExtendedServerBlobAuditingPolicyListResultIterator struct {
1622	i    int
1623	page ExtendedServerBlobAuditingPolicyListResultPage
1624}
1625
1626// NextWithContext advances to the next value.  If there was an error making
1627// the request the iterator does not advance and the error is returned.
1628func (iter *ExtendedServerBlobAuditingPolicyListResultIterator) NextWithContext(ctx context.Context) (err error) {
1629	if tracing.IsEnabled() {
1630		ctx = tracing.StartSpan(ctx, fqdn+"/ExtendedServerBlobAuditingPolicyListResultIterator.NextWithContext")
1631		defer func() {
1632			sc := -1
1633			if iter.Response().Response.Response != nil {
1634				sc = iter.Response().Response.Response.StatusCode
1635			}
1636			tracing.EndSpan(ctx, sc, err)
1637		}()
1638	}
1639	iter.i++
1640	if iter.i < len(iter.page.Values()) {
1641		return nil
1642	}
1643	err = iter.page.NextWithContext(ctx)
1644	if err != nil {
1645		iter.i--
1646		return err
1647	}
1648	iter.i = 0
1649	return nil
1650}
1651
1652// Next advances to the next value.  If there was an error making
1653// the request the iterator does not advance and the error is returned.
1654// Deprecated: Use NextWithContext() instead.
1655func (iter *ExtendedServerBlobAuditingPolicyListResultIterator) Next() error {
1656	return iter.NextWithContext(context.Background())
1657}
1658
1659// NotDone returns true if the enumeration should be started or is not yet complete.
1660func (iter ExtendedServerBlobAuditingPolicyListResultIterator) NotDone() bool {
1661	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1662}
1663
1664// Response returns the raw server response from the last page request.
1665func (iter ExtendedServerBlobAuditingPolicyListResultIterator) Response() ExtendedServerBlobAuditingPolicyListResult {
1666	return iter.page.Response()
1667}
1668
1669// Value returns the current value or a zero-initialized value if the
1670// iterator has advanced beyond the end of the collection.
1671func (iter ExtendedServerBlobAuditingPolicyListResultIterator) Value() ExtendedServerBlobAuditingPolicy {
1672	if !iter.page.NotDone() {
1673		return ExtendedServerBlobAuditingPolicy{}
1674	}
1675	return iter.page.Values()[iter.i]
1676}
1677
1678// Creates a new instance of the ExtendedServerBlobAuditingPolicyListResultIterator type.
1679func NewExtendedServerBlobAuditingPolicyListResultIterator(page ExtendedServerBlobAuditingPolicyListResultPage) ExtendedServerBlobAuditingPolicyListResultIterator {
1680	return ExtendedServerBlobAuditingPolicyListResultIterator{page: page}
1681}
1682
1683// IsEmpty returns true if the ListResult contains no values.
1684func (esbaplr ExtendedServerBlobAuditingPolicyListResult) IsEmpty() bool {
1685	return esbaplr.Value == nil || len(*esbaplr.Value) == 0
1686}
1687
1688// hasNextLink returns true if the NextLink is not empty.
1689func (esbaplr ExtendedServerBlobAuditingPolicyListResult) hasNextLink() bool {
1690	return esbaplr.NextLink != nil && len(*esbaplr.NextLink) != 0
1691}
1692
1693// extendedServerBlobAuditingPolicyListResultPreparer prepares a request to retrieve the next set of results.
1694// It returns nil if no more results exist.
1695func (esbaplr ExtendedServerBlobAuditingPolicyListResult) extendedServerBlobAuditingPolicyListResultPreparer(ctx context.Context) (*http.Request, error) {
1696	if !esbaplr.hasNextLink() {
1697		return nil, nil
1698	}
1699	return autorest.Prepare((&http.Request{}).WithContext(ctx),
1700		autorest.AsJSON(),
1701		autorest.AsGet(),
1702		autorest.WithBaseURL(to.String(esbaplr.NextLink)))
1703}
1704
1705// ExtendedServerBlobAuditingPolicyListResultPage contains a page of ExtendedServerBlobAuditingPolicy
1706// values.
1707type ExtendedServerBlobAuditingPolicyListResultPage struct {
1708	fn      func(context.Context, ExtendedServerBlobAuditingPolicyListResult) (ExtendedServerBlobAuditingPolicyListResult, error)
1709	esbaplr ExtendedServerBlobAuditingPolicyListResult
1710}
1711
1712// NextWithContext advances to the next page of values.  If there was an error making
1713// the request the page does not advance and the error is returned.
1714func (page *ExtendedServerBlobAuditingPolicyListResultPage) NextWithContext(ctx context.Context) (err error) {
1715	if tracing.IsEnabled() {
1716		ctx = tracing.StartSpan(ctx, fqdn+"/ExtendedServerBlobAuditingPolicyListResultPage.NextWithContext")
1717		defer func() {
1718			sc := -1
1719			if page.Response().Response.Response != nil {
1720				sc = page.Response().Response.Response.StatusCode
1721			}
1722			tracing.EndSpan(ctx, sc, err)
1723		}()
1724	}
1725	for {
1726		next, err := page.fn(ctx, page.esbaplr)
1727		if err != nil {
1728			return err
1729		}
1730		page.esbaplr = next
1731		if !next.hasNextLink() || !next.IsEmpty() {
1732			break
1733		}
1734	}
1735	return nil
1736}
1737
1738// Next advances to the next page of values.  If there was an error making
1739// the request the page does not advance and the error is returned.
1740// Deprecated: Use NextWithContext() instead.
1741func (page *ExtendedServerBlobAuditingPolicyListResultPage) Next() error {
1742	return page.NextWithContext(context.Background())
1743}
1744
1745// NotDone returns true if the page enumeration should be started or is not yet complete.
1746func (page ExtendedServerBlobAuditingPolicyListResultPage) NotDone() bool {
1747	return !page.esbaplr.IsEmpty()
1748}
1749
1750// Response returns the raw server response from the last page request.
1751func (page ExtendedServerBlobAuditingPolicyListResultPage) Response() ExtendedServerBlobAuditingPolicyListResult {
1752	return page.esbaplr
1753}
1754
1755// Values returns the slice of values for the current page or nil if there are no values.
1756func (page ExtendedServerBlobAuditingPolicyListResultPage) Values() []ExtendedServerBlobAuditingPolicy {
1757	if page.esbaplr.IsEmpty() {
1758		return nil
1759	}
1760	return *page.esbaplr.Value
1761}
1762
1763// Creates a new instance of the ExtendedServerBlobAuditingPolicyListResultPage type.
1764func NewExtendedServerBlobAuditingPolicyListResultPage(cur ExtendedServerBlobAuditingPolicyListResult, getNextPage func(context.Context, ExtendedServerBlobAuditingPolicyListResult) (ExtendedServerBlobAuditingPolicyListResult, error)) ExtendedServerBlobAuditingPolicyListResultPage {
1765	return ExtendedServerBlobAuditingPolicyListResultPage{
1766		fn:      getNextPage,
1767		esbaplr: cur,
1768	}
1769}
1770
1771// ExtendedServerBlobAuditingPolicyProperties properties of an extended server blob auditing policy.
1772type ExtendedServerBlobAuditingPolicyProperties struct {
1773	// PredicateExpression - Specifies condition of where clause when creating an audit.
1774	PredicateExpression *string `json:"predicateExpression,omitempty"`
1775	// State - Specifies the state of the policy. If state is Enabled, storageEndpoint or isAzureMonitorTargetEnabled are required. Possible values include: 'BlobAuditingPolicyStateEnabled', 'BlobAuditingPolicyStateDisabled'
1776	State BlobAuditingPolicyState `json:"state,omitempty"`
1777	// StorageEndpoint - Specifies the blob storage endpoint (e.g. https://MyAccount.blob.core.windows.net). If state is Enabled, storageEndpoint or isAzureMonitorTargetEnabled is required.
1778	StorageEndpoint *string `json:"storageEndpoint,omitempty"`
1779	// StorageAccountAccessKey - Specifies the identifier key of the auditing storage account.
1780	// If state is Enabled and storageEndpoint is specified, not specifying the storageAccountAccessKey will use SQL server system-assigned managed identity to access the storage.
1781	// Prerequisites for using managed identity authentication:
1782	// 1. Assign SQL Server a system-assigned managed identity in Azure Active Directory (AAD).
1783	// 2. Grant SQL Server identity access to the storage account by adding 'Storage Blob Data Contributor' RBAC role to the server identity.
1784	// For more information, see [Auditing to storage using Managed Identity authentication](https://go.microsoft.com/fwlink/?linkid=2114355)
1785	StorageAccountAccessKey *string `json:"storageAccountAccessKey,omitempty"`
1786	// RetentionDays - Specifies the number of days to keep in the audit logs in the storage account.
1787	RetentionDays *int32 `json:"retentionDays,omitempty"`
1788	// AuditActionsAndGroups - Specifies the Actions-Groups and Actions to audit.
1789	//
1790	// The recommended set of action groups to use is the following combination - this will audit all the queries and stored procedures executed against the database, as well as successful and failed logins:
1791	//
1792	// BATCH_COMPLETED_GROUP,
1793	// SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP,
1794	// FAILED_DATABASE_AUTHENTICATION_GROUP.
1795	//
1796	// This above combination is also the set that is configured by default when enabling auditing from the Azure portal.
1797	//
1798	// The supported action groups to audit are (note: choose only specific groups that cover your auditing needs. Using unnecessary groups could lead to very large quantities of audit records):
1799	//
1800	// APPLICATION_ROLE_CHANGE_PASSWORD_GROUP
1801	// BACKUP_RESTORE_GROUP
1802	// DATABASE_LOGOUT_GROUP
1803	// DATABASE_OBJECT_CHANGE_GROUP
1804	// DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP
1805	// DATABASE_OBJECT_PERMISSION_CHANGE_GROUP
1806	// DATABASE_OPERATION_GROUP
1807	// DATABASE_PERMISSION_CHANGE_GROUP
1808	// DATABASE_PRINCIPAL_CHANGE_GROUP
1809	// DATABASE_PRINCIPAL_IMPERSONATION_GROUP
1810	// DATABASE_ROLE_MEMBER_CHANGE_GROUP
1811	// FAILED_DATABASE_AUTHENTICATION_GROUP
1812	// SCHEMA_OBJECT_ACCESS_GROUP
1813	// SCHEMA_OBJECT_CHANGE_GROUP
1814	// SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP
1815	// SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP
1816	// SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
1817	// USER_CHANGE_PASSWORD_GROUP
1818	// BATCH_STARTED_GROUP
1819	// BATCH_COMPLETED_GROUP
1820	//
1821	// These are groups that cover all sql statements and stored procedures executed against the database, and should not be used in combination with other groups as this will result in duplicate audit logs.
1822	//
1823	// For more information, see [Database-Level Audit Action Groups](https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-action-groups).
1824	//
1825	// For Database auditing policy, specific Actions can also be specified (note that Actions cannot be specified for Server auditing policy). The supported actions to audit are:
1826	// SELECT
1827	// UPDATE
1828	// INSERT
1829	// DELETE
1830	// EXECUTE
1831	// RECEIVE
1832	// REFERENCES
1833	//
1834	// The general form for defining an action to be audited is:
1835	// {action} ON {object} BY {principal}
1836	//
1837	// Note that <object> in the above format can refer to an object like a table, view, or stored procedure, or an entire database or schema. For the latter cases, the forms DATABASE::{db_name} and SCHEMA::{schema_name} are used, respectively.
1838	//
1839	// For example:
1840	// SELECT on dbo.myTable by public
1841	// SELECT on DATABASE::myDatabase by public
1842	// SELECT on SCHEMA::mySchema by public
1843	//
1844	// For more information, see [Database-Level Audit Actions](https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-actions)
1845	AuditActionsAndGroups *[]string `json:"auditActionsAndGroups,omitempty"`
1846	// StorageAccountSubscriptionID - Specifies the blob storage subscription Id.
1847	StorageAccountSubscriptionID *uuid.UUID `json:"storageAccountSubscriptionId,omitempty"`
1848	// IsStorageSecondaryKeyInUse - Specifies whether storageAccountAccessKey value is the storage's secondary key.
1849	IsStorageSecondaryKeyInUse *bool `json:"isStorageSecondaryKeyInUse,omitempty"`
1850	// IsAzureMonitorTargetEnabled - Specifies whether audit events are sent to Azure Monitor.
1851	// In order to send the events to Azure Monitor, specify 'state' as 'Enabled' and 'isAzureMonitorTargetEnabled' as true.
1852	//
1853	// When using REST API to configure auditing, Diagnostic Settings with 'SQLSecurityAuditEvents' diagnostic logs category on the database should be also created.
1854	// Note that for server level audit you should use the 'master' database as {databaseName}.
1855	//
1856	// Diagnostic Settings URI format:
1857	// PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/providers/microsoft.insights/diagnosticSettings/{settingsName}?api-version=2017-05-01-preview
1858	//
1859	// For more information, see [Diagnostic Settings REST API](https://go.microsoft.com/fwlink/?linkid=2033207)
1860	// or [Diagnostic Settings PowerShell](https://go.microsoft.com/fwlink/?linkid=2033043)
1861	IsAzureMonitorTargetEnabled *bool `json:"isAzureMonitorTargetEnabled,omitempty"`
1862	// QueueDelayMs - Specifies the amount of time in milliseconds that can elapse before audit actions are forced to be processed.
1863	// The default minimum value is 1000 (1 second). The maximum is 2,147,483,647.
1864	QueueDelayMs *int32 `json:"queueDelayMs,omitempty"`
1865}
1866
1867// ExtendedSQLPoolBlobAuditingPolicy an extended Sql pool blob auditing policy.
1868type ExtendedSQLPoolBlobAuditingPolicy struct {
1869	autorest.Response `json:"-"`
1870	// ExtendedSQLPoolBlobAuditingPolicyProperties - Resource properties.
1871	*ExtendedSQLPoolBlobAuditingPolicyProperties `json:"properties,omitempty"`
1872	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
1873	ID *string `json:"id,omitempty"`
1874	// Name - READ-ONLY; The name of the resource
1875	Name *string `json:"name,omitempty"`
1876	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
1877	Type *string `json:"type,omitempty"`
1878}
1879
1880// MarshalJSON is the custom marshaler for ExtendedSQLPoolBlobAuditingPolicy.
1881func (espbap ExtendedSQLPoolBlobAuditingPolicy) MarshalJSON() ([]byte, error) {
1882	objectMap := make(map[string]interface{})
1883	if espbap.ExtendedSQLPoolBlobAuditingPolicyProperties != nil {
1884		objectMap["properties"] = espbap.ExtendedSQLPoolBlobAuditingPolicyProperties
1885	}
1886	return json.Marshal(objectMap)
1887}
1888
1889// UnmarshalJSON is the custom unmarshaler for ExtendedSQLPoolBlobAuditingPolicy struct.
1890func (espbap *ExtendedSQLPoolBlobAuditingPolicy) UnmarshalJSON(body []byte) error {
1891	var m map[string]*json.RawMessage
1892	err := json.Unmarshal(body, &m)
1893	if err != nil {
1894		return err
1895	}
1896	for k, v := range m {
1897		switch k {
1898		case "properties":
1899			if v != nil {
1900				var extendedSQLPoolBlobAuditingPolicyProperties ExtendedSQLPoolBlobAuditingPolicyProperties
1901				err = json.Unmarshal(*v, &extendedSQLPoolBlobAuditingPolicyProperties)
1902				if err != nil {
1903					return err
1904				}
1905				espbap.ExtendedSQLPoolBlobAuditingPolicyProperties = &extendedSQLPoolBlobAuditingPolicyProperties
1906			}
1907		case "id":
1908			if v != nil {
1909				var ID string
1910				err = json.Unmarshal(*v, &ID)
1911				if err != nil {
1912					return err
1913				}
1914				espbap.ID = &ID
1915			}
1916		case "name":
1917			if v != nil {
1918				var name string
1919				err = json.Unmarshal(*v, &name)
1920				if err != nil {
1921					return err
1922				}
1923				espbap.Name = &name
1924			}
1925		case "type":
1926			if v != nil {
1927				var typeVar string
1928				err = json.Unmarshal(*v, &typeVar)
1929				if err != nil {
1930					return err
1931				}
1932				espbap.Type = &typeVar
1933			}
1934		}
1935	}
1936
1937	return nil
1938}
1939
1940// ExtendedSQLPoolBlobAuditingPolicyListResult a list of sql pool extended auditing settings.
1941type ExtendedSQLPoolBlobAuditingPolicyListResult struct {
1942	autorest.Response `json:"-"`
1943	// Value - READ-ONLY; Array of results.
1944	Value *[]ExtendedSQLPoolBlobAuditingPolicy `json:"value,omitempty"`
1945	// NextLink - READ-ONLY; Link to retrieve next page of results.
1946	NextLink *string `json:"nextLink,omitempty"`
1947}
1948
1949// MarshalJSON is the custom marshaler for ExtendedSQLPoolBlobAuditingPolicyListResult.
1950func (espbaplr ExtendedSQLPoolBlobAuditingPolicyListResult) MarshalJSON() ([]byte, error) {
1951	objectMap := make(map[string]interface{})
1952	return json.Marshal(objectMap)
1953}
1954
1955// ExtendedSQLPoolBlobAuditingPolicyListResultIterator provides access to a complete listing of
1956// ExtendedSQLPoolBlobAuditingPolicy values.
1957type ExtendedSQLPoolBlobAuditingPolicyListResultIterator struct {
1958	i    int
1959	page ExtendedSQLPoolBlobAuditingPolicyListResultPage
1960}
1961
1962// NextWithContext advances to the next value.  If there was an error making
1963// the request the iterator does not advance and the error is returned.
1964func (iter *ExtendedSQLPoolBlobAuditingPolicyListResultIterator) NextWithContext(ctx context.Context) (err error) {
1965	if tracing.IsEnabled() {
1966		ctx = tracing.StartSpan(ctx, fqdn+"/ExtendedSQLPoolBlobAuditingPolicyListResultIterator.NextWithContext")
1967		defer func() {
1968			sc := -1
1969			if iter.Response().Response.Response != nil {
1970				sc = iter.Response().Response.Response.StatusCode
1971			}
1972			tracing.EndSpan(ctx, sc, err)
1973		}()
1974	}
1975	iter.i++
1976	if iter.i < len(iter.page.Values()) {
1977		return nil
1978	}
1979	err = iter.page.NextWithContext(ctx)
1980	if err != nil {
1981		iter.i--
1982		return err
1983	}
1984	iter.i = 0
1985	return nil
1986}
1987
1988// Next advances to the next value.  If there was an error making
1989// the request the iterator does not advance and the error is returned.
1990// Deprecated: Use NextWithContext() instead.
1991func (iter *ExtendedSQLPoolBlobAuditingPolicyListResultIterator) Next() error {
1992	return iter.NextWithContext(context.Background())
1993}
1994
1995// NotDone returns true if the enumeration should be started or is not yet complete.
1996func (iter ExtendedSQLPoolBlobAuditingPolicyListResultIterator) NotDone() bool {
1997	return iter.page.NotDone() && iter.i < len(iter.page.Values())
1998}
1999
2000// Response returns the raw server response from the last page request.
2001func (iter ExtendedSQLPoolBlobAuditingPolicyListResultIterator) Response() ExtendedSQLPoolBlobAuditingPolicyListResult {
2002	return iter.page.Response()
2003}
2004
2005// Value returns the current value or a zero-initialized value if the
2006// iterator has advanced beyond the end of the collection.
2007func (iter ExtendedSQLPoolBlobAuditingPolicyListResultIterator) Value() ExtendedSQLPoolBlobAuditingPolicy {
2008	if !iter.page.NotDone() {
2009		return ExtendedSQLPoolBlobAuditingPolicy{}
2010	}
2011	return iter.page.Values()[iter.i]
2012}
2013
2014// Creates a new instance of the ExtendedSQLPoolBlobAuditingPolicyListResultIterator type.
2015func NewExtendedSQLPoolBlobAuditingPolicyListResultIterator(page ExtendedSQLPoolBlobAuditingPolicyListResultPage) ExtendedSQLPoolBlobAuditingPolicyListResultIterator {
2016	return ExtendedSQLPoolBlobAuditingPolicyListResultIterator{page: page}
2017}
2018
2019// IsEmpty returns true if the ListResult contains no values.
2020func (espbaplr ExtendedSQLPoolBlobAuditingPolicyListResult) IsEmpty() bool {
2021	return espbaplr.Value == nil || len(*espbaplr.Value) == 0
2022}
2023
2024// hasNextLink returns true if the NextLink is not empty.
2025func (espbaplr ExtendedSQLPoolBlobAuditingPolicyListResult) hasNextLink() bool {
2026	return espbaplr.NextLink != nil && len(*espbaplr.NextLink) != 0
2027}
2028
2029// extendedSQLPoolBlobAuditingPolicyListResultPreparer prepares a request to retrieve the next set of results.
2030// It returns nil if no more results exist.
2031func (espbaplr ExtendedSQLPoolBlobAuditingPolicyListResult) extendedSQLPoolBlobAuditingPolicyListResultPreparer(ctx context.Context) (*http.Request, error) {
2032	if !espbaplr.hasNextLink() {
2033		return nil, nil
2034	}
2035	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2036		autorest.AsJSON(),
2037		autorest.AsGet(),
2038		autorest.WithBaseURL(to.String(espbaplr.NextLink)))
2039}
2040
2041// ExtendedSQLPoolBlobAuditingPolicyListResultPage contains a page of ExtendedSQLPoolBlobAuditingPolicy
2042// values.
2043type ExtendedSQLPoolBlobAuditingPolicyListResultPage struct {
2044	fn       func(context.Context, ExtendedSQLPoolBlobAuditingPolicyListResult) (ExtendedSQLPoolBlobAuditingPolicyListResult, error)
2045	espbaplr ExtendedSQLPoolBlobAuditingPolicyListResult
2046}
2047
2048// NextWithContext advances to the next page of values.  If there was an error making
2049// the request the page does not advance and the error is returned.
2050func (page *ExtendedSQLPoolBlobAuditingPolicyListResultPage) NextWithContext(ctx context.Context) (err error) {
2051	if tracing.IsEnabled() {
2052		ctx = tracing.StartSpan(ctx, fqdn+"/ExtendedSQLPoolBlobAuditingPolicyListResultPage.NextWithContext")
2053		defer func() {
2054			sc := -1
2055			if page.Response().Response.Response != nil {
2056				sc = page.Response().Response.Response.StatusCode
2057			}
2058			tracing.EndSpan(ctx, sc, err)
2059		}()
2060	}
2061	for {
2062		next, err := page.fn(ctx, page.espbaplr)
2063		if err != nil {
2064			return err
2065		}
2066		page.espbaplr = next
2067		if !next.hasNextLink() || !next.IsEmpty() {
2068			break
2069		}
2070	}
2071	return nil
2072}
2073
2074// Next advances to the next page of values.  If there was an error making
2075// the request the page does not advance and the error is returned.
2076// Deprecated: Use NextWithContext() instead.
2077func (page *ExtendedSQLPoolBlobAuditingPolicyListResultPage) Next() error {
2078	return page.NextWithContext(context.Background())
2079}
2080
2081// NotDone returns true if the page enumeration should be started or is not yet complete.
2082func (page ExtendedSQLPoolBlobAuditingPolicyListResultPage) NotDone() bool {
2083	return !page.espbaplr.IsEmpty()
2084}
2085
2086// Response returns the raw server response from the last page request.
2087func (page ExtendedSQLPoolBlobAuditingPolicyListResultPage) Response() ExtendedSQLPoolBlobAuditingPolicyListResult {
2088	return page.espbaplr
2089}
2090
2091// Values returns the slice of values for the current page or nil if there are no values.
2092func (page ExtendedSQLPoolBlobAuditingPolicyListResultPage) Values() []ExtendedSQLPoolBlobAuditingPolicy {
2093	if page.espbaplr.IsEmpty() {
2094		return nil
2095	}
2096	return *page.espbaplr.Value
2097}
2098
2099// Creates a new instance of the ExtendedSQLPoolBlobAuditingPolicyListResultPage type.
2100func NewExtendedSQLPoolBlobAuditingPolicyListResultPage(cur ExtendedSQLPoolBlobAuditingPolicyListResult, getNextPage func(context.Context, ExtendedSQLPoolBlobAuditingPolicyListResult) (ExtendedSQLPoolBlobAuditingPolicyListResult, error)) ExtendedSQLPoolBlobAuditingPolicyListResultPage {
2101	return ExtendedSQLPoolBlobAuditingPolicyListResultPage{
2102		fn:       getNextPage,
2103		espbaplr: cur,
2104	}
2105}
2106
2107// ExtendedSQLPoolBlobAuditingPolicyProperties properties of an extended Sql pool blob auditing policy.
2108type ExtendedSQLPoolBlobAuditingPolicyProperties struct {
2109	// PredicateExpression - Specifies condition of where clause when creating an audit.
2110	PredicateExpression *string `json:"predicateExpression,omitempty"`
2111	// State - Specifies the state of the policy. If state is Enabled, storageEndpoint or isAzureMonitorTargetEnabled are required. Possible values include: 'BlobAuditingPolicyStateEnabled', 'BlobAuditingPolicyStateDisabled'
2112	State BlobAuditingPolicyState `json:"state,omitempty"`
2113	// StorageEndpoint - Specifies the blob storage endpoint (e.g. https://MyAccount.blob.core.windows.net). If state is Enabled, storageEndpoint or isAzureMonitorTargetEnabled is required.
2114	StorageEndpoint *string `json:"storageEndpoint,omitempty"`
2115	// StorageAccountAccessKey - Specifies the identifier key of the auditing storage account.
2116	// If state is Enabled and storageEndpoint is specified, not specifying the storageAccountAccessKey will use SQL server system-assigned managed identity to access the storage.
2117	// Prerequisites for using managed identity authentication:
2118	// 1. Assign SQL Server a system-assigned managed identity in Azure Active Directory (AAD).
2119	// 2. Grant SQL Server identity access to the storage account by adding 'Storage Blob Data Contributor' RBAC role to the server identity.
2120	// For more information, see [Auditing to storage using Managed Identity authentication](https://go.microsoft.com/fwlink/?linkid=2114355)
2121	StorageAccountAccessKey *string `json:"storageAccountAccessKey,omitempty"`
2122	// RetentionDays - Specifies the number of days to keep in the audit logs in the storage account.
2123	RetentionDays *int32 `json:"retentionDays,omitempty"`
2124	// AuditActionsAndGroups - Specifies the Actions-Groups and Actions to audit.
2125	//
2126	// The recommended set of action groups to use is the following combination - this will audit all the queries and stored procedures executed against the database, as well as successful and failed logins:
2127	//
2128	// BATCH_COMPLETED_GROUP,
2129	// SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP,
2130	// FAILED_DATABASE_AUTHENTICATION_GROUP.
2131	//
2132	// This above combination is also the set that is configured by default when enabling auditing from the Azure portal.
2133	//
2134	// The supported action groups to audit are (note: choose only specific groups that cover your auditing needs. Using unnecessary groups could lead to very large quantities of audit records):
2135	//
2136	// APPLICATION_ROLE_CHANGE_PASSWORD_GROUP
2137	// BACKUP_RESTORE_GROUP
2138	// DATABASE_LOGOUT_GROUP
2139	// DATABASE_OBJECT_CHANGE_GROUP
2140	// DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP
2141	// DATABASE_OBJECT_PERMISSION_CHANGE_GROUP
2142	// DATABASE_OPERATION_GROUP
2143	// DATABASE_PERMISSION_CHANGE_GROUP
2144	// DATABASE_PRINCIPAL_CHANGE_GROUP
2145	// DATABASE_PRINCIPAL_IMPERSONATION_GROUP
2146	// DATABASE_ROLE_MEMBER_CHANGE_GROUP
2147	// FAILED_DATABASE_AUTHENTICATION_GROUP
2148	// SCHEMA_OBJECT_ACCESS_GROUP
2149	// SCHEMA_OBJECT_CHANGE_GROUP
2150	// SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP
2151	// SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP
2152	// SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
2153	// USER_CHANGE_PASSWORD_GROUP
2154	// BATCH_STARTED_GROUP
2155	// BATCH_COMPLETED_GROUP
2156	//
2157	// These are groups that cover all sql statements and stored procedures executed against the database, and should not be used in combination with other groups as this will result in duplicate audit logs.
2158	//
2159	// For more information, see [Database-Level Audit Action Groups](https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-action-groups).
2160	//
2161	// For Database auditing policy, specific Actions can also be specified (note that Actions cannot be specified for Server auditing policy). The supported actions to audit are:
2162	// SELECT
2163	// UPDATE
2164	// INSERT
2165	// DELETE
2166	// EXECUTE
2167	// RECEIVE
2168	// REFERENCES
2169	//
2170	// The general form for defining an action to be audited is:
2171	// {action} ON {object} BY {principal}
2172	//
2173	// Note that <object> in the above format can refer to an object like a table, view, or stored procedure, or an entire database or schema. For the latter cases, the forms DATABASE::{db_name} and SCHEMA::{schema_name} are used, respectively.
2174	//
2175	// For example:
2176	// SELECT on dbo.myTable by public
2177	// SELECT on DATABASE::myDatabase by public
2178	// SELECT on SCHEMA::mySchema by public
2179	//
2180	// For more information, see [Database-Level Audit Actions](https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-actions)
2181	AuditActionsAndGroups *[]string `json:"auditActionsAndGroups,omitempty"`
2182	// StorageAccountSubscriptionID - Specifies the blob storage subscription Id.
2183	StorageAccountSubscriptionID *uuid.UUID `json:"storageAccountSubscriptionId,omitempty"`
2184	// IsStorageSecondaryKeyInUse - Specifies whether storageAccountAccessKey value is the storage's secondary key.
2185	IsStorageSecondaryKeyInUse *bool `json:"isStorageSecondaryKeyInUse,omitempty"`
2186	// IsAzureMonitorTargetEnabled - Specifies whether audit events are sent to Azure Monitor.
2187	// In order to send the events to Azure Monitor, specify 'state' as 'Enabled' and 'isAzureMonitorTargetEnabled' as true.
2188	//
2189	// When using REST API to configure auditing, Diagnostic Settings with 'SQLSecurityAuditEvents' diagnostic logs category on the database should be also created.
2190	// Note that for server level audit you should use the 'master' database as {databaseName}.
2191	//
2192	// Diagnostic Settings URI format:
2193	// PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/providers/microsoft.insights/diagnosticSettings/{settingsName}?api-version=2017-05-01-preview
2194	//
2195	// For more information, see [Diagnostic Settings REST API](https://go.microsoft.com/fwlink/?linkid=2033207)
2196	// or [Diagnostic Settings PowerShell](https://go.microsoft.com/fwlink/?linkid=2033043)
2197	IsAzureMonitorTargetEnabled *bool `json:"isAzureMonitorTargetEnabled,omitempty"`
2198	// QueueDelayMs - Specifies the amount of time in milliseconds that can elapse before audit actions are forced to be processed.
2199	// The default minimum value is 1000 (1 second). The maximum is 2,147,483,647.
2200	QueueDelayMs *int32 `json:"queueDelayMs,omitempty"`
2201}
2202
2203// GeoBackupPolicy a database geo backup policy.
2204type GeoBackupPolicy struct {
2205	autorest.Response `json:"-"`
2206	// GeoBackupPolicyProperties - The properties of the geo backup policy.
2207	*GeoBackupPolicyProperties `json:"properties,omitempty"`
2208	// Kind - READ-ONLY; Kind of geo backup policy.  This is metadata used for the Azure portal experience.
2209	Kind *string `json:"kind,omitempty"`
2210	// Location - READ-ONLY; Backup policy location.
2211	Location *string `json:"location,omitempty"`
2212	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
2213	ID *string `json:"id,omitempty"`
2214	// Name - READ-ONLY; The name of the resource
2215	Name *string `json:"name,omitempty"`
2216	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
2217	Type *string `json:"type,omitempty"`
2218}
2219
2220// MarshalJSON is the custom marshaler for GeoBackupPolicy.
2221func (gbp GeoBackupPolicy) MarshalJSON() ([]byte, error) {
2222	objectMap := make(map[string]interface{})
2223	if gbp.GeoBackupPolicyProperties != nil {
2224		objectMap["properties"] = gbp.GeoBackupPolicyProperties
2225	}
2226	return json.Marshal(objectMap)
2227}
2228
2229// UnmarshalJSON is the custom unmarshaler for GeoBackupPolicy struct.
2230func (gbp *GeoBackupPolicy) UnmarshalJSON(body []byte) error {
2231	var m map[string]*json.RawMessage
2232	err := json.Unmarshal(body, &m)
2233	if err != nil {
2234		return err
2235	}
2236	for k, v := range m {
2237		switch k {
2238		case "properties":
2239			if v != nil {
2240				var geoBackupPolicyProperties GeoBackupPolicyProperties
2241				err = json.Unmarshal(*v, &geoBackupPolicyProperties)
2242				if err != nil {
2243					return err
2244				}
2245				gbp.GeoBackupPolicyProperties = &geoBackupPolicyProperties
2246			}
2247		case "kind":
2248			if v != nil {
2249				var kind string
2250				err = json.Unmarshal(*v, &kind)
2251				if err != nil {
2252					return err
2253				}
2254				gbp.Kind = &kind
2255			}
2256		case "location":
2257			if v != nil {
2258				var location string
2259				err = json.Unmarshal(*v, &location)
2260				if err != nil {
2261					return err
2262				}
2263				gbp.Location = &location
2264			}
2265		case "id":
2266			if v != nil {
2267				var ID string
2268				err = json.Unmarshal(*v, &ID)
2269				if err != nil {
2270					return err
2271				}
2272				gbp.ID = &ID
2273			}
2274		case "name":
2275			if v != nil {
2276				var name string
2277				err = json.Unmarshal(*v, &name)
2278				if err != nil {
2279					return err
2280				}
2281				gbp.Name = &name
2282			}
2283		case "type":
2284			if v != nil {
2285				var typeVar string
2286				err = json.Unmarshal(*v, &typeVar)
2287				if err != nil {
2288					return err
2289				}
2290				gbp.Type = &typeVar
2291			}
2292		}
2293	}
2294
2295	return nil
2296}
2297
2298// GeoBackupPolicyListResult the response to a list geo backup policies request.
2299type GeoBackupPolicyListResult struct {
2300	autorest.Response `json:"-"`
2301	// Value - The list of geo backup policies.
2302	Value *[]GeoBackupPolicy `json:"value,omitempty"`
2303}
2304
2305// GeoBackupPolicyProperties the properties of the geo backup policy.
2306type GeoBackupPolicyProperties struct {
2307	// State - The state of the geo backup policy. Possible values include: 'GeoBackupPolicyStateDisabled', 'GeoBackupPolicyStateEnabled'
2308	State GeoBackupPolicyState `json:"state,omitempty"`
2309	// StorageType - READ-ONLY; The storage type of the geo backup policy.
2310	StorageType *string `json:"storageType,omitempty"`
2311}
2312
2313// MarshalJSON is the custom marshaler for GeoBackupPolicyProperties.
2314func (gbpp GeoBackupPolicyProperties) MarshalJSON() ([]byte, error) {
2315	objectMap := make(map[string]interface{})
2316	if gbpp.State != "" {
2317		objectMap["state"] = gbpp.State
2318	}
2319	return json.Marshal(objectMap)
2320}
2321
2322// GetSsisObjectMetadataRequest the request payload of get SSIS object metadata.
2323type GetSsisObjectMetadataRequest struct {
2324	// MetadataPath - Metadata path.
2325	MetadataPath *string `json:"metadataPath,omitempty"`
2326}
2327
2328// BasicIntegrationRuntime azure Synapse nested object which serves as a compute resource for activities.
2329type BasicIntegrationRuntime interface {
2330	AsManagedIntegrationRuntime() (*ManagedIntegrationRuntime, bool)
2331	AsSelfHostedIntegrationRuntime() (*SelfHostedIntegrationRuntime, bool)
2332	AsIntegrationRuntime() (*IntegrationRuntime, bool)
2333}
2334
2335// IntegrationRuntime azure Synapse nested object which serves as a compute resource for activities.
2336type IntegrationRuntime struct {
2337	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
2338	AdditionalProperties map[string]interface{} `json:""`
2339	// Description - Integration runtime description.
2340	Description *string `json:"description,omitempty"`
2341	// Type - Possible values include: 'TypeIntegrationRuntime', 'TypeManaged', 'TypeSelfHosted'
2342	Type Type `json:"type,omitempty"`
2343}
2344
2345func unmarshalBasicIntegrationRuntime(body []byte) (BasicIntegrationRuntime, error) {
2346	var m map[string]interface{}
2347	err := json.Unmarshal(body, &m)
2348	if err != nil {
2349		return nil, err
2350	}
2351
2352	switch m["type"] {
2353	case string(TypeManaged):
2354		var mir ManagedIntegrationRuntime
2355		err := json.Unmarshal(body, &mir)
2356		return mir, err
2357	case string(TypeSelfHosted):
2358		var shir SelfHostedIntegrationRuntime
2359		err := json.Unmarshal(body, &shir)
2360		return shir, err
2361	default:
2362		var ir IntegrationRuntime
2363		err := json.Unmarshal(body, &ir)
2364		return ir, err
2365	}
2366}
2367func unmarshalBasicIntegrationRuntimeArray(body []byte) ([]BasicIntegrationRuntime, error) {
2368	var rawMessages []*json.RawMessage
2369	err := json.Unmarshal(body, &rawMessages)
2370	if err != nil {
2371		return nil, err
2372	}
2373
2374	irArray := make([]BasicIntegrationRuntime, len(rawMessages))
2375
2376	for index, rawMessage := range rawMessages {
2377		ir, err := unmarshalBasicIntegrationRuntime(*rawMessage)
2378		if err != nil {
2379			return nil, err
2380		}
2381		irArray[index] = ir
2382	}
2383	return irArray, nil
2384}
2385
2386// MarshalJSON is the custom marshaler for IntegrationRuntime.
2387func (ir IntegrationRuntime) MarshalJSON() ([]byte, error) {
2388	ir.Type = TypeIntegrationRuntime
2389	objectMap := make(map[string]interface{})
2390	if ir.Description != nil {
2391		objectMap["description"] = ir.Description
2392	}
2393	if ir.Type != "" {
2394		objectMap["type"] = ir.Type
2395	}
2396	for k, v := range ir.AdditionalProperties {
2397		objectMap[k] = v
2398	}
2399	return json.Marshal(objectMap)
2400}
2401
2402// AsManagedIntegrationRuntime is the BasicIntegrationRuntime implementation for IntegrationRuntime.
2403func (ir IntegrationRuntime) AsManagedIntegrationRuntime() (*ManagedIntegrationRuntime, bool) {
2404	return nil, false
2405}
2406
2407// AsSelfHostedIntegrationRuntime is the BasicIntegrationRuntime implementation for IntegrationRuntime.
2408func (ir IntegrationRuntime) AsSelfHostedIntegrationRuntime() (*SelfHostedIntegrationRuntime, bool) {
2409	return nil, false
2410}
2411
2412// AsIntegrationRuntime is the BasicIntegrationRuntime implementation for IntegrationRuntime.
2413func (ir IntegrationRuntime) AsIntegrationRuntime() (*IntegrationRuntime, bool) {
2414	return &ir, true
2415}
2416
2417// AsBasicIntegrationRuntime is the BasicIntegrationRuntime implementation for IntegrationRuntime.
2418func (ir IntegrationRuntime) AsBasicIntegrationRuntime() (BasicIntegrationRuntime, bool) {
2419	return &ir, true
2420}
2421
2422// UnmarshalJSON is the custom unmarshaler for IntegrationRuntime struct.
2423func (ir *IntegrationRuntime) UnmarshalJSON(body []byte) error {
2424	var m map[string]*json.RawMessage
2425	err := json.Unmarshal(body, &m)
2426	if err != nil {
2427		return err
2428	}
2429	for k, v := range m {
2430		switch k {
2431		default:
2432			if v != nil {
2433				var additionalProperties interface{}
2434				err = json.Unmarshal(*v, &additionalProperties)
2435				if err != nil {
2436					return err
2437				}
2438				if ir.AdditionalProperties == nil {
2439					ir.AdditionalProperties = make(map[string]interface{})
2440				}
2441				ir.AdditionalProperties[k] = additionalProperties
2442			}
2443		case "description":
2444			if v != nil {
2445				var description string
2446				err = json.Unmarshal(*v, &description)
2447				if err != nil {
2448					return err
2449				}
2450				ir.Description = &description
2451			}
2452		case "type":
2453			if v != nil {
2454				var typeVar Type
2455				err = json.Unmarshal(*v, &typeVar)
2456				if err != nil {
2457					return err
2458				}
2459				ir.Type = typeVar
2460			}
2461		}
2462	}
2463
2464	return nil
2465}
2466
2467// IntegrationRuntimeAuthKeys the integration runtime authentication keys.
2468type IntegrationRuntimeAuthKeys struct {
2469	autorest.Response `json:"-"`
2470	// AuthKey1 - The primary integration runtime authentication key.
2471	AuthKey1 *string `json:"authKey1,omitempty"`
2472	// AuthKey2 - The secondary integration runtime authentication key.
2473	AuthKey2 *string `json:"authKey2,omitempty"`
2474}
2475
2476// IntegrationRuntimeComputeProperties the compute resource properties for managed integration runtime.
2477type IntegrationRuntimeComputeProperties struct {
2478	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
2479	AdditionalProperties map[string]interface{} `json:""`
2480	// Location - The location for managed integration runtime. The supported regions could be found on https://docs.microsoft.com/en-us/azure/data-factory/data-factory-data-movement-activities
2481	Location *string `json:"location,omitempty"`
2482	// NodeSize - The node size requirement to managed integration runtime.
2483	NodeSize *string `json:"nodeSize,omitempty"`
2484	// NumberOfNodes - The required number of nodes for managed integration runtime.
2485	NumberOfNodes *int32 `json:"numberOfNodes,omitempty"`
2486	// MaxParallelExecutionsPerNode - Maximum parallel executions count per node for managed integration runtime.
2487	MaxParallelExecutionsPerNode *int32 `json:"maxParallelExecutionsPerNode,omitempty"`
2488	// DataFlowProperties - Data flow properties for managed integration runtime.
2489	DataFlowProperties *IntegrationRuntimeDataFlowProperties `json:"dataFlowProperties,omitempty"`
2490	// VNetProperties - VNet properties for managed integration runtime.
2491	VNetProperties *IntegrationRuntimeVNetProperties `json:"vNetProperties,omitempty"`
2492}
2493
2494// MarshalJSON is the custom marshaler for IntegrationRuntimeComputeProperties.
2495func (ircp IntegrationRuntimeComputeProperties) MarshalJSON() ([]byte, error) {
2496	objectMap := make(map[string]interface{})
2497	if ircp.Location != nil {
2498		objectMap["location"] = ircp.Location
2499	}
2500	if ircp.NodeSize != nil {
2501		objectMap["nodeSize"] = ircp.NodeSize
2502	}
2503	if ircp.NumberOfNodes != nil {
2504		objectMap["numberOfNodes"] = ircp.NumberOfNodes
2505	}
2506	if ircp.MaxParallelExecutionsPerNode != nil {
2507		objectMap["maxParallelExecutionsPerNode"] = ircp.MaxParallelExecutionsPerNode
2508	}
2509	if ircp.DataFlowProperties != nil {
2510		objectMap["dataFlowProperties"] = ircp.DataFlowProperties
2511	}
2512	if ircp.VNetProperties != nil {
2513		objectMap["vNetProperties"] = ircp.VNetProperties
2514	}
2515	for k, v := range ircp.AdditionalProperties {
2516		objectMap[k] = v
2517	}
2518	return json.Marshal(objectMap)
2519}
2520
2521// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeComputeProperties struct.
2522func (ircp *IntegrationRuntimeComputeProperties) UnmarshalJSON(body []byte) error {
2523	var m map[string]*json.RawMessage
2524	err := json.Unmarshal(body, &m)
2525	if err != nil {
2526		return err
2527	}
2528	for k, v := range m {
2529		switch k {
2530		default:
2531			if v != nil {
2532				var additionalProperties interface{}
2533				err = json.Unmarshal(*v, &additionalProperties)
2534				if err != nil {
2535					return err
2536				}
2537				if ircp.AdditionalProperties == nil {
2538					ircp.AdditionalProperties = make(map[string]interface{})
2539				}
2540				ircp.AdditionalProperties[k] = additionalProperties
2541			}
2542		case "location":
2543			if v != nil {
2544				var location string
2545				err = json.Unmarshal(*v, &location)
2546				if err != nil {
2547					return err
2548				}
2549				ircp.Location = &location
2550			}
2551		case "nodeSize":
2552			if v != nil {
2553				var nodeSize string
2554				err = json.Unmarshal(*v, &nodeSize)
2555				if err != nil {
2556					return err
2557				}
2558				ircp.NodeSize = &nodeSize
2559			}
2560		case "numberOfNodes":
2561			if v != nil {
2562				var numberOfNodes int32
2563				err = json.Unmarshal(*v, &numberOfNodes)
2564				if err != nil {
2565					return err
2566				}
2567				ircp.NumberOfNodes = &numberOfNodes
2568			}
2569		case "maxParallelExecutionsPerNode":
2570			if v != nil {
2571				var maxParallelExecutionsPerNode int32
2572				err = json.Unmarshal(*v, &maxParallelExecutionsPerNode)
2573				if err != nil {
2574					return err
2575				}
2576				ircp.MaxParallelExecutionsPerNode = &maxParallelExecutionsPerNode
2577			}
2578		case "dataFlowProperties":
2579			if v != nil {
2580				var dataFlowProperties IntegrationRuntimeDataFlowProperties
2581				err = json.Unmarshal(*v, &dataFlowProperties)
2582				if err != nil {
2583					return err
2584				}
2585				ircp.DataFlowProperties = &dataFlowProperties
2586			}
2587		case "vNetProperties":
2588			if v != nil {
2589				var vNetProperties IntegrationRuntimeVNetProperties
2590				err = json.Unmarshal(*v, &vNetProperties)
2591				if err != nil {
2592					return err
2593				}
2594				ircp.VNetProperties = &vNetProperties
2595			}
2596		}
2597	}
2598
2599	return nil
2600}
2601
2602// IntegrationRuntimeConnectionInfo connection information for encrypting the on-premises data source
2603// credentials.
2604type IntegrationRuntimeConnectionInfo struct {
2605	autorest.Response `json:"-"`
2606	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
2607	AdditionalProperties map[string]interface{} `json:""`
2608	// ServiceToken - READ-ONLY; The token generated in service. Callers use this token to authenticate to integration runtime.
2609	ServiceToken *string `json:"serviceToken,omitempty"`
2610	// IdentityCertThumbprint - READ-ONLY; The integration runtime SSL certificate thumbprint. Click-Once application uses it to do server validation.
2611	IdentityCertThumbprint *string `json:"identityCertThumbprint,omitempty"`
2612	// HostServiceURI - READ-ONLY; The on-premises integration runtime host URL.
2613	HostServiceURI *string `json:"hostServiceUri,omitempty"`
2614	// Version - READ-ONLY; The integration runtime version.
2615	Version *string `json:"version,omitempty"`
2616	// PublicKey - READ-ONLY; The public key for encrypting a credential when transferring the credential to the integration runtime.
2617	PublicKey *string `json:"publicKey,omitempty"`
2618	// IsIdentityCertExprired - READ-ONLY; Whether the identity certificate is expired.
2619	IsIdentityCertExprired *bool `json:"isIdentityCertExprired,omitempty"`
2620}
2621
2622// MarshalJSON is the custom marshaler for IntegrationRuntimeConnectionInfo.
2623func (irci IntegrationRuntimeConnectionInfo) MarshalJSON() ([]byte, error) {
2624	objectMap := make(map[string]interface{})
2625	for k, v := range irci.AdditionalProperties {
2626		objectMap[k] = v
2627	}
2628	return json.Marshal(objectMap)
2629}
2630
2631// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeConnectionInfo struct.
2632func (irci *IntegrationRuntimeConnectionInfo) UnmarshalJSON(body []byte) error {
2633	var m map[string]*json.RawMessage
2634	err := json.Unmarshal(body, &m)
2635	if err != nil {
2636		return err
2637	}
2638	for k, v := range m {
2639		switch k {
2640		default:
2641			if v != nil {
2642				var additionalProperties interface{}
2643				err = json.Unmarshal(*v, &additionalProperties)
2644				if err != nil {
2645					return err
2646				}
2647				if irci.AdditionalProperties == nil {
2648					irci.AdditionalProperties = make(map[string]interface{})
2649				}
2650				irci.AdditionalProperties[k] = additionalProperties
2651			}
2652		case "serviceToken":
2653			if v != nil {
2654				var serviceToken string
2655				err = json.Unmarshal(*v, &serviceToken)
2656				if err != nil {
2657					return err
2658				}
2659				irci.ServiceToken = &serviceToken
2660			}
2661		case "identityCertThumbprint":
2662			if v != nil {
2663				var identityCertThumbprint string
2664				err = json.Unmarshal(*v, &identityCertThumbprint)
2665				if err != nil {
2666					return err
2667				}
2668				irci.IdentityCertThumbprint = &identityCertThumbprint
2669			}
2670		case "hostServiceUri":
2671			if v != nil {
2672				var hostServiceURI string
2673				err = json.Unmarshal(*v, &hostServiceURI)
2674				if err != nil {
2675					return err
2676				}
2677				irci.HostServiceURI = &hostServiceURI
2678			}
2679		case "version":
2680			if v != nil {
2681				var version string
2682				err = json.Unmarshal(*v, &version)
2683				if err != nil {
2684					return err
2685				}
2686				irci.Version = &version
2687			}
2688		case "publicKey":
2689			if v != nil {
2690				var publicKey string
2691				err = json.Unmarshal(*v, &publicKey)
2692				if err != nil {
2693					return err
2694				}
2695				irci.PublicKey = &publicKey
2696			}
2697		case "isIdentityCertExprired":
2698			if v != nil {
2699				var isIdentityCertExprired bool
2700				err = json.Unmarshal(*v, &isIdentityCertExprired)
2701				if err != nil {
2702					return err
2703				}
2704				irci.IsIdentityCertExprired = &isIdentityCertExprired
2705			}
2706		}
2707	}
2708
2709	return nil
2710}
2711
2712// IntegrationRuntimeCustomSetupScriptProperties custom setup script properties for a managed dedicated
2713// integration runtime.
2714type IntegrationRuntimeCustomSetupScriptProperties struct {
2715	// BlobContainerURI - The URI of the Azure blob container that contains the custom setup script.
2716	BlobContainerURI *string `json:"blobContainerUri,omitempty"`
2717	// SasToken - The SAS token of the Azure blob container.
2718	SasToken *SecureString `json:"sasToken,omitempty"`
2719}
2720
2721// IntegrationRuntimeDataFlowProperties data flow properties for managed integration runtime.
2722type IntegrationRuntimeDataFlowProperties struct {
2723	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
2724	AdditionalProperties map[string]interface{} `json:""`
2725	// ComputeType - Compute type of the cluster which will execute data flow job. Possible values include: 'General', 'MemoryOptimized', 'ComputeOptimized'
2726	ComputeType DataFlowComputeType `json:"computeType,omitempty"`
2727	// CoreCount - Core count of the cluster which will execute data flow job. Supported values are: 8, 16, 32, 48, 80, 144 and 272.
2728	CoreCount *int32 `json:"coreCount,omitempty"`
2729	// TimeToLive - Time to live (in minutes) setting of the cluster which will execute data flow job.
2730	TimeToLive *int32 `json:"timeToLive,omitempty"`
2731}
2732
2733// MarshalJSON is the custom marshaler for IntegrationRuntimeDataFlowProperties.
2734func (irdfp IntegrationRuntimeDataFlowProperties) MarshalJSON() ([]byte, error) {
2735	objectMap := make(map[string]interface{})
2736	if irdfp.ComputeType != "" {
2737		objectMap["computeType"] = irdfp.ComputeType
2738	}
2739	if irdfp.CoreCount != nil {
2740		objectMap["coreCount"] = irdfp.CoreCount
2741	}
2742	if irdfp.TimeToLive != nil {
2743		objectMap["timeToLive"] = irdfp.TimeToLive
2744	}
2745	for k, v := range irdfp.AdditionalProperties {
2746		objectMap[k] = v
2747	}
2748	return json.Marshal(objectMap)
2749}
2750
2751// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeDataFlowProperties struct.
2752func (irdfp *IntegrationRuntimeDataFlowProperties) UnmarshalJSON(body []byte) error {
2753	var m map[string]*json.RawMessage
2754	err := json.Unmarshal(body, &m)
2755	if err != nil {
2756		return err
2757	}
2758	for k, v := range m {
2759		switch k {
2760		default:
2761			if v != nil {
2762				var additionalProperties interface{}
2763				err = json.Unmarshal(*v, &additionalProperties)
2764				if err != nil {
2765					return err
2766				}
2767				if irdfp.AdditionalProperties == nil {
2768					irdfp.AdditionalProperties = make(map[string]interface{})
2769				}
2770				irdfp.AdditionalProperties[k] = additionalProperties
2771			}
2772		case "computeType":
2773			if v != nil {
2774				var computeType DataFlowComputeType
2775				err = json.Unmarshal(*v, &computeType)
2776				if err != nil {
2777					return err
2778				}
2779				irdfp.ComputeType = computeType
2780			}
2781		case "coreCount":
2782			if v != nil {
2783				var coreCount int32
2784				err = json.Unmarshal(*v, &coreCount)
2785				if err != nil {
2786					return err
2787				}
2788				irdfp.CoreCount = &coreCount
2789			}
2790		case "timeToLive":
2791			if v != nil {
2792				var timeToLive int32
2793				err = json.Unmarshal(*v, &timeToLive)
2794				if err != nil {
2795					return err
2796				}
2797				irdfp.TimeToLive = &timeToLive
2798			}
2799		}
2800	}
2801
2802	return nil
2803}
2804
2805// IntegrationRuntimeDataProxyProperties data proxy properties for a managed dedicated integration runtime.
2806type IntegrationRuntimeDataProxyProperties struct {
2807	// ConnectVia - The self-hosted integration runtime reference.
2808	ConnectVia *EntityReference `json:"connectVia,omitempty"`
2809	// StagingLinkedService - The staging linked service reference.
2810	StagingLinkedService *EntityReference `json:"stagingLinkedService,omitempty"`
2811	// Path - The path to contain the staged data in the Blob storage.
2812	Path *string `json:"path,omitempty"`
2813}
2814
2815// IntegrationRuntimeListResponse a list of integration runtime resources.
2816type IntegrationRuntimeListResponse struct {
2817	autorest.Response `json:"-"`
2818	// Value - List of integration runtimes.
2819	Value *[]IntegrationRuntimeResource `json:"value,omitempty"`
2820	// NextLink - The link to the next page of results, if any remaining results exist.
2821	NextLink *string `json:"nextLink,omitempty"`
2822}
2823
2824// IntegrationRuntimeListResponseIterator provides access to a complete listing of
2825// IntegrationRuntimeResource values.
2826type IntegrationRuntimeListResponseIterator struct {
2827	i    int
2828	page IntegrationRuntimeListResponsePage
2829}
2830
2831// NextWithContext advances to the next value.  If there was an error making
2832// the request the iterator does not advance and the error is returned.
2833func (iter *IntegrationRuntimeListResponseIterator) NextWithContext(ctx context.Context) (err error) {
2834	if tracing.IsEnabled() {
2835		ctx = tracing.StartSpan(ctx, fqdn+"/IntegrationRuntimeListResponseIterator.NextWithContext")
2836		defer func() {
2837			sc := -1
2838			if iter.Response().Response.Response != nil {
2839				sc = iter.Response().Response.Response.StatusCode
2840			}
2841			tracing.EndSpan(ctx, sc, err)
2842		}()
2843	}
2844	iter.i++
2845	if iter.i < len(iter.page.Values()) {
2846		return nil
2847	}
2848	err = iter.page.NextWithContext(ctx)
2849	if err != nil {
2850		iter.i--
2851		return err
2852	}
2853	iter.i = 0
2854	return nil
2855}
2856
2857// Next advances to the next value.  If there was an error making
2858// the request the iterator does not advance and the error is returned.
2859// Deprecated: Use NextWithContext() instead.
2860func (iter *IntegrationRuntimeListResponseIterator) Next() error {
2861	return iter.NextWithContext(context.Background())
2862}
2863
2864// NotDone returns true if the enumeration should be started or is not yet complete.
2865func (iter IntegrationRuntimeListResponseIterator) NotDone() bool {
2866	return iter.page.NotDone() && iter.i < len(iter.page.Values())
2867}
2868
2869// Response returns the raw server response from the last page request.
2870func (iter IntegrationRuntimeListResponseIterator) Response() IntegrationRuntimeListResponse {
2871	return iter.page.Response()
2872}
2873
2874// Value returns the current value or a zero-initialized value if the
2875// iterator has advanced beyond the end of the collection.
2876func (iter IntegrationRuntimeListResponseIterator) Value() IntegrationRuntimeResource {
2877	if !iter.page.NotDone() {
2878		return IntegrationRuntimeResource{}
2879	}
2880	return iter.page.Values()[iter.i]
2881}
2882
2883// Creates a new instance of the IntegrationRuntimeListResponseIterator type.
2884func NewIntegrationRuntimeListResponseIterator(page IntegrationRuntimeListResponsePage) IntegrationRuntimeListResponseIterator {
2885	return IntegrationRuntimeListResponseIterator{page: page}
2886}
2887
2888// IsEmpty returns true if the ListResult contains no values.
2889func (irlr IntegrationRuntimeListResponse) IsEmpty() bool {
2890	return irlr.Value == nil || len(*irlr.Value) == 0
2891}
2892
2893// hasNextLink returns true if the NextLink is not empty.
2894func (irlr IntegrationRuntimeListResponse) hasNextLink() bool {
2895	return irlr.NextLink != nil && len(*irlr.NextLink) != 0
2896}
2897
2898// integrationRuntimeListResponsePreparer prepares a request to retrieve the next set of results.
2899// It returns nil if no more results exist.
2900func (irlr IntegrationRuntimeListResponse) integrationRuntimeListResponsePreparer(ctx context.Context) (*http.Request, error) {
2901	if !irlr.hasNextLink() {
2902		return nil, nil
2903	}
2904	return autorest.Prepare((&http.Request{}).WithContext(ctx),
2905		autorest.AsJSON(),
2906		autorest.AsGet(),
2907		autorest.WithBaseURL(to.String(irlr.NextLink)))
2908}
2909
2910// IntegrationRuntimeListResponsePage contains a page of IntegrationRuntimeResource values.
2911type IntegrationRuntimeListResponsePage struct {
2912	fn   func(context.Context, IntegrationRuntimeListResponse) (IntegrationRuntimeListResponse, error)
2913	irlr IntegrationRuntimeListResponse
2914}
2915
2916// NextWithContext advances to the next page of values.  If there was an error making
2917// the request the page does not advance and the error is returned.
2918func (page *IntegrationRuntimeListResponsePage) NextWithContext(ctx context.Context) (err error) {
2919	if tracing.IsEnabled() {
2920		ctx = tracing.StartSpan(ctx, fqdn+"/IntegrationRuntimeListResponsePage.NextWithContext")
2921		defer func() {
2922			sc := -1
2923			if page.Response().Response.Response != nil {
2924				sc = page.Response().Response.Response.StatusCode
2925			}
2926			tracing.EndSpan(ctx, sc, err)
2927		}()
2928	}
2929	for {
2930		next, err := page.fn(ctx, page.irlr)
2931		if err != nil {
2932			return err
2933		}
2934		page.irlr = next
2935		if !next.hasNextLink() || !next.IsEmpty() {
2936			break
2937		}
2938	}
2939	return nil
2940}
2941
2942// Next advances to the next page of values.  If there was an error making
2943// the request the page does not advance and the error is returned.
2944// Deprecated: Use NextWithContext() instead.
2945func (page *IntegrationRuntimeListResponsePage) Next() error {
2946	return page.NextWithContext(context.Background())
2947}
2948
2949// NotDone returns true if the page enumeration should be started or is not yet complete.
2950func (page IntegrationRuntimeListResponsePage) NotDone() bool {
2951	return !page.irlr.IsEmpty()
2952}
2953
2954// Response returns the raw server response from the last page request.
2955func (page IntegrationRuntimeListResponsePage) Response() IntegrationRuntimeListResponse {
2956	return page.irlr
2957}
2958
2959// Values returns the slice of values for the current page or nil if there are no values.
2960func (page IntegrationRuntimeListResponsePage) Values() []IntegrationRuntimeResource {
2961	if page.irlr.IsEmpty() {
2962		return nil
2963	}
2964	return *page.irlr.Value
2965}
2966
2967// Creates a new instance of the IntegrationRuntimeListResponsePage type.
2968func NewIntegrationRuntimeListResponsePage(cur IntegrationRuntimeListResponse, getNextPage func(context.Context, IntegrationRuntimeListResponse) (IntegrationRuntimeListResponse, error)) IntegrationRuntimeListResponsePage {
2969	return IntegrationRuntimeListResponsePage{
2970		fn:   getNextPage,
2971		irlr: cur,
2972	}
2973}
2974
2975// IntegrationRuntimeMonitoringData get monitoring data response.
2976type IntegrationRuntimeMonitoringData struct {
2977	autorest.Response `json:"-"`
2978	// Name - Integration runtime name.
2979	Name *string `json:"name,omitempty"`
2980	// Nodes - Integration runtime node monitoring data.
2981	Nodes *[]IntegrationRuntimeNodeMonitoringData `json:"nodes,omitempty"`
2982}
2983
2984// IntegrationRuntimeNodeIPAddress the IP address of self-hosted integration runtime node.
2985type IntegrationRuntimeNodeIPAddress struct {
2986	autorest.Response `json:"-"`
2987	// IPAddress - READ-ONLY; The IP address of self-hosted integration runtime node.
2988	IPAddress *string `json:"ipAddress,omitempty"`
2989}
2990
2991// MarshalJSON is the custom marshaler for IntegrationRuntimeNodeIPAddress.
2992func (irnia IntegrationRuntimeNodeIPAddress) MarshalJSON() ([]byte, error) {
2993	objectMap := make(map[string]interface{})
2994	return json.Marshal(objectMap)
2995}
2996
2997// IntegrationRuntimeNodeMonitoringData monitoring data for integration runtime node.
2998type IntegrationRuntimeNodeMonitoringData struct {
2999	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
3000	AdditionalProperties map[string]interface{} `json:""`
3001	// NodeName - READ-ONLY; Name of the integration runtime node.
3002	NodeName *string `json:"nodeName,omitempty"`
3003	// AvailableMemoryInMB - READ-ONLY; Available memory (MB) on the integration runtime node.
3004	AvailableMemoryInMB *int32 `json:"availableMemoryInMB,omitempty"`
3005	// CPUUtilization - READ-ONLY; CPU percentage on the integration runtime node.
3006	CPUUtilization *int32 `json:"cpuUtilization,omitempty"`
3007	// ConcurrentJobsLimit - READ-ONLY; Maximum concurrent jobs on the integration runtime node.
3008	ConcurrentJobsLimit *int32 `json:"concurrentJobsLimit,omitempty"`
3009	// ConcurrentJobsRunning - READ-ONLY; The number of jobs currently running on the integration runtime node.
3010	ConcurrentJobsRunning *int32 `json:"concurrentJobsRunning,omitempty"`
3011	// MaxConcurrentJobs - READ-ONLY; The maximum concurrent jobs in this integration runtime.
3012	MaxConcurrentJobs *int32 `json:"maxConcurrentJobs,omitempty"`
3013	// SentBytes - READ-ONLY; Sent bytes on the integration runtime node.
3014	SentBytes *float64 `json:"sentBytes,omitempty"`
3015	// ReceivedBytes - READ-ONLY; Received bytes on the integration runtime node.
3016	ReceivedBytes *float64 `json:"receivedBytes,omitempty"`
3017}
3018
3019// MarshalJSON is the custom marshaler for IntegrationRuntimeNodeMonitoringData.
3020func (irnmd IntegrationRuntimeNodeMonitoringData) MarshalJSON() ([]byte, error) {
3021	objectMap := make(map[string]interface{})
3022	for k, v := range irnmd.AdditionalProperties {
3023		objectMap[k] = v
3024	}
3025	return json.Marshal(objectMap)
3026}
3027
3028// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeNodeMonitoringData struct.
3029func (irnmd *IntegrationRuntimeNodeMonitoringData) UnmarshalJSON(body []byte) error {
3030	var m map[string]*json.RawMessage
3031	err := json.Unmarshal(body, &m)
3032	if err != nil {
3033		return err
3034	}
3035	for k, v := range m {
3036		switch k {
3037		default:
3038			if v != nil {
3039				var additionalProperties interface{}
3040				err = json.Unmarshal(*v, &additionalProperties)
3041				if err != nil {
3042					return err
3043				}
3044				if irnmd.AdditionalProperties == nil {
3045					irnmd.AdditionalProperties = make(map[string]interface{})
3046				}
3047				irnmd.AdditionalProperties[k] = additionalProperties
3048			}
3049		case "nodeName":
3050			if v != nil {
3051				var nodeName string
3052				err = json.Unmarshal(*v, &nodeName)
3053				if err != nil {
3054					return err
3055				}
3056				irnmd.NodeName = &nodeName
3057			}
3058		case "availableMemoryInMB":
3059			if v != nil {
3060				var availableMemoryInMB int32
3061				err = json.Unmarshal(*v, &availableMemoryInMB)
3062				if err != nil {
3063					return err
3064				}
3065				irnmd.AvailableMemoryInMB = &availableMemoryInMB
3066			}
3067		case "cpuUtilization":
3068			if v != nil {
3069				var CPUUtilization int32
3070				err = json.Unmarshal(*v, &CPUUtilization)
3071				if err != nil {
3072					return err
3073				}
3074				irnmd.CPUUtilization = &CPUUtilization
3075			}
3076		case "concurrentJobsLimit":
3077			if v != nil {
3078				var concurrentJobsLimit int32
3079				err = json.Unmarshal(*v, &concurrentJobsLimit)
3080				if err != nil {
3081					return err
3082				}
3083				irnmd.ConcurrentJobsLimit = &concurrentJobsLimit
3084			}
3085		case "concurrentJobsRunning":
3086			if v != nil {
3087				var concurrentJobsRunning int32
3088				err = json.Unmarshal(*v, &concurrentJobsRunning)
3089				if err != nil {
3090					return err
3091				}
3092				irnmd.ConcurrentJobsRunning = &concurrentJobsRunning
3093			}
3094		case "maxConcurrentJobs":
3095			if v != nil {
3096				var maxConcurrentJobs int32
3097				err = json.Unmarshal(*v, &maxConcurrentJobs)
3098				if err != nil {
3099					return err
3100				}
3101				irnmd.MaxConcurrentJobs = &maxConcurrentJobs
3102			}
3103		case "sentBytes":
3104			if v != nil {
3105				var sentBytes float64
3106				err = json.Unmarshal(*v, &sentBytes)
3107				if err != nil {
3108					return err
3109				}
3110				irnmd.SentBytes = &sentBytes
3111			}
3112		case "receivedBytes":
3113			if v != nil {
3114				var receivedBytes float64
3115				err = json.Unmarshal(*v, &receivedBytes)
3116				if err != nil {
3117					return err
3118				}
3119				irnmd.ReceivedBytes = &receivedBytes
3120			}
3121		}
3122	}
3123
3124	return nil
3125}
3126
3127// IntegrationRuntimeObjectMetadataRefreshFuture an abstraction for monitoring and retrieving the results
3128// of a long-running operation.
3129type IntegrationRuntimeObjectMetadataRefreshFuture struct {
3130	azure.FutureAPI
3131	// Result returns the result of the asynchronous operation.
3132	// If the operation has not completed it will return an error.
3133	Result func(IntegrationRuntimeObjectMetadataClient) (SsisObjectMetadataStatusResponse, error)
3134}
3135
3136// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3137func (future *IntegrationRuntimeObjectMetadataRefreshFuture) UnmarshalJSON(body []byte) error {
3138	var azFuture azure.Future
3139	if err := json.Unmarshal(body, &azFuture); err != nil {
3140		return err
3141	}
3142	future.FutureAPI = &azFuture
3143	future.Result = future.result
3144	return nil
3145}
3146
3147// result is the default implementation for IntegrationRuntimeObjectMetadataRefreshFuture.Result.
3148func (future *IntegrationRuntimeObjectMetadataRefreshFuture) result(client IntegrationRuntimeObjectMetadataClient) (somsr SsisObjectMetadataStatusResponse, err error) {
3149	var done bool
3150	done, err = future.DoneWithContext(context.Background(), client)
3151	if err != nil {
3152		err = autorest.NewErrorWithError(err, "synapse.IntegrationRuntimeObjectMetadataRefreshFuture", "Result", future.Response(), "Polling failure")
3153		return
3154	}
3155	if !done {
3156		somsr.Response.Response = future.Response()
3157		err = azure.NewAsyncOpIncompleteError("synapse.IntegrationRuntimeObjectMetadataRefreshFuture")
3158		return
3159	}
3160	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3161	if somsr.Response.Response, err = future.GetResult(sender); err == nil && somsr.Response.Response.StatusCode != http.StatusNoContent {
3162		somsr, err = client.RefreshResponder(somsr.Response.Response)
3163		if err != nil {
3164			err = autorest.NewErrorWithError(err, "synapse.IntegrationRuntimeObjectMetadataRefreshFuture", "Result", somsr.Response.Response, "Failure responding to request")
3165		}
3166	}
3167	return
3168}
3169
3170// IntegrationRuntimeRegenerateKeyParameters parameters to regenerate the authentication key.
3171type IntegrationRuntimeRegenerateKeyParameters struct {
3172	// KeyName - The name of the authentication key to regenerate. Possible values include: 'AuthKey1', 'AuthKey2'
3173	KeyName IntegrationRuntimeAuthKeyName `json:"keyName,omitempty"`
3174}
3175
3176// IntegrationRuntimeResource integration runtime resource type.
3177type IntegrationRuntimeResource struct {
3178	autorest.Response `json:"-"`
3179	// Properties - Integration runtime properties.
3180	Properties BasicIntegrationRuntime `json:"properties,omitempty"`
3181	// Etag - READ-ONLY; Resource Etag.
3182	Etag *string `json:"etag,omitempty"`
3183	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
3184	ID *string `json:"id,omitempty"`
3185	// Name - READ-ONLY; The name of the resource
3186	Name *string `json:"name,omitempty"`
3187	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
3188	Type *string `json:"type,omitempty"`
3189}
3190
3191// MarshalJSON is the custom marshaler for IntegrationRuntimeResource.
3192func (irr IntegrationRuntimeResource) MarshalJSON() ([]byte, error) {
3193	objectMap := make(map[string]interface{})
3194	objectMap["properties"] = irr.Properties
3195	return json.Marshal(objectMap)
3196}
3197
3198// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeResource struct.
3199func (irr *IntegrationRuntimeResource) UnmarshalJSON(body []byte) error {
3200	var m map[string]*json.RawMessage
3201	err := json.Unmarshal(body, &m)
3202	if err != nil {
3203		return err
3204	}
3205	for k, v := range m {
3206		switch k {
3207		case "properties":
3208			if v != nil {
3209				properties, err := unmarshalBasicIntegrationRuntime(*v)
3210				if err != nil {
3211					return err
3212				}
3213				irr.Properties = properties
3214			}
3215		case "etag":
3216			if v != nil {
3217				var etag string
3218				err = json.Unmarshal(*v, &etag)
3219				if err != nil {
3220					return err
3221				}
3222				irr.Etag = &etag
3223			}
3224		case "id":
3225			if v != nil {
3226				var ID string
3227				err = json.Unmarshal(*v, &ID)
3228				if err != nil {
3229					return err
3230				}
3231				irr.ID = &ID
3232			}
3233		case "name":
3234			if v != nil {
3235				var name string
3236				err = json.Unmarshal(*v, &name)
3237				if err != nil {
3238					return err
3239				}
3240				irr.Name = &name
3241			}
3242		case "type":
3243			if v != nil {
3244				var typeVar string
3245				err = json.Unmarshal(*v, &typeVar)
3246				if err != nil {
3247					return err
3248				}
3249				irr.Type = &typeVar
3250			}
3251		}
3252	}
3253
3254	return nil
3255}
3256
3257// IntegrationRuntimesCreateFuture an abstraction for monitoring and retrieving the results of a
3258// long-running operation.
3259type IntegrationRuntimesCreateFuture struct {
3260	azure.FutureAPI
3261	// Result returns the result of the asynchronous operation.
3262	// If the operation has not completed it will return an error.
3263	Result func(IntegrationRuntimesClient) (IntegrationRuntimeResource, error)
3264}
3265
3266// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3267func (future *IntegrationRuntimesCreateFuture) UnmarshalJSON(body []byte) error {
3268	var azFuture azure.Future
3269	if err := json.Unmarshal(body, &azFuture); err != nil {
3270		return err
3271	}
3272	future.FutureAPI = &azFuture
3273	future.Result = future.result
3274	return nil
3275}
3276
3277// result is the default implementation for IntegrationRuntimesCreateFuture.Result.
3278func (future *IntegrationRuntimesCreateFuture) result(client IntegrationRuntimesClient) (irr IntegrationRuntimeResource, err error) {
3279	var done bool
3280	done, err = future.DoneWithContext(context.Background(), client)
3281	if err != nil {
3282		err = autorest.NewErrorWithError(err, "synapse.IntegrationRuntimesCreateFuture", "Result", future.Response(), "Polling failure")
3283		return
3284	}
3285	if !done {
3286		irr.Response.Response = future.Response()
3287		err = azure.NewAsyncOpIncompleteError("synapse.IntegrationRuntimesCreateFuture")
3288		return
3289	}
3290	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3291	if irr.Response.Response, err = future.GetResult(sender); err == nil && irr.Response.Response.StatusCode != http.StatusNoContent {
3292		irr, err = client.CreateResponder(irr.Response.Response)
3293		if err != nil {
3294			err = autorest.NewErrorWithError(err, "synapse.IntegrationRuntimesCreateFuture", "Result", irr.Response.Response, "Failure responding to request")
3295		}
3296	}
3297	return
3298}
3299
3300// IntegrationRuntimesDeleteFuture an abstraction for monitoring and retrieving the results of a
3301// long-running operation.
3302type IntegrationRuntimesDeleteFuture struct {
3303	azure.FutureAPI
3304	// Result returns the result of the asynchronous operation.
3305	// If the operation has not completed it will return an error.
3306	Result func(IntegrationRuntimesClient) (autorest.Response, error)
3307}
3308
3309// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3310func (future *IntegrationRuntimesDeleteFuture) UnmarshalJSON(body []byte) error {
3311	var azFuture azure.Future
3312	if err := json.Unmarshal(body, &azFuture); err != nil {
3313		return err
3314	}
3315	future.FutureAPI = &azFuture
3316	future.Result = future.result
3317	return nil
3318}
3319
3320// result is the default implementation for IntegrationRuntimesDeleteFuture.Result.
3321func (future *IntegrationRuntimesDeleteFuture) result(client IntegrationRuntimesClient) (ar autorest.Response, err error) {
3322	var done bool
3323	done, err = future.DoneWithContext(context.Background(), client)
3324	if err != nil {
3325		err = autorest.NewErrorWithError(err, "synapse.IntegrationRuntimesDeleteFuture", "Result", future.Response(), "Polling failure")
3326		return
3327	}
3328	if !done {
3329		ar.Response = future.Response()
3330		err = azure.NewAsyncOpIncompleteError("synapse.IntegrationRuntimesDeleteFuture")
3331		return
3332	}
3333	ar.Response = future.Response()
3334	return
3335}
3336
3337// IntegrationRuntimesDisableInteractiveQueryFuture an abstraction for monitoring and retrieving the
3338// results of a long-running operation.
3339type IntegrationRuntimesDisableInteractiveQueryFuture struct {
3340	azure.FutureAPI
3341	// Result returns the result of the asynchronous operation.
3342	// If the operation has not completed it will return an error.
3343	Result func(IntegrationRuntimesClient) (autorest.Response, error)
3344}
3345
3346// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3347func (future *IntegrationRuntimesDisableInteractiveQueryFuture) UnmarshalJSON(body []byte) error {
3348	var azFuture azure.Future
3349	if err := json.Unmarshal(body, &azFuture); err != nil {
3350		return err
3351	}
3352	future.FutureAPI = &azFuture
3353	future.Result = future.result
3354	return nil
3355}
3356
3357// result is the default implementation for IntegrationRuntimesDisableInteractiveQueryFuture.Result.
3358func (future *IntegrationRuntimesDisableInteractiveQueryFuture) result(client IntegrationRuntimesClient) (ar autorest.Response, err error) {
3359	var done bool
3360	done, err = future.DoneWithContext(context.Background(), client)
3361	if err != nil {
3362		err = autorest.NewErrorWithError(err, "synapse.IntegrationRuntimesDisableInteractiveQueryFuture", "Result", future.Response(), "Polling failure")
3363		return
3364	}
3365	if !done {
3366		ar.Response = future.Response()
3367		err = azure.NewAsyncOpIncompleteError("synapse.IntegrationRuntimesDisableInteractiveQueryFuture")
3368		return
3369	}
3370	ar.Response = future.Response()
3371	return
3372}
3373
3374// IntegrationRuntimesEnableInteractiveQueryFuture an abstraction for monitoring and retrieving the results
3375// of a long-running operation.
3376type IntegrationRuntimesEnableInteractiveQueryFuture struct {
3377	azure.FutureAPI
3378	// Result returns the result of the asynchronous operation.
3379	// If the operation has not completed it will return an error.
3380	Result func(IntegrationRuntimesClient) (autorest.Response, error)
3381}
3382
3383// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3384func (future *IntegrationRuntimesEnableInteractiveQueryFuture) UnmarshalJSON(body []byte) error {
3385	var azFuture azure.Future
3386	if err := json.Unmarshal(body, &azFuture); err != nil {
3387		return err
3388	}
3389	future.FutureAPI = &azFuture
3390	future.Result = future.result
3391	return nil
3392}
3393
3394// result is the default implementation for IntegrationRuntimesEnableInteractiveQueryFuture.Result.
3395func (future *IntegrationRuntimesEnableInteractiveQueryFuture) result(client IntegrationRuntimesClient) (ar autorest.Response, err error) {
3396	var done bool
3397	done, err = future.DoneWithContext(context.Background(), client)
3398	if err != nil {
3399		err = autorest.NewErrorWithError(err, "synapse.IntegrationRuntimesEnableInteractiveQueryFuture", "Result", future.Response(), "Polling failure")
3400		return
3401	}
3402	if !done {
3403		ar.Response = future.Response()
3404		err = azure.NewAsyncOpIncompleteError("synapse.IntegrationRuntimesEnableInteractiveQueryFuture")
3405		return
3406	}
3407	ar.Response = future.Response()
3408	return
3409}
3410
3411// IntegrationRuntimeSsisCatalogInfo catalog information for managed dedicated integration runtime.
3412type IntegrationRuntimeSsisCatalogInfo struct {
3413	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
3414	AdditionalProperties map[string]interface{} `json:""`
3415	// CatalogServerEndpoint - The catalog database server URL.
3416	CatalogServerEndpoint *string `json:"catalogServerEndpoint,omitempty"`
3417	// CatalogAdminUserName - The administrator user name of catalog database.
3418	CatalogAdminUserName *string `json:"catalogAdminUserName,omitempty"`
3419	// CatalogAdminPassword - The password of the administrator user account of the catalog database.
3420	CatalogAdminPassword *SecureString `json:"catalogAdminPassword,omitempty"`
3421	// CatalogPricingTier - The pricing tier for the catalog database. The valid values could be found in https://azure.microsoft.com/en-us/pricing/details/sql-database/. Possible values include: 'IntegrationRuntimeSsisCatalogPricingTierBasic', 'IntegrationRuntimeSsisCatalogPricingTierStandard', 'IntegrationRuntimeSsisCatalogPricingTierPremium', 'IntegrationRuntimeSsisCatalogPricingTierPremiumRS'
3422	CatalogPricingTier IntegrationRuntimeSsisCatalogPricingTier `json:"catalogPricingTier,omitempty"`
3423}
3424
3425// MarshalJSON is the custom marshaler for IntegrationRuntimeSsisCatalogInfo.
3426func (irsci IntegrationRuntimeSsisCatalogInfo) MarshalJSON() ([]byte, error) {
3427	objectMap := make(map[string]interface{})
3428	if irsci.CatalogServerEndpoint != nil {
3429		objectMap["catalogServerEndpoint"] = irsci.CatalogServerEndpoint
3430	}
3431	if irsci.CatalogAdminUserName != nil {
3432		objectMap["catalogAdminUserName"] = irsci.CatalogAdminUserName
3433	}
3434	if irsci.CatalogAdminPassword != nil {
3435		objectMap["catalogAdminPassword"] = irsci.CatalogAdminPassword
3436	}
3437	if irsci.CatalogPricingTier != "" {
3438		objectMap["catalogPricingTier"] = irsci.CatalogPricingTier
3439	}
3440	for k, v := range irsci.AdditionalProperties {
3441		objectMap[k] = v
3442	}
3443	return json.Marshal(objectMap)
3444}
3445
3446// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeSsisCatalogInfo struct.
3447func (irsci *IntegrationRuntimeSsisCatalogInfo) UnmarshalJSON(body []byte) error {
3448	var m map[string]*json.RawMessage
3449	err := json.Unmarshal(body, &m)
3450	if err != nil {
3451		return err
3452	}
3453	for k, v := range m {
3454		switch k {
3455		default:
3456			if v != nil {
3457				var additionalProperties interface{}
3458				err = json.Unmarshal(*v, &additionalProperties)
3459				if err != nil {
3460					return err
3461				}
3462				if irsci.AdditionalProperties == nil {
3463					irsci.AdditionalProperties = make(map[string]interface{})
3464				}
3465				irsci.AdditionalProperties[k] = additionalProperties
3466			}
3467		case "catalogServerEndpoint":
3468			if v != nil {
3469				var catalogServerEndpoint string
3470				err = json.Unmarshal(*v, &catalogServerEndpoint)
3471				if err != nil {
3472					return err
3473				}
3474				irsci.CatalogServerEndpoint = &catalogServerEndpoint
3475			}
3476		case "catalogAdminUserName":
3477			if v != nil {
3478				var catalogAdminUserName string
3479				err = json.Unmarshal(*v, &catalogAdminUserName)
3480				if err != nil {
3481					return err
3482				}
3483				irsci.CatalogAdminUserName = &catalogAdminUserName
3484			}
3485		case "catalogAdminPassword":
3486			if v != nil {
3487				var catalogAdminPassword SecureString
3488				err = json.Unmarshal(*v, &catalogAdminPassword)
3489				if err != nil {
3490					return err
3491				}
3492				irsci.CatalogAdminPassword = &catalogAdminPassword
3493			}
3494		case "catalogPricingTier":
3495			if v != nil {
3496				var catalogPricingTier IntegrationRuntimeSsisCatalogPricingTier
3497				err = json.Unmarshal(*v, &catalogPricingTier)
3498				if err != nil {
3499					return err
3500				}
3501				irsci.CatalogPricingTier = catalogPricingTier
3502			}
3503		}
3504	}
3505
3506	return nil
3507}
3508
3509// IntegrationRuntimeSsisProperties SSIS properties for managed integration runtime.
3510type IntegrationRuntimeSsisProperties struct {
3511	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
3512	AdditionalProperties map[string]interface{} `json:""`
3513	// CatalogInfo - Catalog information for managed dedicated integration runtime.
3514	CatalogInfo *IntegrationRuntimeSsisCatalogInfo `json:"catalogInfo,omitempty"`
3515	// LicenseType - License type for bringing your own license scenario. Possible values include: 'BasePrice', 'LicenseIncluded'
3516	LicenseType IntegrationRuntimeLicenseType `json:"licenseType,omitempty"`
3517	// CustomSetupScriptProperties - Custom setup script properties for a managed dedicated integration runtime.
3518	CustomSetupScriptProperties *IntegrationRuntimeCustomSetupScriptProperties `json:"customSetupScriptProperties,omitempty"`
3519	// DataProxyProperties - Data proxy properties for a managed dedicated integration runtime.
3520	DataProxyProperties *IntegrationRuntimeDataProxyProperties `json:"dataProxyProperties,omitempty"`
3521	// Edition - The edition for the SSIS Integration Runtime. Possible values include: 'Standard', 'Enterprise'
3522	Edition IntegrationRuntimeEdition `json:"edition,omitempty"`
3523	// ExpressCustomSetupProperties - Custom setup without script properties for a SSIS integration runtime.
3524	ExpressCustomSetupProperties *[]BasicCustomSetupBase `json:"expressCustomSetupProperties,omitempty"`
3525}
3526
3527// MarshalJSON is the custom marshaler for IntegrationRuntimeSsisProperties.
3528func (irsp IntegrationRuntimeSsisProperties) MarshalJSON() ([]byte, error) {
3529	objectMap := make(map[string]interface{})
3530	if irsp.CatalogInfo != nil {
3531		objectMap["catalogInfo"] = irsp.CatalogInfo
3532	}
3533	if irsp.LicenseType != "" {
3534		objectMap["licenseType"] = irsp.LicenseType
3535	}
3536	if irsp.CustomSetupScriptProperties != nil {
3537		objectMap["customSetupScriptProperties"] = irsp.CustomSetupScriptProperties
3538	}
3539	if irsp.DataProxyProperties != nil {
3540		objectMap["dataProxyProperties"] = irsp.DataProxyProperties
3541	}
3542	if irsp.Edition != "" {
3543		objectMap["edition"] = irsp.Edition
3544	}
3545	if irsp.ExpressCustomSetupProperties != nil {
3546		objectMap["expressCustomSetupProperties"] = irsp.ExpressCustomSetupProperties
3547	}
3548	for k, v := range irsp.AdditionalProperties {
3549		objectMap[k] = v
3550	}
3551	return json.Marshal(objectMap)
3552}
3553
3554// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeSsisProperties struct.
3555func (irsp *IntegrationRuntimeSsisProperties) UnmarshalJSON(body []byte) error {
3556	var m map[string]*json.RawMessage
3557	err := json.Unmarshal(body, &m)
3558	if err != nil {
3559		return err
3560	}
3561	for k, v := range m {
3562		switch k {
3563		default:
3564			if v != nil {
3565				var additionalProperties interface{}
3566				err = json.Unmarshal(*v, &additionalProperties)
3567				if err != nil {
3568					return err
3569				}
3570				if irsp.AdditionalProperties == nil {
3571					irsp.AdditionalProperties = make(map[string]interface{})
3572				}
3573				irsp.AdditionalProperties[k] = additionalProperties
3574			}
3575		case "catalogInfo":
3576			if v != nil {
3577				var catalogInfo IntegrationRuntimeSsisCatalogInfo
3578				err = json.Unmarshal(*v, &catalogInfo)
3579				if err != nil {
3580					return err
3581				}
3582				irsp.CatalogInfo = &catalogInfo
3583			}
3584		case "licenseType":
3585			if v != nil {
3586				var licenseType IntegrationRuntimeLicenseType
3587				err = json.Unmarshal(*v, &licenseType)
3588				if err != nil {
3589					return err
3590				}
3591				irsp.LicenseType = licenseType
3592			}
3593		case "customSetupScriptProperties":
3594			if v != nil {
3595				var customSetupScriptProperties IntegrationRuntimeCustomSetupScriptProperties
3596				err = json.Unmarshal(*v, &customSetupScriptProperties)
3597				if err != nil {
3598					return err
3599				}
3600				irsp.CustomSetupScriptProperties = &customSetupScriptProperties
3601			}
3602		case "dataProxyProperties":
3603			if v != nil {
3604				var dataProxyProperties IntegrationRuntimeDataProxyProperties
3605				err = json.Unmarshal(*v, &dataProxyProperties)
3606				if err != nil {
3607					return err
3608				}
3609				irsp.DataProxyProperties = &dataProxyProperties
3610			}
3611		case "edition":
3612			if v != nil {
3613				var edition IntegrationRuntimeEdition
3614				err = json.Unmarshal(*v, &edition)
3615				if err != nil {
3616					return err
3617				}
3618				irsp.Edition = edition
3619			}
3620		case "expressCustomSetupProperties":
3621			if v != nil {
3622				expressCustomSetupProperties, err := unmarshalBasicCustomSetupBaseArray(*v)
3623				if err != nil {
3624					return err
3625				}
3626				irsp.ExpressCustomSetupProperties = &expressCustomSetupProperties
3627			}
3628		}
3629	}
3630
3631	return nil
3632}
3633
3634// IntegrationRuntimesStartFuture an abstraction for monitoring and retrieving the results of a
3635// long-running operation.
3636type IntegrationRuntimesStartFuture struct {
3637	azure.FutureAPI
3638	// Result returns the result of the asynchronous operation.
3639	// If the operation has not completed it will return an error.
3640	Result func(IntegrationRuntimesClient) (IntegrationRuntimeStatusResponse, error)
3641}
3642
3643// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3644func (future *IntegrationRuntimesStartFuture) UnmarshalJSON(body []byte) error {
3645	var azFuture azure.Future
3646	if err := json.Unmarshal(body, &azFuture); err != nil {
3647		return err
3648	}
3649	future.FutureAPI = &azFuture
3650	future.Result = future.result
3651	return nil
3652}
3653
3654// result is the default implementation for IntegrationRuntimesStartFuture.Result.
3655func (future *IntegrationRuntimesStartFuture) result(client IntegrationRuntimesClient) (irsr IntegrationRuntimeStatusResponse, err error) {
3656	var done bool
3657	done, err = future.DoneWithContext(context.Background(), client)
3658	if err != nil {
3659		err = autorest.NewErrorWithError(err, "synapse.IntegrationRuntimesStartFuture", "Result", future.Response(), "Polling failure")
3660		return
3661	}
3662	if !done {
3663		irsr.Response.Response = future.Response()
3664		err = azure.NewAsyncOpIncompleteError("synapse.IntegrationRuntimesStartFuture")
3665		return
3666	}
3667	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
3668	if irsr.Response.Response, err = future.GetResult(sender); err == nil && irsr.Response.Response.StatusCode != http.StatusNoContent {
3669		irsr, err = client.StartResponder(irsr.Response.Response)
3670		if err != nil {
3671			err = autorest.NewErrorWithError(err, "synapse.IntegrationRuntimesStartFuture", "Result", irsr.Response.Response, "Failure responding to request")
3672		}
3673	}
3674	return
3675}
3676
3677// IntegrationRuntimesStopFuture an abstraction for monitoring and retrieving the results of a long-running
3678// operation.
3679type IntegrationRuntimesStopFuture struct {
3680	azure.FutureAPI
3681	// Result returns the result of the asynchronous operation.
3682	// If the operation has not completed it will return an error.
3683	Result func(IntegrationRuntimesClient) (autorest.Response, error)
3684}
3685
3686// UnmarshalJSON is the custom unmarshaller for CreateFuture.
3687func (future *IntegrationRuntimesStopFuture) UnmarshalJSON(body []byte) error {
3688	var azFuture azure.Future
3689	if err := json.Unmarshal(body, &azFuture); err != nil {
3690		return err
3691	}
3692	future.FutureAPI = &azFuture
3693	future.Result = future.result
3694	return nil
3695}
3696
3697// result is the default implementation for IntegrationRuntimesStopFuture.Result.
3698func (future *IntegrationRuntimesStopFuture) result(client IntegrationRuntimesClient) (ar autorest.Response, err error) {
3699	var done bool
3700	done, err = future.DoneWithContext(context.Background(), client)
3701	if err != nil {
3702		err = autorest.NewErrorWithError(err, "synapse.IntegrationRuntimesStopFuture", "Result", future.Response(), "Polling failure")
3703		return
3704	}
3705	if !done {
3706		ar.Response = future.Response()
3707		err = azure.NewAsyncOpIncompleteError("synapse.IntegrationRuntimesStopFuture")
3708		return
3709	}
3710	ar.Response = future.Response()
3711	return
3712}
3713
3714// BasicIntegrationRuntimeStatus integration runtime status.
3715type BasicIntegrationRuntimeStatus interface {
3716	AsManagedIntegrationRuntimeStatus() (*ManagedIntegrationRuntimeStatus, bool)
3717	AsSelfHostedIntegrationRuntimeStatus() (*SelfHostedIntegrationRuntimeStatus, bool)
3718	AsIntegrationRuntimeStatus() (*IntegrationRuntimeStatus, bool)
3719}
3720
3721// IntegrationRuntimeStatus integration runtime status.
3722type IntegrationRuntimeStatus struct {
3723	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
3724	AdditionalProperties map[string]interface{} `json:""`
3725	// DataFactoryName - READ-ONLY; The workspace name which the integration runtime belong to.
3726	DataFactoryName *string `json:"dataFactoryName,omitempty"`
3727	// State - READ-ONLY; The state of integration runtime. Possible values include: 'Initial', 'Stopped', 'Started', 'Starting', 'Stopping', 'NeedRegistration', 'Online', 'Limited', 'Offline', 'AccessDenied'
3728	State IntegrationRuntimeState `json:"state,omitempty"`
3729	// Type - Possible values include: 'TypeBasicIntegrationRuntimeStatusTypeIntegrationRuntimeStatus', 'TypeBasicIntegrationRuntimeStatusTypeManaged', 'TypeBasicIntegrationRuntimeStatusTypeSelfHosted'
3730	Type TypeBasicIntegrationRuntimeStatus `json:"type,omitempty"`
3731}
3732
3733func unmarshalBasicIntegrationRuntimeStatus(body []byte) (BasicIntegrationRuntimeStatus, error) {
3734	var m map[string]interface{}
3735	err := json.Unmarshal(body, &m)
3736	if err != nil {
3737		return nil, err
3738	}
3739
3740	switch m["type"] {
3741	case string(TypeBasicIntegrationRuntimeStatusTypeManaged):
3742		var mirs ManagedIntegrationRuntimeStatus
3743		err := json.Unmarshal(body, &mirs)
3744		return mirs, err
3745	case string(TypeBasicIntegrationRuntimeStatusTypeSelfHosted):
3746		var shirs SelfHostedIntegrationRuntimeStatus
3747		err := json.Unmarshal(body, &shirs)
3748		return shirs, err
3749	default:
3750		var irs IntegrationRuntimeStatus
3751		err := json.Unmarshal(body, &irs)
3752		return irs, err
3753	}
3754}
3755func unmarshalBasicIntegrationRuntimeStatusArray(body []byte) ([]BasicIntegrationRuntimeStatus, error) {
3756	var rawMessages []*json.RawMessage
3757	err := json.Unmarshal(body, &rawMessages)
3758	if err != nil {
3759		return nil, err
3760	}
3761
3762	irsArray := make([]BasicIntegrationRuntimeStatus, len(rawMessages))
3763
3764	for index, rawMessage := range rawMessages {
3765		irs, err := unmarshalBasicIntegrationRuntimeStatus(*rawMessage)
3766		if err != nil {
3767			return nil, err
3768		}
3769		irsArray[index] = irs
3770	}
3771	return irsArray, nil
3772}
3773
3774// MarshalJSON is the custom marshaler for IntegrationRuntimeStatus.
3775func (irs IntegrationRuntimeStatus) MarshalJSON() ([]byte, error) {
3776	irs.Type = TypeBasicIntegrationRuntimeStatusTypeIntegrationRuntimeStatus
3777	objectMap := make(map[string]interface{})
3778	if irs.Type != "" {
3779		objectMap["type"] = irs.Type
3780	}
3781	for k, v := range irs.AdditionalProperties {
3782		objectMap[k] = v
3783	}
3784	return json.Marshal(objectMap)
3785}
3786
3787// AsManagedIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for IntegrationRuntimeStatus.
3788func (irs IntegrationRuntimeStatus) AsManagedIntegrationRuntimeStatus() (*ManagedIntegrationRuntimeStatus, bool) {
3789	return nil, false
3790}
3791
3792// AsSelfHostedIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for IntegrationRuntimeStatus.
3793func (irs IntegrationRuntimeStatus) AsSelfHostedIntegrationRuntimeStatus() (*SelfHostedIntegrationRuntimeStatus, bool) {
3794	return nil, false
3795}
3796
3797// AsIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for IntegrationRuntimeStatus.
3798func (irs IntegrationRuntimeStatus) AsIntegrationRuntimeStatus() (*IntegrationRuntimeStatus, bool) {
3799	return &irs, true
3800}
3801
3802// AsBasicIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for IntegrationRuntimeStatus.
3803func (irs IntegrationRuntimeStatus) AsBasicIntegrationRuntimeStatus() (BasicIntegrationRuntimeStatus, bool) {
3804	return &irs, true
3805}
3806
3807// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeStatus struct.
3808func (irs *IntegrationRuntimeStatus) UnmarshalJSON(body []byte) error {
3809	var m map[string]*json.RawMessage
3810	err := json.Unmarshal(body, &m)
3811	if err != nil {
3812		return err
3813	}
3814	for k, v := range m {
3815		switch k {
3816		default:
3817			if v != nil {
3818				var additionalProperties interface{}
3819				err = json.Unmarshal(*v, &additionalProperties)
3820				if err != nil {
3821					return err
3822				}
3823				if irs.AdditionalProperties == nil {
3824					irs.AdditionalProperties = make(map[string]interface{})
3825				}
3826				irs.AdditionalProperties[k] = additionalProperties
3827			}
3828		case "dataFactoryName":
3829			if v != nil {
3830				var dataFactoryName string
3831				err = json.Unmarshal(*v, &dataFactoryName)
3832				if err != nil {
3833					return err
3834				}
3835				irs.DataFactoryName = &dataFactoryName
3836			}
3837		case "state":
3838			if v != nil {
3839				var state IntegrationRuntimeState
3840				err = json.Unmarshal(*v, &state)
3841				if err != nil {
3842					return err
3843				}
3844				irs.State = state
3845			}
3846		case "type":
3847			if v != nil {
3848				var typeVar TypeBasicIntegrationRuntimeStatus
3849				err = json.Unmarshal(*v, &typeVar)
3850				if err != nil {
3851					return err
3852				}
3853				irs.Type = typeVar
3854			}
3855		}
3856	}
3857
3858	return nil
3859}
3860
3861// IntegrationRuntimeStatusResponse integration runtime status response.
3862type IntegrationRuntimeStatusResponse struct {
3863	autorest.Response `json:"-"`
3864	// Name - READ-ONLY; The integration runtime name.
3865	Name *string `json:"name,omitempty"`
3866	// Properties - Integration runtime properties.
3867	Properties BasicIntegrationRuntimeStatus `json:"properties,omitempty"`
3868}
3869
3870// MarshalJSON is the custom marshaler for IntegrationRuntimeStatusResponse.
3871func (irsr IntegrationRuntimeStatusResponse) MarshalJSON() ([]byte, error) {
3872	objectMap := make(map[string]interface{})
3873	objectMap["properties"] = irsr.Properties
3874	return json.Marshal(objectMap)
3875}
3876
3877// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeStatusResponse struct.
3878func (irsr *IntegrationRuntimeStatusResponse) UnmarshalJSON(body []byte) error {
3879	var m map[string]*json.RawMessage
3880	err := json.Unmarshal(body, &m)
3881	if err != nil {
3882		return err
3883	}
3884	for k, v := range m {
3885		switch k {
3886		case "name":
3887			if v != nil {
3888				var name string
3889				err = json.Unmarshal(*v, &name)
3890				if err != nil {
3891					return err
3892				}
3893				irsr.Name = &name
3894			}
3895		case "properties":
3896			if v != nil {
3897				properties, err := unmarshalBasicIntegrationRuntimeStatus(*v)
3898				if err != nil {
3899					return err
3900				}
3901				irsr.Properties = properties
3902			}
3903		}
3904	}
3905
3906	return nil
3907}
3908
3909// IntegrationRuntimeVNetProperties vNet properties for managed integration runtime.
3910type IntegrationRuntimeVNetProperties struct {
3911	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
3912	AdditionalProperties map[string]interface{} `json:""`
3913	// VNetID - The ID of the VNet that this integration runtime will join.
3914	VNetID *string `json:"vNetId,omitempty"`
3915	// Subnet - The name of the subnet this integration runtime will join.
3916	Subnet *string `json:"subnet,omitempty"`
3917	// PublicIPs - Resource IDs of the public IP addresses that this integration runtime will use.
3918	PublicIPs *[]string `json:"publicIPs,omitempty"`
3919}
3920
3921// MarshalJSON is the custom marshaler for IntegrationRuntimeVNetProperties.
3922func (irvnp IntegrationRuntimeVNetProperties) MarshalJSON() ([]byte, error) {
3923	objectMap := make(map[string]interface{})
3924	if irvnp.VNetID != nil {
3925		objectMap["vNetId"] = irvnp.VNetID
3926	}
3927	if irvnp.Subnet != nil {
3928		objectMap["subnet"] = irvnp.Subnet
3929	}
3930	if irvnp.PublicIPs != nil {
3931		objectMap["publicIPs"] = irvnp.PublicIPs
3932	}
3933	for k, v := range irvnp.AdditionalProperties {
3934		objectMap[k] = v
3935	}
3936	return json.Marshal(objectMap)
3937}
3938
3939// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeVNetProperties struct.
3940func (irvnp *IntegrationRuntimeVNetProperties) UnmarshalJSON(body []byte) error {
3941	var m map[string]*json.RawMessage
3942	err := json.Unmarshal(body, &m)
3943	if err != nil {
3944		return err
3945	}
3946	for k, v := range m {
3947		switch k {
3948		default:
3949			if v != nil {
3950				var additionalProperties interface{}
3951				err = json.Unmarshal(*v, &additionalProperties)
3952				if err != nil {
3953					return err
3954				}
3955				if irvnp.AdditionalProperties == nil {
3956					irvnp.AdditionalProperties = make(map[string]interface{})
3957				}
3958				irvnp.AdditionalProperties[k] = additionalProperties
3959			}
3960		case "vNetId":
3961			if v != nil {
3962				var vNetID string
3963				err = json.Unmarshal(*v, &vNetID)
3964				if err != nil {
3965					return err
3966				}
3967				irvnp.VNetID = &vNetID
3968			}
3969		case "subnet":
3970			if v != nil {
3971				var subnet string
3972				err = json.Unmarshal(*v, &subnet)
3973				if err != nil {
3974					return err
3975				}
3976				irvnp.Subnet = &subnet
3977			}
3978		case "publicIPs":
3979			if v != nil {
3980				var publicIPs []string
3981				err = json.Unmarshal(*v, &publicIPs)
3982				if err != nil {
3983					return err
3984				}
3985				irvnp.PublicIPs = &publicIPs
3986			}
3987		}
3988	}
3989
3990	return nil
3991}
3992
3993// IPFirewallRuleInfo IP firewall rule
3994type IPFirewallRuleInfo struct {
3995	autorest.Response `json:"-"`
3996	// IPFirewallRuleProperties - IP firewall rule properties
3997	*IPFirewallRuleProperties `json:"properties,omitempty"`
3998	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
3999	ID *string `json:"id,omitempty"`
4000	// Name - READ-ONLY; The name of the resource
4001	Name *string `json:"name,omitempty"`
4002	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
4003	Type *string `json:"type,omitempty"`
4004}
4005
4006// MarshalJSON is the custom marshaler for IPFirewallRuleInfo.
4007func (ifri IPFirewallRuleInfo) MarshalJSON() ([]byte, error) {
4008	objectMap := make(map[string]interface{})
4009	if ifri.IPFirewallRuleProperties != nil {
4010		objectMap["properties"] = ifri.IPFirewallRuleProperties
4011	}
4012	return json.Marshal(objectMap)
4013}
4014
4015// UnmarshalJSON is the custom unmarshaler for IPFirewallRuleInfo struct.
4016func (ifri *IPFirewallRuleInfo) UnmarshalJSON(body []byte) error {
4017	var m map[string]*json.RawMessage
4018	err := json.Unmarshal(body, &m)
4019	if err != nil {
4020		return err
4021	}
4022	for k, v := range m {
4023		switch k {
4024		case "properties":
4025			if v != nil {
4026				var IPFirewallRuleProperties IPFirewallRuleProperties
4027				err = json.Unmarshal(*v, &IPFirewallRuleProperties)
4028				if err != nil {
4029					return err
4030				}
4031				ifri.IPFirewallRuleProperties = &IPFirewallRuleProperties
4032			}
4033		case "id":
4034			if v != nil {
4035				var ID string
4036				err = json.Unmarshal(*v, &ID)
4037				if err != nil {
4038					return err
4039				}
4040				ifri.ID = &ID
4041			}
4042		case "name":
4043			if v != nil {
4044				var name string
4045				err = json.Unmarshal(*v, &name)
4046				if err != nil {
4047					return err
4048				}
4049				ifri.Name = &name
4050			}
4051		case "type":
4052			if v != nil {
4053				var typeVar string
4054				err = json.Unmarshal(*v, &typeVar)
4055				if err != nil {
4056					return err
4057				}
4058				ifri.Type = &typeVar
4059			}
4060		}
4061	}
4062
4063	return nil
4064}
4065
4066// IPFirewallRuleInfoListResult list of IP firewall rules
4067type IPFirewallRuleInfoListResult struct {
4068	autorest.Response `json:"-"`
4069	// NextLink - Link to next page of results
4070	NextLink *string `json:"nextLink,omitempty"`
4071	// Value - List of IP firewall rules
4072	Value *[]IPFirewallRuleInfo `json:"value,omitempty"`
4073}
4074
4075// IPFirewallRuleInfoListResultIterator provides access to a complete listing of IPFirewallRuleInfo values.
4076type IPFirewallRuleInfoListResultIterator struct {
4077	i    int
4078	page IPFirewallRuleInfoListResultPage
4079}
4080
4081// NextWithContext advances to the next value.  If there was an error making
4082// the request the iterator does not advance and the error is returned.
4083func (iter *IPFirewallRuleInfoListResultIterator) NextWithContext(ctx context.Context) (err error) {
4084	if tracing.IsEnabled() {
4085		ctx = tracing.StartSpan(ctx, fqdn+"/IPFirewallRuleInfoListResultIterator.NextWithContext")
4086		defer func() {
4087			sc := -1
4088			if iter.Response().Response.Response != nil {
4089				sc = iter.Response().Response.Response.StatusCode
4090			}
4091			tracing.EndSpan(ctx, sc, err)
4092		}()
4093	}
4094	iter.i++
4095	if iter.i < len(iter.page.Values()) {
4096		return nil
4097	}
4098	err = iter.page.NextWithContext(ctx)
4099	if err != nil {
4100		iter.i--
4101		return err
4102	}
4103	iter.i = 0
4104	return nil
4105}
4106
4107// Next advances to the next value.  If there was an error making
4108// the request the iterator does not advance and the error is returned.
4109// Deprecated: Use NextWithContext() instead.
4110func (iter *IPFirewallRuleInfoListResultIterator) Next() error {
4111	return iter.NextWithContext(context.Background())
4112}
4113
4114// NotDone returns true if the enumeration should be started or is not yet complete.
4115func (iter IPFirewallRuleInfoListResultIterator) NotDone() bool {
4116	return iter.page.NotDone() && iter.i < len(iter.page.Values())
4117}
4118
4119// Response returns the raw server response from the last page request.
4120func (iter IPFirewallRuleInfoListResultIterator) Response() IPFirewallRuleInfoListResult {
4121	return iter.page.Response()
4122}
4123
4124// Value returns the current value or a zero-initialized value if the
4125// iterator has advanced beyond the end of the collection.
4126func (iter IPFirewallRuleInfoListResultIterator) Value() IPFirewallRuleInfo {
4127	if !iter.page.NotDone() {
4128		return IPFirewallRuleInfo{}
4129	}
4130	return iter.page.Values()[iter.i]
4131}
4132
4133// Creates a new instance of the IPFirewallRuleInfoListResultIterator type.
4134func NewIPFirewallRuleInfoListResultIterator(page IPFirewallRuleInfoListResultPage) IPFirewallRuleInfoListResultIterator {
4135	return IPFirewallRuleInfoListResultIterator{page: page}
4136}
4137
4138// IsEmpty returns true if the ListResult contains no values.
4139func (ifrilr IPFirewallRuleInfoListResult) IsEmpty() bool {
4140	return ifrilr.Value == nil || len(*ifrilr.Value) == 0
4141}
4142
4143// hasNextLink returns true if the NextLink is not empty.
4144func (ifrilr IPFirewallRuleInfoListResult) hasNextLink() bool {
4145	return ifrilr.NextLink != nil && len(*ifrilr.NextLink) != 0
4146}
4147
4148// iPFirewallRuleInfoListResultPreparer prepares a request to retrieve the next set of results.
4149// It returns nil if no more results exist.
4150func (ifrilr IPFirewallRuleInfoListResult) iPFirewallRuleInfoListResultPreparer(ctx context.Context) (*http.Request, error) {
4151	if !ifrilr.hasNextLink() {
4152		return nil, nil
4153	}
4154	return autorest.Prepare((&http.Request{}).WithContext(ctx),
4155		autorest.AsJSON(),
4156		autorest.AsGet(),
4157		autorest.WithBaseURL(to.String(ifrilr.NextLink)))
4158}
4159
4160// IPFirewallRuleInfoListResultPage contains a page of IPFirewallRuleInfo values.
4161type IPFirewallRuleInfoListResultPage struct {
4162	fn     func(context.Context, IPFirewallRuleInfoListResult) (IPFirewallRuleInfoListResult, error)
4163	ifrilr IPFirewallRuleInfoListResult
4164}
4165
4166// NextWithContext advances to the next page of values.  If there was an error making
4167// the request the page does not advance and the error is returned.
4168func (page *IPFirewallRuleInfoListResultPage) NextWithContext(ctx context.Context) (err error) {
4169	if tracing.IsEnabled() {
4170		ctx = tracing.StartSpan(ctx, fqdn+"/IPFirewallRuleInfoListResultPage.NextWithContext")
4171		defer func() {
4172			sc := -1
4173			if page.Response().Response.Response != nil {
4174				sc = page.Response().Response.Response.StatusCode
4175			}
4176			tracing.EndSpan(ctx, sc, err)
4177		}()
4178	}
4179	for {
4180		next, err := page.fn(ctx, page.ifrilr)
4181		if err != nil {
4182			return err
4183		}
4184		page.ifrilr = next
4185		if !next.hasNextLink() || !next.IsEmpty() {
4186			break
4187		}
4188	}
4189	return nil
4190}
4191
4192// Next advances to the next page of values.  If there was an error making
4193// the request the page does not advance and the error is returned.
4194// Deprecated: Use NextWithContext() instead.
4195func (page *IPFirewallRuleInfoListResultPage) Next() error {
4196	return page.NextWithContext(context.Background())
4197}
4198
4199// NotDone returns true if the page enumeration should be started or is not yet complete.
4200func (page IPFirewallRuleInfoListResultPage) NotDone() bool {
4201	return !page.ifrilr.IsEmpty()
4202}
4203
4204// Response returns the raw server response from the last page request.
4205func (page IPFirewallRuleInfoListResultPage) Response() IPFirewallRuleInfoListResult {
4206	return page.ifrilr
4207}
4208
4209// Values returns the slice of values for the current page or nil if there are no values.
4210func (page IPFirewallRuleInfoListResultPage) Values() []IPFirewallRuleInfo {
4211	if page.ifrilr.IsEmpty() {
4212		return nil
4213	}
4214	return *page.ifrilr.Value
4215}
4216
4217// Creates a new instance of the IPFirewallRuleInfoListResultPage type.
4218func NewIPFirewallRuleInfoListResultPage(cur IPFirewallRuleInfoListResult, getNextPage func(context.Context, IPFirewallRuleInfoListResult) (IPFirewallRuleInfoListResult, error)) IPFirewallRuleInfoListResultPage {
4219	return IPFirewallRuleInfoListResultPage{
4220		fn:     getNextPage,
4221		ifrilr: cur,
4222	}
4223}
4224
4225// IPFirewallRuleProperties IP firewall rule properties
4226type IPFirewallRuleProperties struct {
4227	// EndIPAddress - The end IP address of the firewall rule. Must be IPv4 format. Must be greater than or equal to startIpAddress
4228	EndIPAddress *string `json:"endIpAddress,omitempty"`
4229	// ProvisioningState - READ-ONLY; Resource provisioning state. Possible values include: 'ProvisioningStateProvisioning', 'ProvisioningStateSucceeded', 'ProvisioningStateDeleting', 'ProvisioningStateFailed', 'ProvisioningStateDeleteError'
4230	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
4231	// StartIPAddress - The start IP address of the firewall rule. Must be IPv4 format
4232	StartIPAddress *string `json:"startIpAddress,omitempty"`
4233}
4234
4235// MarshalJSON is the custom marshaler for IPFirewallRuleProperties.
4236func (ifrp IPFirewallRuleProperties) MarshalJSON() ([]byte, error) {
4237	objectMap := make(map[string]interface{})
4238	if ifrp.EndIPAddress != nil {
4239		objectMap["endIpAddress"] = ifrp.EndIPAddress
4240	}
4241	if ifrp.StartIPAddress != nil {
4242		objectMap["startIpAddress"] = ifrp.StartIPAddress
4243	}
4244	return json.Marshal(objectMap)
4245}
4246
4247// IPFirewallRulesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
4248// long-running operation.
4249type IPFirewallRulesCreateOrUpdateFuture struct {
4250	azure.FutureAPI
4251	// Result returns the result of the asynchronous operation.
4252	// If the operation has not completed it will return an error.
4253	Result func(IPFirewallRulesClient) (IPFirewallRuleInfo, error)
4254}
4255
4256// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4257func (future *IPFirewallRulesCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
4258	var azFuture azure.Future
4259	if err := json.Unmarshal(body, &azFuture); err != nil {
4260		return err
4261	}
4262	future.FutureAPI = &azFuture
4263	future.Result = future.result
4264	return nil
4265}
4266
4267// result is the default implementation for IPFirewallRulesCreateOrUpdateFuture.Result.
4268func (future *IPFirewallRulesCreateOrUpdateFuture) result(client IPFirewallRulesClient) (ifri IPFirewallRuleInfo, err error) {
4269	var done bool
4270	done, err = future.DoneWithContext(context.Background(), client)
4271	if err != nil {
4272		err = autorest.NewErrorWithError(err, "synapse.IPFirewallRulesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
4273		return
4274	}
4275	if !done {
4276		ifri.Response.Response = future.Response()
4277		err = azure.NewAsyncOpIncompleteError("synapse.IPFirewallRulesCreateOrUpdateFuture")
4278		return
4279	}
4280	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4281	if ifri.Response.Response, err = future.GetResult(sender); err == nil && ifri.Response.Response.StatusCode != http.StatusNoContent {
4282		ifri, err = client.CreateOrUpdateResponder(ifri.Response.Response)
4283		if err != nil {
4284			err = autorest.NewErrorWithError(err, "synapse.IPFirewallRulesCreateOrUpdateFuture", "Result", ifri.Response.Response, "Failure responding to request")
4285		}
4286	}
4287	return
4288}
4289
4290// IPFirewallRulesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
4291// operation.
4292type IPFirewallRulesDeleteFuture struct {
4293	azure.FutureAPI
4294	// Result returns the result of the asynchronous operation.
4295	// If the operation has not completed it will return an error.
4296	Result func(IPFirewallRulesClient) (SetObject, error)
4297}
4298
4299// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4300func (future *IPFirewallRulesDeleteFuture) UnmarshalJSON(body []byte) error {
4301	var azFuture azure.Future
4302	if err := json.Unmarshal(body, &azFuture); err != nil {
4303		return err
4304	}
4305	future.FutureAPI = &azFuture
4306	future.Result = future.result
4307	return nil
4308}
4309
4310// result is the default implementation for IPFirewallRulesDeleteFuture.Result.
4311func (future *IPFirewallRulesDeleteFuture) result(client IPFirewallRulesClient) (so SetObject, err error) {
4312	var done bool
4313	done, err = future.DoneWithContext(context.Background(), client)
4314	if err != nil {
4315		err = autorest.NewErrorWithError(err, "synapse.IPFirewallRulesDeleteFuture", "Result", future.Response(), "Polling failure")
4316		return
4317	}
4318	if !done {
4319		so.Response.Response = future.Response()
4320		err = azure.NewAsyncOpIncompleteError("synapse.IPFirewallRulesDeleteFuture")
4321		return
4322	}
4323	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4324	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
4325		so, err = client.DeleteResponder(so.Response.Response)
4326		if err != nil {
4327			err = autorest.NewErrorWithError(err, "synapse.IPFirewallRulesDeleteFuture", "Result", so.Response.Response, "Failure responding to request")
4328		}
4329	}
4330	return
4331}
4332
4333// IPFirewallRulesReplaceAllFuture an abstraction for monitoring and retrieving the results of a
4334// long-running operation.
4335type IPFirewallRulesReplaceAllFuture struct {
4336	azure.FutureAPI
4337	// Result returns the result of the asynchronous operation.
4338	// If the operation has not completed it will return an error.
4339	Result func(IPFirewallRulesClient) (ReplaceAllFirewallRulesOperationResponse, error)
4340}
4341
4342// UnmarshalJSON is the custom unmarshaller for CreateFuture.
4343func (future *IPFirewallRulesReplaceAllFuture) UnmarshalJSON(body []byte) error {
4344	var azFuture azure.Future
4345	if err := json.Unmarshal(body, &azFuture); err != nil {
4346		return err
4347	}
4348	future.FutureAPI = &azFuture
4349	future.Result = future.result
4350	return nil
4351}
4352
4353// result is the default implementation for IPFirewallRulesReplaceAllFuture.Result.
4354func (future *IPFirewallRulesReplaceAllFuture) result(client IPFirewallRulesClient) (rafror ReplaceAllFirewallRulesOperationResponse, err error) {
4355	var done bool
4356	done, err = future.DoneWithContext(context.Background(), client)
4357	if err != nil {
4358		err = autorest.NewErrorWithError(err, "synapse.IPFirewallRulesReplaceAllFuture", "Result", future.Response(), "Polling failure")
4359		return
4360	}
4361	if !done {
4362		rafror.Response.Response = future.Response()
4363		err = azure.NewAsyncOpIncompleteError("synapse.IPFirewallRulesReplaceAllFuture")
4364		return
4365	}
4366	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
4367	if rafror.Response.Response, err = future.GetResult(sender); err == nil && rafror.Response.Response.StatusCode != http.StatusNoContent {
4368		rafror, err = client.ReplaceAllResponder(rafror.Response.Response)
4369		if err != nil {
4370			err = autorest.NewErrorWithError(err, "synapse.IPFirewallRulesReplaceAllFuture", "Result", rafror.Response.Response, "Failure responding to request")
4371		}
4372	}
4373	return
4374}
4375
4376// Key a workspace key
4377type Key struct {
4378	autorest.Response `json:"-"`
4379	// KeyProperties - Keys resource properties
4380	*KeyProperties `json:"properties,omitempty"`
4381	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
4382	ID *string `json:"id,omitempty"`
4383	// Name - READ-ONLY; The name of the resource
4384	Name *string `json:"name,omitempty"`
4385	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
4386	Type *string `json:"type,omitempty"`
4387}
4388
4389// MarshalJSON is the custom marshaler for Key.
4390func (kVar Key) MarshalJSON() ([]byte, error) {
4391	objectMap := make(map[string]interface{})
4392	if kVar.KeyProperties != nil {
4393		objectMap["properties"] = kVar.KeyProperties
4394	}
4395	return json.Marshal(objectMap)
4396}
4397
4398// UnmarshalJSON is the custom unmarshaler for Key struct.
4399func (kVar *Key) UnmarshalJSON(body []byte) error {
4400	var m map[string]*json.RawMessage
4401	err := json.Unmarshal(body, &m)
4402	if err != nil {
4403		return err
4404	}
4405	for k, v := range m {
4406		switch k {
4407		case "properties":
4408			if v != nil {
4409				var keyProperties KeyProperties
4410				err = json.Unmarshal(*v, &keyProperties)
4411				if err != nil {
4412					return err
4413				}
4414				kVar.KeyProperties = &keyProperties
4415			}
4416		case "id":
4417			if v != nil {
4418				var ID string
4419				err = json.Unmarshal(*v, &ID)
4420				if err != nil {
4421					return err
4422				}
4423				kVar.ID = &ID
4424			}
4425		case "name":
4426			if v != nil {
4427				var name string
4428				err = json.Unmarshal(*v, &name)
4429				if err != nil {
4430					return err
4431				}
4432				kVar.Name = &name
4433			}
4434		case "type":
4435			if v != nil {
4436				var typeVar string
4437				err = json.Unmarshal(*v, &typeVar)
4438				if err != nil {
4439					return err
4440				}
4441				kVar.Type = &typeVar
4442			}
4443		}
4444	}
4445
4446	return nil
4447}
4448
4449// KeyInfoListResult list of keys
4450type KeyInfoListResult struct {
4451	autorest.Response `json:"-"`
4452	// NextLink - Link to the next page of results
4453	NextLink *string `json:"nextLink,omitempty"`
4454	// Value - List of keys
4455	Value *[]Key `json:"value,omitempty"`
4456}
4457
4458// KeyInfoListResultIterator provides access to a complete listing of Key values.
4459type KeyInfoListResultIterator struct {
4460	i    int
4461	page KeyInfoListResultPage
4462}
4463
4464// NextWithContext advances to the next value.  If there was an error making
4465// the request the iterator does not advance and the error is returned.
4466func (iter *KeyInfoListResultIterator) NextWithContext(ctx context.Context) (err error) {
4467	if tracing.IsEnabled() {
4468		ctx = tracing.StartSpan(ctx, fqdn+"/KeyInfoListResultIterator.NextWithContext")
4469		defer func() {
4470			sc := -1
4471			if iter.Response().Response.Response != nil {
4472				sc = iter.Response().Response.Response.StatusCode
4473			}
4474			tracing.EndSpan(ctx, sc, err)
4475		}()
4476	}
4477	iter.i++
4478	if iter.i < len(iter.page.Values()) {
4479		return nil
4480	}
4481	err = iter.page.NextWithContext(ctx)
4482	if err != nil {
4483		iter.i--
4484		return err
4485	}
4486	iter.i = 0
4487	return nil
4488}
4489
4490// Next advances to the next value.  If there was an error making
4491// the request the iterator does not advance and the error is returned.
4492// Deprecated: Use NextWithContext() instead.
4493func (iter *KeyInfoListResultIterator) Next() error {
4494	return iter.NextWithContext(context.Background())
4495}
4496
4497// NotDone returns true if the enumeration should be started or is not yet complete.
4498func (iter KeyInfoListResultIterator) NotDone() bool {
4499	return iter.page.NotDone() && iter.i < len(iter.page.Values())
4500}
4501
4502// Response returns the raw server response from the last page request.
4503func (iter KeyInfoListResultIterator) Response() KeyInfoListResult {
4504	return iter.page.Response()
4505}
4506
4507// Value returns the current value or a zero-initialized value if the
4508// iterator has advanced beyond the end of the collection.
4509func (iter KeyInfoListResultIterator) Value() Key {
4510	if !iter.page.NotDone() {
4511		return Key{}
4512	}
4513	return iter.page.Values()[iter.i]
4514}
4515
4516// Creates a new instance of the KeyInfoListResultIterator type.
4517func NewKeyInfoListResultIterator(page KeyInfoListResultPage) KeyInfoListResultIterator {
4518	return KeyInfoListResultIterator{page: page}
4519}
4520
4521// IsEmpty returns true if the ListResult contains no values.
4522func (kilr KeyInfoListResult) IsEmpty() bool {
4523	return kilr.Value == nil || len(*kilr.Value) == 0
4524}
4525
4526// hasNextLink returns true if the NextLink is not empty.
4527func (kilr KeyInfoListResult) hasNextLink() bool {
4528	return kilr.NextLink != nil && len(*kilr.NextLink) != 0
4529}
4530
4531// keyInfoListResultPreparer prepares a request to retrieve the next set of results.
4532// It returns nil if no more results exist.
4533func (kilr KeyInfoListResult) keyInfoListResultPreparer(ctx context.Context) (*http.Request, error) {
4534	if !kilr.hasNextLink() {
4535		return nil, nil
4536	}
4537	return autorest.Prepare((&http.Request{}).WithContext(ctx),
4538		autorest.AsJSON(),
4539		autorest.AsGet(),
4540		autorest.WithBaseURL(to.String(kilr.NextLink)))
4541}
4542
4543// KeyInfoListResultPage contains a page of Key values.
4544type KeyInfoListResultPage struct {
4545	fn   func(context.Context, KeyInfoListResult) (KeyInfoListResult, error)
4546	kilr KeyInfoListResult
4547}
4548
4549// NextWithContext advances to the next page of values.  If there was an error making
4550// the request the page does not advance and the error is returned.
4551func (page *KeyInfoListResultPage) NextWithContext(ctx context.Context) (err error) {
4552	if tracing.IsEnabled() {
4553		ctx = tracing.StartSpan(ctx, fqdn+"/KeyInfoListResultPage.NextWithContext")
4554		defer func() {
4555			sc := -1
4556			if page.Response().Response.Response != nil {
4557				sc = page.Response().Response.Response.StatusCode
4558			}
4559			tracing.EndSpan(ctx, sc, err)
4560		}()
4561	}
4562	for {
4563		next, err := page.fn(ctx, page.kilr)
4564		if err != nil {
4565			return err
4566		}
4567		page.kilr = next
4568		if !next.hasNextLink() || !next.IsEmpty() {
4569			break
4570		}
4571	}
4572	return nil
4573}
4574
4575// Next advances to the next page of values.  If there was an error making
4576// the request the page does not advance and the error is returned.
4577// Deprecated: Use NextWithContext() instead.
4578func (page *KeyInfoListResultPage) Next() error {
4579	return page.NextWithContext(context.Background())
4580}
4581
4582// NotDone returns true if the page enumeration should be started or is not yet complete.
4583func (page KeyInfoListResultPage) NotDone() bool {
4584	return !page.kilr.IsEmpty()
4585}
4586
4587// Response returns the raw server response from the last page request.
4588func (page KeyInfoListResultPage) Response() KeyInfoListResult {
4589	return page.kilr
4590}
4591
4592// Values returns the slice of values for the current page or nil if there are no values.
4593func (page KeyInfoListResultPage) Values() []Key {
4594	if page.kilr.IsEmpty() {
4595		return nil
4596	}
4597	return *page.kilr.Value
4598}
4599
4600// Creates a new instance of the KeyInfoListResultPage type.
4601func NewKeyInfoListResultPage(cur KeyInfoListResult, getNextPage func(context.Context, KeyInfoListResult) (KeyInfoListResult, error)) KeyInfoListResultPage {
4602	return KeyInfoListResultPage{
4603		fn:   getNextPage,
4604		kilr: cur,
4605	}
4606}
4607
4608// KeyProperties key properties
4609type KeyProperties struct {
4610	// IsActiveCMK - Used to activate the workspace after a customer managed key is provided.
4611	IsActiveCMK *bool `json:"isActiveCMK,omitempty"`
4612	// KeyVaultURL - The Key Vault Url of the workspace key.
4613	KeyVaultURL *string `json:"keyVaultUrl,omitempty"`
4614}
4615
4616// LibraryRequirements library requirements for a Big Data pool powered by Apache Spark
4617type LibraryRequirements struct {
4618	// Time - READ-ONLY; The last update time of the library requirements file.
4619	Time *date.Time `json:"time,omitempty"`
4620	// Content - The library requirements.
4621	Content *string `json:"content,omitempty"`
4622	// Filename - The filename of the library requirements file.
4623	Filename *string `json:"filename,omitempty"`
4624}
4625
4626// MarshalJSON is the custom marshaler for LibraryRequirements.
4627func (lr LibraryRequirements) MarshalJSON() ([]byte, error) {
4628	objectMap := make(map[string]interface{})
4629	if lr.Content != nil {
4630		objectMap["content"] = lr.Content
4631	}
4632	if lr.Filename != nil {
4633		objectMap["filename"] = lr.Filename
4634	}
4635	return json.Marshal(objectMap)
4636}
4637
4638// LicensedComponentSetupTypeProperties installation of licensed component setup type properties.
4639type LicensedComponentSetupTypeProperties struct {
4640	// ComponentName - The name of the 3rd party component.
4641	ComponentName *string `json:"componentName,omitempty"`
4642	// LicenseKey - The license key to activate the component.
4643	LicenseKey BasicSecretBase `json:"licenseKey,omitempty"`
4644}
4645
4646// UnmarshalJSON is the custom unmarshaler for LicensedComponentSetupTypeProperties struct.
4647func (lcstp *LicensedComponentSetupTypeProperties) UnmarshalJSON(body []byte) error {
4648	var m map[string]*json.RawMessage
4649	err := json.Unmarshal(body, &m)
4650	if err != nil {
4651		return err
4652	}
4653	for k, v := range m {
4654		switch k {
4655		case "componentName":
4656			if v != nil {
4657				var componentName string
4658				err = json.Unmarshal(*v, &componentName)
4659				if err != nil {
4660					return err
4661				}
4662				lcstp.ComponentName = &componentName
4663			}
4664		case "licenseKey":
4665			if v != nil {
4666				licenseKey, err := unmarshalBasicSecretBase(*v)
4667				if err != nil {
4668					return err
4669				}
4670				lcstp.LicenseKey = licenseKey
4671			}
4672		}
4673	}
4674
4675	return nil
4676}
4677
4678// LinkedIntegrationRuntime the linked integration runtime information.
4679type LinkedIntegrationRuntime struct {
4680	// Name - READ-ONLY; The name of the linked integration runtime.
4681	Name *string `json:"name,omitempty"`
4682	// SubscriptionID - READ-ONLY; The subscription ID for which the linked integration runtime belong to.
4683	SubscriptionID *string `json:"subscriptionId,omitempty"`
4684	// DataFactoryName - READ-ONLY; The name of the workspace for which the linked integration runtime belong to.
4685	DataFactoryName *string `json:"dataFactoryName,omitempty"`
4686	// DataFactoryLocation - READ-ONLY; The location of the workspace for which the linked integration runtime belong to.
4687	DataFactoryLocation *string `json:"dataFactoryLocation,omitempty"`
4688	// CreateTime - READ-ONLY; The creating time of the linked integration runtime.
4689	CreateTime *date.Time `json:"createTime,omitempty"`
4690}
4691
4692// MarshalJSON is the custom marshaler for LinkedIntegrationRuntime.
4693func (lir LinkedIntegrationRuntime) MarshalJSON() ([]byte, error) {
4694	objectMap := make(map[string]interface{})
4695	return json.Marshal(objectMap)
4696}
4697
4698// LinkedIntegrationRuntimeKeyAuthorization the key authorization type integration runtime.
4699type LinkedIntegrationRuntimeKeyAuthorization struct {
4700	// Key - The key used for authorization.
4701	Key *SecureString `json:"key,omitempty"`
4702	// AuthorizationType - Possible values include: 'AuthorizationTypeLinkedIntegrationRuntimeType', 'AuthorizationTypeKey', 'AuthorizationTypeRBAC'
4703	AuthorizationType AuthorizationType `json:"authorizationType,omitempty"`
4704}
4705
4706// MarshalJSON is the custom marshaler for LinkedIntegrationRuntimeKeyAuthorization.
4707func (lirka LinkedIntegrationRuntimeKeyAuthorization) MarshalJSON() ([]byte, error) {
4708	lirka.AuthorizationType = AuthorizationTypeKey
4709	objectMap := make(map[string]interface{})
4710	if lirka.Key != nil {
4711		objectMap["key"] = lirka.Key
4712	}
4713	if lirka.AuthorizationType != "" {
4714		objectMap["authorizationType"] = lirka.AuthorizationType
4715	}
4716	return json.Marshal(objectMap)
4717}
4718
4719// AsLinkedIntegrationRuntimeKeyAuthorization is the BasicLinkedIntegrationRuntimeType implementation for LinkedIntegrationRuntimeKeyAuthorization.
4720func (lirka LinkedIntegrationRuntimeKeyAuthorization) AsLinkedIntegrationRuntimeKeyAuthorization() (*LinkedIntegrationRuntimeKeyAuthorization, bool) {
4721	return &lirka, true
4722}
4723
4724// AsLinkedIntegrationRuntimeRbacAuthorization is the BasicLinkedIntegrationRuntimeType implementation for LinkedIntegrationRuntimeKeyAuthorization.
4725func (lirka LinkedIntegrationRuntimeKeyAuthorization) AsLinkedIntegrationRuntimeRbacAuthorization() (*LinkedIntegrationRuntimeRbacAuthorization, bool) {
4726	return nil, false
4727}
4728
4729// AsLinkedIntegrationRuntimeType is the BasicLinkedIntegrationRuntimeType implementation for LinkedIntegrationRuntimeKeyAuthorization.
4730func (lirka LinkedIntegrationRuntimeKeyAuthorization) AsLinkedIntegrationRuntimeType() (*LinkedIntegrationRuntimeType, bool) {
4731	return nil, false
4732}
4733
4734// AsBasicLinkedIntegrationRuntimeType is the BasicLinkedIntegrationRuntimeType implementation for LinkedIntegrationRuntimeKeyAuthorization.
4735func (lirka LinkedIntegrationRuntimeKeyAuthorization) AsBasicLinkedIntegrationRuntimeType() (BasicLinkedIntegrationRuntimeType, bool) {
4736	return &lirka, true
4737}
4738
4739// LinkedIntegrationRuntimeRbacAuthorization the role based access control (RBAC) authorization type
4740// integration runtime.
4741type LinkedIntegrationRuntimeRbacAuthorization struct {
4742	// ResourceID - The resource identifier of the integration runtime to be shared.
4743	ResourceID *string `json:"resourceId,omitempty"`
4744	// AuthorizationType - Possible values include: 'AuthorizationTypeLinkedIntegrationRuntimeType', 'AuthorizationTypeKey', 'AuthorizationTypeRBAC'
4745	AuthorizationType AuthorizationType `json:"authorizationType,omitempty"`
4746}
4747
4748// MarshalJSON is the custom marshaler for LinkedIntegrationRuntimeRbacAuthorization.
4749func (lirra LinkedIntegrationRuntimeRbacAuthorization) MarshalJSON() ([]byte, error) {
4750	lirra.AuthorizationType = AuthorizationTypeRBAC
4751	objectMap := make(map[string]interface{})
4752	if lirra.ResourceID != nil {
4753		objectMap["resourceId"] = lirra.ResourceID
4754	}
4755	if lirra.AuthorizationType != "" {
4756		objectMap["authorizationType"] = lirra.AuthorizationType
4757	}
4758	return json.Marshal(objectMap)
4759}
4760
4761// AsLinkedIntegrationRuntimeKeyAuthorization is the BasicLinkedIntegrationRuntimeType implementation for LinkedIntegrationRuntimeRbacAuthorization.
4762func (lirra LinkedIntegrationRuntimeRbacAuthorization) AsLinkedIntegrationRuntimeKeyAuthorization() (*LinkedIntegrationRuntimeKeyAuthorization, bool) {
4763	return nil, false
4764}
4765
4766// AsLinkedIntegrationRuntimeRbacAuthorization is the BasicLinkedIntegrationRuntimeType implementation for LinkedIntegrationRuntimeRbacAuthorization.
4767func (lirra LinkedIntegrationRuntimeRbacAuthorization) AsLinkedIntegrationRuntimeRbacAuthorization() (*LinkedIntegrationRuntimeRbacAuthorization, bool) {
4768	return &lirra, true
4769}
4770
4771// AsLinkedIntegrationRuntimeType is the BasicLinkedIntegrationRuntimeType implementation for LinkedIntegrationRuntimeRbacAuthorization.
4772func (lirra LinkedIntegrationRuntimeRbacAuthorization) AsLinkedIntegrationRuntimeType() (*LinkedIntegrationRuntimeType, bool) {
4773	return nil, false
4774}
4775
4776// AsBasicLinkedIntegrationRuntimeType is the BasicLinkedIntegrationRuntimeType implementation for LinkedIntegrationRuntimeRbacAuthorization.
4777func (lirra LinkedIntegrationRuntimeRbacAuthorization) AsBasicLinkedIntegrationRuntimeType() (BasicLinkedIntegrationRuntimeType, bool) {
4778	return &lirra, true
4779}
4780
4781// BasicLinkedIntegrationRuntimeType the base definition of a linked integration runtime.
4782type BasicLinkedIntegrationRuntimeType interface {
4783	AsLinkedIntegrationRuntimeKeyAuthorization() (*LinkedIntegrationRuntimeKeyAuthorization, bool)
4784	AsLinkedIntegrationRuntimeRbacAuthorization() (*LinkedIntegrationRuntimeRbacAuthorization, bool)
4785	AsLinkedIntegrationRuntimeType() (*LinkedIntegrationRuntimeType, bool)
4786}
4787
4788// LinkedIntegrationRuntimeType the base definition of a linked integration runtime.
4789type LinkedIntegrationRuntimeType struct {
4790	// AuthorizationType - Possible values include: 'AuthorizationTypeLinkedIntegrationRuntimeType', 'AuthorizationTypeKey', 'AuthorizationTypeRBAC'
4791	AuthorizationType AuthorizationType `json:"authorizationType,omitempty"`
4792}
4793
4794func unmarshalBasicLinkedIntegrationRuntimeType(body []byte) (BasicLinkedIntegrationRuntimeType, error) {
4795	var m map[string]interface{}
4796	err := json.Unmarshal(body, &m)
4797	if err != nil {
4798		return nil, err
4799	}
4800
4801	switch m["authorizationType"] {
4802	case string(AuthorizationTypeKey):
4803		var lirka LinkedIntegrationRuntimeKeyAuthorization
4804		err := json.Unmarshal(body, &lirka)
4805		return lirka, err
4806	case string(AuthorizationTypeRBAC):
4807		var lirra LinkedIntegrationRuntimeRbacAuthorization
4808		err := json.Unmarshal(body, &lirra)
4809		return lirra, err
4810	default:
4811		var lirt LinkedIntegrationRuntimeType
4812		err := json.Unmarshal(body, &lirt)
4813		return lirt, err
4814	}
4815}
4816func unmarshalBasicLinkedIntegrationRuntimeTypeArray(body []byte) ([]BasicLinkedIntegrationRuntimeType, error) {
4817	var rawMessages []*json.RawMessage
4818	err := json.Unmarshal(body, &rawMessages)
4819	if err != nil {
4820		return nil, err
4821	}
4822
4823	lirtArray := make([]BasicLinkedIntegrationRuntimeType, len(rawMessages))
4824
4825	for index, rawMessage := range rawMessages {
4826		lirt, err := unmarshalBasicLinkedIntegrationRuntimeType(*rawMessage)
4827		if err != nil {
4828			return nil, err
4829		}
4830		lirtArray[index] = lirt
4831	}
4832	return lirtArray, nil
4833}
4834
4835// MarshalJSON is the custom marshaler for LinkedIntegrationRuntimeType.
4836func (lirt LinkedIntegrationRuntimeType) MarshalJSON() ([]byte, error) {
4837	lirt.AuthorizationType = AuthorizationTypeLinkedIntegrationRuntimeType
4838	objectMap := make(map[string]interface{})
4839	if lirt.AuthorizationType != "" {
4840		objectMap["authorizationType"] = lirt.AuthorizationType
4841	}
4842	return json.Marshal(objectMap)
4843}
4844
4845// AsLinkedIntegrationRuntimeKeyAuthorization is the BasicLinkedIntegrationRuntimeType implementation for LinkedIntegrationRuntimeType.
4846func (lirt LinkedIntegrationRuntimeType) AsLinkedIntegrationRuntimeKeyAuthorization() (*LinkedIntegrationRuntimeKeyAuthorization, bool) {
4847	return nil, false
4848}
4849
4850// AsLinkedIntegrationRuntimeRbacAuthorization is the BasicLinkedIntegrationRuntimeType implementation for LinkedIntegrationRuntimeType.
4851func (lirt LinkedIntegrationRuntimeType) AsLinkedIntegrationRuntimeRbacAuthorization() (*LinkedIntegrationRuntimeRbacAuthorization, bool) {
4852	return nil, false
4853}
4854
4855// AsLinkedIntegrationRuntimeType is the BasicLinkedIntegrationRuntimeType implementation for LinkedIntegrationRuntimeType.
4856func (lirt LinkedIntegrationRuntimeType) AsLinkedIntegrationRuntimeType() (*LinkedIntegrationRuntimeType, bool) {
4857	return &lirt, true
4858}
4859
4860// AsBasicLinkedIntegrationRuntimeType is the BasicLinkedIntegrationRuntimeType implementation for LinkedIntegrationRuntimeType.
4861func (lirt LinkedIntegrationRuntimeType) AsBasicLinkedIntegrationRuntimeType() (BasicLinkedIntegrationRuntimeType, bool) {
4862	return &lirt, true
4863}
4864
4865// ListAvailableRpOperation ...
4866type ListAvailableRpOperation struct {
4867	autorest.Response `json:"-"`
4868	Value             *[]AvailableRpOperation `json:"value,omitempty"`
4869}
4870
4871// ListSQLPoolSecurityAlertPolicies a list of SQL pool security alert policies.
4872type ListSQLPoolSecurityAlertPolicies struct {
4873	autorest.Response `json:"-"`
4874	// Value - READ-ONLY; Array of results.
4875	Value *[]SQLPoolSecurityAlertPolicy `json:"value,omitempty"`
4876	// NextLink - READ-ONLY; Link to retrieve next page of results.
4877	NextLink *string `json:"nextLink,omitempty"`
4878}
4879
4880// MarshalJSON is the custom marshaler for ListSQLPoolSecurityAlertPolicies.
4881func (lspsap ListSQLPoolSecurityAlertPolicies) MarshalJSON() ([]byte, error) {
4882	objectMap := make(map[string]interface{})
4883	return json.Marshal(objectMap)
4884}
4885
4886// ListSQLPoolSecurityAlertPoliciesIterator provides access to a complete listing of
4887// SQLPoolSecurityAlertPolicy values.
4888type ListSQLPoolSecurityAlertPoliciesIterator struct {
4889	i    int
4890	page ListSQLPoolSecurityAlertPoliciesPage
4891}
4892
4893// NextWithContext advances to the next value.  If there was an error making
4894// the request the iterator does not advance and the error is returned.
4895func (iter *ListSQLPoolSecurityAlertPoliciesIterator) NextWithContext(ctx context.Context) (err error) {
4896	if tracing.IsEnabled() {
4897		ctx = tracing.StartSpan(ctx, fqdn+"/ListSQLPoolSecurityAlertPoliciesIterator.NextWithContext")
4898		defer func() {
4899			sc := -1
4900			if iter.Response().Response.Response != nil {
4901				sc = iter.Response().Response.Response.StatusCode
4902			}
4903			tracing.EndSpan(ctx, sc, err)
4904		}()
4905	}
4906	iter.i++
4907	if iter.i < len(iter.page.Values()) {
4908		return nil
4909	}
4910	err = iter.page.NextWithContext(ctx)
4911	if err != nil {
4912		iter.i--
4913		return err
4914	}
4915	iter.i = 0
4916	return nil
4917}
4918
4919// Next advances to the next value.  If there was an error making
4920// the request the iterator does not advance and the error is returned.
4921// Deprecated: Use NextWithContext() instead.
4922func (iter *ListSQLPoolSecurityAlertPoliciesIterator) Next() error {
4923	return iter.NextWithContext(context.Background())
4924}
4925
4926// NotDone returns true if the enumeration should be started or is not yet complete.
4927func (iter ListSQLPoolSecurityAlertPoliciesIterator) NotDone() bool {
4928	return iter.page.NotDone() && iter.i < len(iter.page.Values())
4929}
4930
4931// Response returns the raw server response from the last page request.
4932func (iter ListSQLPoolSecurityAlertPoliciesIterator) Response() ListSQLPoolSecurityAlertPolicies {
4933	return iter.page.Response()
4934}
4935
4936// Value returns the current value or a zero-initialized value if the
4937// iterator has advanced beyond the end of the collection.
4938func (iter ListSQLPoolSecurityAlertPoliciesIterator) Value() SQLPoolSecurityAlertPolicy {
4939	if !iter.page.NotDone() {
4940		return SQLPoolSecurityAlertPolicy{}
4941	}
4942	return iter.page.Values()[iter.i]
4943}
4944
4945// Creates a new instance of the ListSQLPoolSecurityAlertPoliciesIterator type.
4946func NewListSQLPoolSecurityAlertPoliciesIterator(page ListSQLPoolSecurityAlertPoliciesPage) ListSQLPoolSecurityAlertPoliciesIterator {
4947	return ListSQLPoolSecurityAlertPoliciesIterator{page: page}
4948}
4949
4950// IsEmpty returns true if the ListResult contains no values.
4951func (lspsap ListSQLPoolSecurityAlertPolicies) IsEmpty() bool {
4952	return lspsap.Value == nil || len(*lspsap.Value) == 0
4953}
4954
4955// hasNextLink returns true if the NextLink is not empty.
4956func (lspsap ListSQLPoolSecurityAlertPolicies) hasNextLink() bool {
4957	return lspsap.NextLink != nil && len(*lspsap.NextLink) != 0
4958}
4959
4960// listSQLPoolSecurityAlertPoliciesPreparer prepares a request to retrieve the next set of results.
4961// It returns nil if no more results exist.
4962func (lspsap ListSQLPoolSecurityAlertPolicies) listSQLPoolSecurityAlertPoliciesPreparer(ctx context.Context) (*http.Request, error) {
4963	if !lspsap.hasNextLink() {
4964		return nil, nil
4965	}
4966	return autorest.Prepare((&http.Request{}).WithContext(ctx),
4967		autorest.AsJSON(),
4968		autorest.AsGet(),
4969		autorest.WithBaseURL(to.String(lspsap.NextLink)))
4970}
4971
4972// ListSQLPoolSecurityAlertPoliciesPage contains a page of SQLPoolSecurityAlertPolicy values.
4973type ListSQLPoolSecurityAlertPoliciesPage struct {
4974	fn     func(context.Context, ListSQLPoolSecurityAlertPolicies) (ListSQLPoolSecurityAlertPolicies, error)
4975	lspsap ListSQLPoolSecurityAlertPolicies
4976}
4977
4978// NextWithContext advances to the next page of values.  If there was an error making
4979// the request the page does not advance and the error is returned.
4980func (page *ListSQLPoolSecurityAlertPoliciesPage) NextWithContext(ctx context.Context) (err error) {
4981	if tracing.IsEnabled() {
4982		ctx = tracing.StartSpan(ctx, fqdn+"/ListSQLPoolSecurityAlertPoliciesPage.NextWithContext")
4983		defer func() {
4984			sc := -1
4985			if page.Response().Response.Response != nil {
4986				sc = page.Response().Response.Response.StatusCode
4987			}
4988			tracing.EndSpan(ctx, sc, err)
4989		}()
4990	}
4991	for {
4992		next, err := page.fn(ctx, page.lspsap)
4993		if err != nil {
4994			return err
4995		}
4996		page.lspsap = next
4997		if !next.hasNextLink() || !next.IsEmpty() {
4998			break
4999		}
5000	}
5001	return nil
5002}
5003
5004// Next advances to the next page of values.  If there was an error making
5005// the request the page does not advance and the error is returned.
5006// Deprecated: Use NextWithContext() instead.
5007func (page *ListSQLPoolSecurityAlertPoliciesPage) Next() error {
5008	return page.NextWithContext(context.Background())
5009}
5010
5011// NotDone returns true if the page enumeration should be started or is not yet complete.
5012func (page ListSQLPoolSecurityAlertPoliciesPage) NotDone() bool {
5013	return !page.lspsap.IsEmpty()
5014}
5015
5016// Response returns the raw server response from the last page request.
5017func (page ListSQLPoolSecurityAlertPoliciesPage) Response() ListSQLPoolSecurityAlertPolicies {
5018	return page.lspsap
5019}
5020
5021// Values returns the slice of values for the current page or nil if there are no values.
5022func (page ListSQLPoolSecurityAlertPoliciesPage) Values() []SQLPoolSecurityAlertPolicy {
5023	if page.lspsap.IsEmpty() {
5024		return nil
5025	}
5026	return *page.lspsap.Value
5027}
5028
5029// Creates a new instance of the ListSQLPoolSecurityAlertPoliciesPage type.
5030func NewListSQLPoolSecurityAlertPoliciesPage(cur ListSQLPoolSecurityAlertPolicies, getNextPage func(context.Context, ListSQLPoolSecurityAlertPolicies) (ListSQLPoolSecurityAlertPolicies, error)) ListSQLPoolSecurityAlertPoliciesPage {
5031	return ListSQLPoolSecurityAlertPoliciesPage{
5032		fn:     getNextPage,
5033		lspsap: cur,
5034	}
5035}
5036
5037// ManagedIdentity the workspace managed identity
5038type ManagedIdentity struct {
5039	// PrincipalID - READ-ONLY; The principal ID of the workspace managed identity
5040	PrincipalID *string `json:"principalId,omitempty"`
5041	// TenantID - READ-ONLY; The tenant ID of the workspace managed identity
5042	TenantID *uuid.UUID `json:"tenantId,omitempty"`
5043	// Type - The type of managed identity for the workspace. Possible values include: 'ResourceIdentityTypeNone', 'ResourceIdentityTypeSystemAssigned'
5044	Type ResourceIdentityType `json:"type,omitempty"`
5045}
5046
5047// MarshalJSON is the custom marshaler for ManagedIdentity.
5048func (mi ManagedIdentity) MarshalJSON() ([]byte, error) {
5049	objectMap := make(map[string]interface{})
5050	if mi.Type != "" {
5051		objectMap["type"] = mi.Type
5052	}
5053	return json.Marshal(objectMap)
5054}
5055
5056// ManagedIdentitySQLControlSettingsModel sql Control Settings for workspace managed identity
5057type ManagedIdentitySQLControlSettingsModel struct {
5058	autorest.Response `json:"-"`
5059	// ManagedIdentitySQLControlSettingsModelProperties - Sql Control Settings for workspace managed identity
5060	*ManagedIdentitySQLControlSettingsModelProperties `json:"properties,omitempty"`
5061	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
5062	ID *string `json:"id,omitempty"`
5063	// Name - READ-ONLY; The name of the resource
5064	Name *string `json:"name,omitempty"`
5065	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
5066	Type *string `json:"type,omitempty"`
5067}
5068
5069// MarshalJSON is the custom marshaler for ManagedIdentitySQLControlSettingsModel.
5070func (miscsm ManagedIdentitySQLControlSettingsModel) MarshalJSON() ([]byte, error) {
5071	objectMap := make(map[string]interface{})
5072	if miscsm.ManagedIdentitySQLControlSettingsModelProperties != nil {
5073		objectMap["properties"] = miscsm.ManagedIdentitySQLControlSettingsModelProperties
5074	}
5075	return json.Marshal(objectMap)
5076}
5077
5078// UnmarshalJSON is the custom unmarshaler for ManagedIdentitySQLControlSettingsModel struct.
5079func (miscsm *ManagedIdentitySQLControlSettingsModel) UnmarshalJSON(body []byte) error {
5080	var m map[string]*json.RawMessage
5081	err := json.Unmarshal(body, &m)
5082	if err != nil {
5083		return err
5084	}
5085	for k, v := range m {
5086		switch k {
5087		case "properties":
5088			if v != nil {
5089				var managedIdentitySQLControlSettingsModelProperties ManagedIdentitySQLControlSettingsModelProperties
5090				err = json.Unmarshal(*v, &managedIdentitySQLControlSettingsModelProperties)
5091				if err != nil {
5092					return err
5093				}
5094				miscsm.ManagedIdentitySQLControlSettingsModelProperties = &managedIdentitySQLControlSettingsModelProperties
5095			}
5096		case "id":
5097			if v != nil {
5098				var ID string
5099				err = json.Unmarshal(*v, &ID)
5100				if err != nil {
5101					return err
5102				}
5103				miscsm.ID = &ID
5104			}
5105		case "name":
5106			if v != nil {
5107				var name string
5108				err = json.Unmarshal(*v, &name)
5109				if err != nil {
5110					return err
5111				}
5112				miscsm.Name = &name
5113			}
5114		case "type":
5115			if v != nil {
5116				var typeVar string
5117				err = json.Unmarshal(*v, &typeVar)
5118				if err != nil {
5119					return err
5120				}
5121				miscsm.Type = &typeVar
5122			}
5123		}
5124	}
5125
5126	return nil
5127}
5128
5129// ManagedIdentitySQLControlSettingsModelProperties sql Control Settings for workspace managed identity
5130type ManagedIdentitySQLControlSettingsModelProperties struct {
5131	// GrantSQLControlToManagedIdentity - Grant sql control to managed identity
5132	GrantSQLControlToManagedIdentity *ManagedIdentitySQLControlSettingsModelPropertiesGrantSQLControlToManagedIdentity `json:"grantSqlControlToManagedIdentity,omitempty"`
5133}
5134
5135// ManagedIdentitySQLControlSettingsModelPropertiesGrantSQLControlToManagedIdentity grant sql control to
5136// managed identity
5137type ManagedIdentitySQLControlSettingsModelPropertiesGrantSQLControlToManagedIdentity struct {
5138	// DesiredState - Desired state. Possible values include: 'DesiredStateEnabled', 'DesiredStateDisabled'
5139	DesiredState DesiredState `json:"desiredState,omitempty"`
5140	// ActualState - READ-ONLY; Actual state. Possible values include: 'Enabling', 'Enabled', 'Disabling', 'Disabled', 'Unknown'
5141	ActualState ActualState `json:"actualState,omitempty"`
5142}
5143
5144// MarshalJSON is the custom marshaler for ManagedIdentitySQLControlSettingsModelPropertiesGrantSQLControlToManagedIdentity.
5145func (miscsmSctmi ManagedIdentitySQLControlSettingsModelPropertiesGrantSQLControlToManagedIdentity) MarshalJSON() ([]byte, error) {
5146	objectMap := make(map[string]interface{})
5147	if miscsmSctmi.DesiredState != "" {
5148		objectMap["desiredState"] = miscsmSctmi.DesiredState
5149	}
5150	return json.Marshal(objectMap)
5151}
5152
5153// ManagedIntegrationRuntime managed integration runtime, including managed elastic and managed dedicated
5154// integration runtimes.
5155type ManagedIntegrationRuntime struct {
5156	// State - READ-ONLY; Integration runtime state, only valid for managed dedicated integration runtime. Possible values include: 'Initial', 'Stopped', 'Started', 'Starting', 'Stopping', 'NeedRegistration', 'Online', 'Limited', 'Offline', 'AccessDenied'
5157	State IntegrationRuntimeState `json:"state,omitempty"`
5158	// ManagedIntegrationRuntimeTypeProperties - Managed integration runtime properties.
5159	*ManagedIntegrationRuntimeTypeProperties `json:"typeProperties,omitempty"`
5160	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
5161	AdditionalProperties map[string]interface{} `json:""`
5162	// Description - Integration runtime description.
5163	Description *string `json:"description,omitempty"`
5164	// Type - Possible values include: 'TypeIntegrationRuntime', 'TypeManaged', 'TypeSelfHosted'
5165	Type Type `json:"type,omitempty"`
5166}
5167
5168// MarshalJSON is the custom marshaler for ManagedIntegrationRuntime.
5169func (mir ManagedIntegrationRuntime) MarshalJSON() ([]byte, error) {
5170	mir.Type = TypeManaged
5171	objectMap := make(map[string]interface{})
5172	if mir.ManagedIntegrationRuntimeTypeProperties != nil {
5173		objectMap["typeProperties"] = mir.ManagedIntegrationRuntimeTypeProperties
5174	}
5175	if mir.Description != nil {
5176		objectMap["description"] = mir.Description
5177	}
5178	if mir.Type != "" {
5179		objectMap["type"] = mir.Type
5180	}
5181	for k, v := range mir.AdditionalProperties {
5182		objectMap[k] = v
5183	}
5184	return json.Marshal(objectMap)
5185}
5186
5187// AsManagedIntegrationRuntime is the BasicIntegrationRuntime implementation for ManagedIntegrationRuntime.
5188func (mir ManagedIntegrationRuntime) AsManagedIntegrationRuntime() (*ManagedIntegrationRuntime, bool) {
5189	return &mir, true
5190}
5191
5192// AsSelfHostedIntegrationRuntime is the BasicIntegrationRuntime implementation for ManagedIntegrationRuntime.
5193func (mir ManagedIntegrationRuntime) AsSelfHostedIntegrationRuntime() (*SelfHostedIntegrationRuntime, bool) {
5194	return nil, false
5195}
5196
5197// AsIntegrationRuntime is the BasicIntegrationRuntime implementation for ManagedIntegrationRuntime.
5198func (mir ManagedIntegrationRuntime) AsIntegrationRuntime() (*IntegrationRuntime, bool) {
5199	return nil, false
5200}
5201
5202// AsBasicIntegrationRuntime is the BasicIntegrationRuntime implementation for ManagedIntegrationRuntime.
5203func (mir ManagedIntegrationRuntime) AsBasicIntegrationRuntime() (BasicIntegrationRuntime, bool) {
5204	return &mir, true
5205}
5206
5207// UnmarshalJSON is the custom unmarshaler for ManagedIntegrationRuntime struct.
5208func (mir *ManagedIntegrationRuntime) UnmarshalJSON(body []byte) error {
5209	var m map[string]*json.RawMessage
5210	err := json.Unmarshal(body, &m)
5211	if err != nil {
5212		return err
5213	}
5214	for k, v := range m {
5215		switch k {
5216		case "state":
5217			if v != nil {
5218				var state IntegrationRuntimeState
5219				err = json.Unmarshal(*v, &state)
5220				if err != nil {
5221					return err
5222				}
5223				mir.State = state
5224			}
5225		case "typeProperties":
5226			if v != nil {
5227				var managedIntegrationRuntimeTypeProperties ManagedIntegrationRuntimeTypeProperties
5228				err = json.Unmarshal(*v, &managedIntegrationRuntimeTypeProperties)
5229				if err != nil {
5230					return err
5231				}
5232				mir.ManagedIntegrationRuntimeTypeProperties = &managedIntegrationRuntimeTypeProperties
5233			}
5234		default:
5235			if v != nil {
5236				var additionalProperties interface{}
5237				err = json.Unmarshal(*v, &additionalProperties)
5238				if err != nil {
5239					return err
5240				}
5241				if mir.AdditionalProperties == nil {
5242					mir.AdditionalProperties = make(map[string]interface{})
5243				}
5244				mir.AdditionalProperties[k] = additionalProperties
5245			}
5246		case "description":
5247			if v != nil {
5248				var description string
5249				err = json.Unmarshal(*v, &description)
5250				if err != nil {
5251					return err
5252				}
5253				mir.Description = &description
5254			}
5255		case "type":
5256			if v != nil {
5257				var typeVar Type
5258				err = json.Unmarshal(*v, &typeVar)
5259				if err != nil {
5260					return err
5261				}
5262				mir.Type = typeVar
5263			}
5264		}
5265	}
5266
5267	return nil
5268}
5269
5270// ManagedIntegrationRuntimeError error definition for managed integration runtime.
5271type ManagedIntegrationRuntimeError struct {
5272	// Time - READ-ONLY; The time when the error occurred.
5273	Time *date.Time `json:"time,omitempty"`
5274	// Code - READ-ONLY; Error code.
5275	Code *string `json:"code,omitempty"`
5276	// Parameters - READ-ONLY; Managed integration runtime error parameters.
5277	Parameters *[]string `json:"parameters,omitempty"`
5278	// Message - READ-ONLY; Error message.
5279	Message *string `json:"message,omitempty"`
5280}
5281
5282// MarshalJSON is the custom marshaler for ManagedIntegrationRuntimeError.
5283func (mire ManagedIntegrationRuntimeError) MarshalJSON() ([]byte, error) {
5284	objectMap := make(map[string]interface{})
5285	return json.Marshal(objectMap)
5286}
5287
5288// ManagedIntegrationRuntimeNode properties of integration runtime node.
5289type ManagedIntegrationRuntimeNode struct {
5290	// NodeID - READ-ONLY; The managed integration runtime node id.
5291	NodeID *string `json:"nodeId,omitempty"`
5292	// Status - READ-ONLY; The managed integration runtime node status. Possible values include: 'ManagedIntegrationRuntimeNodeStatusStarting', 'ManagedIntegrationRuntimeNodeStatusAvailable', 'ManagedIntegrationRuntimeNodeStatusRecycling', 'ManagedIntegrationRuntimeNodeStatusUnavailable'
5293	Status ManagedIntegrationRuntimeNodeStatus `json:"status,omitempty"`
5294	// Errors - The errors that occurred on this integration runtime node.
5295	Errors *[]ManagedIntegrationRuntimeError `json:"errors,omitempty"`
5296}
5297
5298// MarshalJSON is the custom marshaler for ManagedIntegrationRuntimeNode.
5299func (mirn ManagedIntegrationRuntimeNode) MarshalJSON() ([]byte, error) {
5300	objectMap := make(map[string]interface{})
5301	if mirn.Errors != nil {
5302		objectMap["errors"] = mirn.Errors
5303	}
5304	return json.Marshal(objectMap)
5305}
5306
5307// ManagedIntegrationRuntimeOperationResult properties of managed integration runtime operation result.
5308type ManagedIntegrationRuntimeOperationResult struct {
5309	// Type - READ-ONLY; The operation type. Could be start or stop.
5310	Type *string `json:"type,omitempty"`
5311	// StartTime - READ-ONLY; The start time of the operation.
5312	StartTime *date.Time `json:"startTime,omitempty"`
5313	// Result - READ-ONLY; The operation result.
5314	Result *string `json:"result,omitempty"`
5315	// ErrorCode - READ-ONLY; The error code.
5316	ErrorCode *string `json:"errorCode,omitempty"`
5317	// Parameters - READ-ONLY; Managed integration runtime error parameters.
5318	Parameters *[]string `json:"parameters,omitempty"`
5319	// ActivityID - READ-ONLY; The activity id for the operation request.
5320	ActivityID *string `json:"activityId,omitempty"`
5321}
5322
5323// MarshalJSON is the custom marshaler for ManagedIntegrationRuntimeOperationResult.
5324func (miror ManagedIntegrationRuntimeOperationResult) MarshalJSON() ([]byte, error) {
5325	objectMap := make(map[string]interface{})
5326	return json.Marshal(objectMap)
5327}
5328
5329// ManagedIntegrationRuntimeStatus managed integration runtime status.
5330type ManagedIntegrationRuntimeStatus struct {
5331	// ManagedIntegrationRuntimeStatusTypeProperties - Managed integration runtime status type properties.
5332	*ManagedIntegrationRuntimeStatusTypeProperties `json:"typeProperties,omitempty"`
5333	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
5334	AdditionalProperties map[string]interface{} `json:""`
5335	// DataFactoryName - READ-ONLY; The workspace name which the integration runtime belong to.
5336	DataFactoryName *string `json:"dataFactoryName,omitempty"`
5337	// State - READ-ONLY; The state of integration runtime. Possible values include: 'Initial', 'Stopped', 'Started', 'Starting', 'Stopping', 'NeedRegistration', 'Online', 'Limited', 'Offline', 'AccessDenied'
5338	State IntegrationRuntimeState `json:"state,omitempty"`
5339	// Type - Possible values include: 'TypeBasicIntegrationRuntimeStatusTypeIntegrationRuntimeStatus', 'TypeBasicIntegrationRuntimeStatusTypeManaged', 'TypeBasicIntegrationRuntimeStatusTypeSelfHosted'
5340	Type TypeBasicIntegrationRuntimeStatus `json:"type,omitempty"`
5341}
5342
5343// MarshalJSON is the custom marshaler for ManagedIntegrationRuntimeStatus.
5344func (mirs ManagedIntegrationRuntimeStatus) MarshalJSON() ([]byte, error) {
5345	mirs.Type = TypeBasicIntegrationRuntimeStatusTypeManaged
5346	objectMap := make(map[string]interface{})
5347	if mirs.ManagedIntegrationRuntimeStatusTypeProperties != nil {
5348		objectMap["typeProperties"] = mirs.ManagedIntegrationRuntimeStatusTypeProperties
5349	}
5350	if mirs.Type != "" {
5351		objectMap["type"] = mirs.Type
5352	}
5353	for k, v := range mirs.AdditionalProperties {
5354		objectMap[k] = v
5355	}
5356	return json.Marshal(objectMap)
5357}
5358
5359// AsManagedIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for ManagedIntegrationRuntimeStatus.
5360func (mirs ManagedIntegrationRuntimeStatus) AsManagedIntegrationRuntimeStatus() (*ManagedIntegrationRuntimeStatus, bool) {
5361	return &mirs, true
5362}
5363
5364// AsSelfHostedIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for ManagedIntegrationRuntimeStatus.
5365func (mirs ManagedIntegrationRuntimeStatus) AsSelfHostedIntegrationRuntimeStatus() (*SelfHostedIntegrationRuntimeStatus, bool) {
5366	return nil, false
5367}
5368
5369// AsIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for ManagedIntegrationRuntimeStatus.
5370func (mirs ManagedIntegrationRuntimeStatus) AsIntegrationRuntimeStatus() (*IntegrationRuntimeStatus, bool) {
5371	return nil, false
5372}
5373
5374// AsBasicIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for ManagedIntegrationRuntimeStatus.
5375func (mirs ManagedIntegrationRuntimeStatus) AsBasicIntegrationRuntimeStatus() (BasicIntegrationRuntimeStatus, bool) {
5376	return &mirs, true
5377}
5378
5379// UnmarshalJSON is the custom unmarshaler for ManagedIntegrationRuntimeStatus struct.
5380func (mirs *ManagedIntegrationRuntimeStatus) UnmarshalJSON(body []byte) error {
5381	var m map[string]*json.RawMessage
5382	err := json.Unmarshal(body, &m)
5383	if err != nil {
5384		return err
5385	}
5386	for k, v := range m {
5387		switch k {
5388		case "typeProperties":
5389			if v != nil {
5390				var managedIntegrationRuntimeStatusTypeProperties ManagedIntegrationRuntimeStatusTypeProperties
5391				err = json.Unmarshal(*v, &managedIntegrationRuntimeStatusTypeProperties)
5392				if err != nil {
5393					return err
5394				}
5395				mirs.ManagedIntegrationRuntimeStatusTypeProperties = &managedIntegrationRuntimeStatusTypeProperties
5396			}
5397		default:
5398			if v != nil {
5399				var additionalProperties interface{}
5400				err = json.Unmarshal(*v, &additionalProperties)
5401				if err != nil {
5402					return err
5403				}
5404				if mirs.AdditionalProperties == nil {
5405					mirs.AdditionalProperties = make(map[string]interface{})
5406				}
5407				mirs.AdditionalProperties[k] = additionalProperties
5408			}
5409		case "dataFactoryName":
5410			if v != nil {
5411				var dataFactoryName string
5412				err = json.Unmarshal(*v, &dataFactoryName)
5413				if err != nil {
5414					return err
5415				}
5416				mirs.DataFactoryName = &dataFactoryName
5417			}
5418		case "state":
5419			if v != nil {
5420				var state IntegrationRuntimeState
5421				err = json.Unmarshal(*v, &state)
5422				if err != nil {
5423					return err
5424				}
5425				mirs.State = state
5426			}
5427		case "type":
5428			if v != nil {
5429				var typeVar TypeBasicIntegrationRuntimeStatus
5430				err = json.Unmarshal(*v, &typeVar)
5431				if err != nil {
5432					return err
5433				}
5434				mirs.Type = typeVar
5435			}
5436		}
5437	}
5438
5439	return nil
5440}
5441
5442// ManagedIntegrationRuntimeStatusTypeProperties managed integration runtime status type properties.
5443type ManagedIntegrationRuntimeStatusTypeProperties struct {
5444	// CreateTime - READ-ONLY; The time at which the integration runtime was created, in ISO8601 format.
5445	CreateTime *date.Time `json:"createTime,omitempty"`
5446	// Nodes - READ-ONLY; The list of nodes for managed integration runtime.
5447	Nodes *[]ManagedIntegrationRuntimeNode `json:"nodes,omitempty"`
5448	// OtherErrors - READ-ONLY; The errors that occurred on this integration runtime.
5449	OtherErrors *[]ManagedIntegrationRuntimeError `json:"otherErrors,omitempty"`
5450	// LastOperation - READ-ONLY; The last operation result that occurred on this integration runtime.
5451	LastOperation *ManagedIntegrationRuntimeOperationResult `json:"lastOperation,omitempty"`
5452}
5453
5454// MarshalJSON is the custom marshaler for ManagedIntegrationRuntimeStatusTypeProperties.
5455func (mirstp ManagedIntegrationRuntimeStatusTypeProperties) MarshalJSON() ([]byte, error) {
5456	objectMap := make(map[string]interface{})
5457	return json.Marshal(objectMap)
5458}
5459
5460// ManagedIntegrationRuntimeTypeProperties managed integration runtime type properties.
5461type ManagedIntegrationRuntimeTypeProperties struct {
5462	// ComputeProperties - The compute resource for managed integration runtime.
5463	ComputeProperties *IntegrationRuntimeComputeProperties `json:"computeProperties,omitempty"`
5464	// SsisProperties - SSIS properties for managed integration runtime.
5465	SsisProperties *IntegrationRuntimeSsisProperties `json:"ssisProperties,omitempty"`
5466}
5467
5468// ManagedVirtualNetworkSettings managed Virtual Network Settings
5469type ManagedVirtualNetworkSettings struct {
5470	// PreventDataExfiltration - Prevent Data Exfiltration
5471	PreventDataExfiltration *bool `json:"preventDataExfiltration,omitempty"`
5472	// LinkedAccessCheckOnTargetResource - Linked Access Check On Target Resource
5473	LinkedAccessCheckOnTargetResource *bool `json:"linkedAccessCheckOnTargetResource,omitempty"`
5474	// AllowedAadTenantIdsForLinking - Allowed Aad Tenant Ids For Linking
5475	AllowedAadTenantIdsForLinking *[]string `json:"allowedAadTenantIdsForLinking,omitempty"`
5476}
5477
5478// MetadataSyncConfig configuration for metadata sync
5479type MetadataSyncConfig struct {
5480	autorest.Response `json:"-"`
5481	// MetadataSyncConfigProperties - Metadata Sync Config properties
5482	*MetadataSyncConfigProperties `json:"properties,omitempty"`
5483	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
5484	ID *string `json:"id,omitempty"`
5485	// Name - READ-ONLY; The name of the resource
5486	Name *string `json:"name,omitempty"`
5487	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
5488	Type *string `json:"type,omitempty"`
5489}
5490
5491// MarshalJSON is the custom marshaler for MetadataSyncConfig.
5492func (msc MetadataSyncConfig) MarshalJSON() ([]byte, error) {
5493	objectMap := make(map[string]interface{})
5494	if msc.MetadataSyncConfigProperties != nil {
5495		objectMap["properties"] = msc.MetadataSyncConfigProperties
5496	}
5497	return json.Marshal(objectMap)
5498}
5499
5500// UnmarshalJSON is the custom unmarshaler for MetadataSyncConfig struct.
5501func (msc *MetadataSyncConfig) UnmarshalJSON(body []byte) error {
5502	var m map[string]*json.RawMessage
5503	err := json.Unmarshal(body, &m)
5504	if err != nil {
5505		return err
5506	}
5507	for k, v := range m {
5508		switch k {
5509		case "properties":
5510			if v != nil {
5511				var metadataSyncConfigProperties MetadataSyncConfigProperties
5512				err = json.Unmarshal(*v, &metadataSyncConfigProperties)
5513				if err != nil {
5514					return err
5515				}
5516				msc.MetadataSyncConfigProperties = &metadataSyncConfigProperties
5517			}
5518		case "id":
5519			if v != nil {
5520				var ID string
5521				err = json.Unmarshal(*v, &ID)
5522				if err != nil {
5523					return err
5524				}
5525				msc.ID = &ID
5526			}
5527		case "name":
5528			if v != nil {
5529				var name string
5530				err = json.Unmarshal(*v, &name)
5531				if err != nil {
5532					return err
5533				}
5534				msc.Name = &name
5535			}
5536		case "type":
5537			if v != nil {
5538				var typeVar string
5539				err = json.Unmarshal(*v, &typeVar)
5540				if err != nil {
5541					return err
5542				}
5543				msc.Type = &typeVar
5544			}
5545		}
5546	}
5547
5548	return nil
5549}
5550
5551// MetadataSyncConfigProperties metadata Sync Config properties
5552type MetadataSyncConfigProperties struct {
5553	// Enabled - Indicates whether the metadata sync is enabled or disabled
5554	Enabled *bool `json:"enabled,omitempty"`
5555	// SyncIntervalInMinutes - The Sync Interval in minutes.
5556	SyncIntervalInMinutes *int32 `json:"syncIntervalInMinutes,omitempty"`
5557}
5558
5559// OperationMetaLogSpecification what is this?
5560type OperationMetaLogSpecification struct {
5561	// DisplayName - Log display name
5562	DisplayName *string `json:"displayName,omitempty"`
5563	// BlobDuration - Time range the log covers
5564	BlobDuration *string `json:"blobDuration,omitempty"`
5565	// Name - Log unique name
5566	Name *string `json:"name,omitempty"`
5567}
5568
5569// OperationMetaMetricDimensionSpecification what is this?
5570type OperationMetaMetricDimensionSpecification struct {
5571	// DisplayName - Dimension display name
5572	DisplayName *string `json:"displayName,omitempty"`
5573	// Name - Dimension unique name
5574	Name *string `json:"name,omitempty"`
5575	// ToBeExportedForShoebox - Whether this metric should be exported for Shoebox
5576	ToBeExportedForShoebox *bool `json:"toBeExportedForShoebox,omitempty"`
5577}
5578
5579// OperationMetaMetricSpecification what is this?
5580type OperationMetaMetricSpecification struct {
5581	// SourceMdmNamespace - The source MDM namespace
5582	SourceMdmNamespace *string `json:"sourceMdmNamespace,omitempty"`
5583	// DisplayName - Metric display name
5584	DisplayName *string `json:"displayName,omitempty"`
5585	// Name - Metric unique name
5586	Name *string `json:"name,omitempty"`
5587	// AggregationType - Metric aggregation type
5588	AggregationType *string `json:"aggregationType,omitempty"`
5589	// DisplayDescription - Metric description
5590	DisplayDescription *string `json:"displayDescription,omitempty"`
5591	// SourceMdmAccount - The source MDM account
5592	SourceMdmAccount *string `json:"sourceMdmAccount,omitempty"`
5593	// EnableRegionalMdmAccount - Whether the regional MDM account is enabled
5594	EnableRegionalMdmAccount *bool `json:"enableRegionalMdmAccount,omitempty"`
5595	// Unit - Metric units
5596	Unit *string `json:"unit,omitempty"`
5597	// Dimensions - Metric dimensions
5598	Dimensions *[]OperationMetaMetricDimensionSpecification `json:"dimensions,omitempty"`
5599	// SupportsInstanceLevelAggregation - Whether the metric supports instance-level aggregation
5600	SupportsInstanceLevelAggregation *bool `json:"supportsInstanceLevelAggregation,omitempty"`
5601	// MetricFilterPattern - Metric filter
5602	MetricFilterPattern *string `json:"metricFilterPattern,omitempty"`
5603}
5604
5605// OperationMetaPropertyInfo what is this?
5606type OperationMetaPropertyInfo struct {
5607	// ServiceSpecification - Operation service specification
5608	ServiceSpecification *OperationMetaServiceSpecification `json:"serviceSpecification,omitempty"`
5609}
5610
5611// OperationMetaServiceSpecification what is this?
5612type OperationMetaServiceSpecification struct {
5613	// MetricSpecifications - Service metric specifications
5614	MetricSpecifications *[]OperationMetaMetricSpecification `json:"metricSpecifications,omitempty"`
5615	// LogSpecifications - Service log specifications
5616	LogSpecifications *[]OperationMetaLogSpecification `json:"logSpecifications,omitempty"`
5617}
5618
5619// OperationResource an operation
5620type OperationResource struct {
5621	autorest.Response `json:"-"`
5622	// ID - Operation ID
5623	ID *string `json:"id,omitempty"`
5624	// Name - Operation name
5625	Name *string `json:"name,omitempty"`
5626	// Status - Operation status. Possible values include: 'OperationStatusInProgress', 'OperationStatusSucceeded', 'OperationStatusFailed', 'OperationStatusCanceled'
5627	Status OperationStatus `json:"status,omitempty"`
5628	// Properties - Operation properties
5629	Properties interface{} `json:"properties,omitempty"`
5630	// Error - Errors from the operation
5631	Error *ErrorDetail `json:"error,omitempty"`
5632	// StartTime - Operation start time
5633	StartTime *date.Time `json:"startTime,omitempty"`
5634	// EndTime - Operation start time
5635	EndTime *date.Time `json:"endTime,omitempty"`
5636	// PercentComplete - Completion percentage of the operation
5637	PercentComplete *float64 `json:"percentComplete,omitempty"`
5638}
5639
5640// PrivateEndpoint private endpoint details
5641type PrivateEndpoint struct {
5642	// ID - READ-ONLY; Resource id of the private endpoint.
5643	ID *string `json:"id,omitempty"`
5644}
5645
5646// MarshalJSON is the custom marshaler for PrivateEndpoint.
5647func (peVar PrivateEndpoint) MarshalJSON() ([]byte, error) {
5648	objectMap := make(map[string]interface{})
5649	return json.Marshal(objectMap)
5650}
5651
5652// PrivateEndpointConnection a private endpoint connection
5653type PrivateEndpointConnection struct {
5654	autorest.Response `json:"-"`
5655	// PrivateEndpointConnectionProperties - Private endpoint connection properties.
5656	*PrivateEndpointConnectionProperties `json:"properties,omitempty"`
5657	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
5658	ID *string `json:"id,omitempty"`
5659	// Name - READ-ONLY; The name of the resource
5660	Name *string `json:"name,omitempty"`
5661	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
5662	Type *string `json:"type,omitempty"`
5663}
5664
5665// MarshalJSON is the custom marshaler for PrivateEndpointConnection.
5666func (pec PrivateEndpointConnection) MarshalJSON() ([]byte, error) {
5667	objectMap := make(map[string]interface{})
5668	if pec.PrivateEndpointConnectionProperties != nil {
5669		objectMap["properties"] = pec.PrivateEndpointConnectionProperties
5670	}
5671	return json.Marshal(objectMap)
5672}
5673
5674// UnmarshalJSON is the custom unmarshaler for PrivateEndpointConnection struct.
5675func (pec *PrivateEndpointConnection) UnmarshalJSON(body []byte) error {
5676	var m map[string]*json.RawMessage
5677	err := json.Unmarshal(body, &m)
5678	if err != nil {
5679		return err
5680	}
5681	for k, v := range m {
5682		switch k {
5683		case "properties":
5684			if v != nil {
5685				var privateEndpointConnectionProperties PrivateEndpointConnectionProperties
5686				err = json.Unmarshal(*v, &privateEndpointConnectionProperties)
5687				if err != nil {
5688					return err
5689				}
5690				pec.PrivateEndpointConnectionProperties = &privateEndpointConnectionProperties
5691			}
5692		case "id":
5693			if v != nil {
5694				var ID string
5695				err = json.Unmarshal(*v, &ID)
5696				if err != nil {
5697					return err
5698				}
5699				pec.ID = &ID
5700			}
5701		case "name":
5702			if v != nil {
5703				var name string
5704				err = json.Unmarshal(*v, &name)
5705				if err != nil {
5706					return err
5707				}
5708				pec.Name = &name
5709			}
5710		case "type":
5711			if v != nil {
5712				var typeVar string
5713				err = json.Unmarshal(*v, &typeVar)
5714				if err != nil {
5715					return err
5716				}
5717				pec.Type = &typeVar
5718			}
5719		}
5720	}
5721
5722	return nil
5723}
5724
5725// PrivateEndpointConnectionForPrivateLinkHub ...
5726type PrivateEndpointConnectionForPrivateLinkHub struct {
5727	Name *string `json:"name,omitempty"`
5728	Type *string `json:"type,omitempty"`
5729	// ID - READ-ONLY; identifier
5730	ID *string `json:"id,omitempty"`
5731	// PrivateEndpointConnectionProperties - Properties of private endpoint connection for private link hub
5732	*PrivateEndpointConnectionProperties `json:"properties,omitempty"`
5733}
5734
5735// MarshalJSON is the custom marshaler for PrivateEndpointConnectionForPrivateLinkHub.
5736func (pecfplh PrivateEndpointConnectionForPrivateLinkHub) MarshalJSON() ([]byte, error) {
5737	objectMap := make(map[string]interface{})
5738	if pecfplh.Name != nil {
5739		objectMap["name"] = pecfplh.Name
5740	}
5741	if pecfplh.Type != nil {
5742		objectMap["type"] = pecfplh.Type
5743	}
5744	if pecfplh.PrivateEndpointConnectionProperties != nil {
5745		objectMap["properties"] = pecfplh.PrivateEndpointConnectionProperties
5746	}
5747	return json.Marshal(objectMap)
5748}
5749
5750// UnmarshalJSON is the custom unmarshaler for PrivateEndpointConnectionForPrivateLinkHub struct.
5751func (pecfplh *PrivateEndpointConnectionForPrivateLinkHub) UnmarshalJSON(body []byte) error {
5752	var m map[string]*json.RawMessage
5753	err := json.Unmarshal(body, &m)
5754	if err != nil {
5755		return err
5756	}
5757	for k, v := range m {
5758		switch k {
5759		case "name":
5760			if v != nil {
5761				var name string
5762				err = json.Unmarshal(*v, &name)
5763				if err != nil {
5764					return err
5765				}
5766				pecfplh.Name = &name
5767			}
5768		case "type":
5769			if v != nil {
5770				var typeVar string
5771				err = json.Unmarshal(*v, &typeVar)
5772				if err != nil {
5773					return err
5774				}
5775				pecfplh.Type = &typeVar
5776			}
5777		case "id":
5778			if v != nil {
5779				var ID string
5780				err = json.Unmarshal(*v, &ID)
5781				if err != nil {
5782					return err
5783				}
5784				pecfplh.ID = &ID
5785			}
5786		case "properties":
5787			if v != nil {
5788				var privateEndpointConnectionProperties PrivateEndpointConnectionProperties
5789				err = json.Unmarshal(*v, &privateEndpointConnectionProperties)
5790				if err != nil {
5791					return err
5792				}
5793				pecfplh.PrivateEndpointConnectionProperties = &privateEndpointConnectionProperties
5794			}
5795		}
5796	}
5797
5798	return nil
5799}
5800
5801// PrivateEndpointConnectionForPrivateLinkHubBasic private Endpoint Connection For Private Link Hub - Basic
5802type PrivateEndpointConnectionForPrivateLinkHubBasic struct {
5803	// ID - READ-ONLY; identifier
5804	ID *string `json:"id,omitempty"`
5805	// PrivateEndpointConnectionProperties - Properties of private endpoint connection for private link hub
5806	*PrivateEndpointConnectionProperties `json:"properties,omitempty"`
5807}
5808
5809// MarshalJSON is the custom marshaler for PrivateEndpointConnectionForPrivateLinkHubBasic.
5810func (pecfplhb PrivateEndpointConnectionForPrivateLinkHubBasic) MarshalJSON() ([]byte, error) {
5811	objectMap := make(map[string]interface{})
5812	if pecfplhb.PrivateEndpointConnectionProperties != nil {
5813		objectMap["properties"] = pecfplhb.PrivateEndpointConnectionProperties
5814	}
5815	return json.Marshal(objectMap)
5816}
5817
5818// UnmarshalJSON is the custom unmarshaler for PrivateEndpointConnectionForPrivateLinkHubBasic struct.
5819func (pecfplhb *PrivateEndpointConnectionForPrivateLinkHubBasic) UnmarshalJSON(body []byte) error {
5820	var m map[string]*json.RawMessage
5821	err := json.Unmarshal(body, &m)
5822	if err != nil {
5823		return err
5824	}
5825	for k, v := range m {
5826		switch k {
5827		case "id":
5828			if v != nil {
5829				var ID string
5830				err = json.Unmarshal(*v, &ID)
5831				if err != nil {
5832					return err
5833				}
5834				pecfplhb.ID = &ID
5835			}
5836		case "properties":
5837			if v != nil {
5838				var privateEndpointConnectionProperties PrivateEndpointConnectionProperties
5839				err = json.Unmarshal(*v, &privateEndpointConnectionProperties)
5840				if err != nil {
5841					return err
5842				}
5843				pecfplhb.PrivateEndpointConnectionProperties = &privateEndpointConnectionProperties
5844			}
5845		}
5846	}
5847
5848	return nil
5849}
5850
5851// PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponse ...
5852type PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponse struct {
5853	autorest.Response `json:"-"`
5854	Value             *[]PrivateEndpointConnectionForPrivateLinkHub `json:"value,omitempty"`
5855	NextLink          *string                                       `json:"nextLink,omitempty"`
5856}
5857
5858// PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponseIterator provides access to a
5859// complete listing of PrivateEndpointConnectionForPrivateLinkHub values.
5860type PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponseIterator struct {
5861	i    int
5862	page PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage
5863}
5864
5865// NextWithContext advances to the next value.  If there was an error making
5866// the request the iterator does not advance and the error is returned.
5867func (iter *PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponseIterator) NextWithContext(ctx context.Context) (err error) {
5868	if tracing.IsEnabled() {
5869		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponseIterator.NextWithContext")
5870		defer func() {
5871			sc := -1
5872			if iter.Response().Response.Response != nil {
5873				sc = iter.Response().Response.Response.StatusCode
5874			}
5875			tracing.EndSpan(ctx, sc, err)
5876		}()
5877	}
5878	iter.i++
5879	if iter.i < len(iter.page.Values()) {
5880		return nil
5881	}
5882	err = iter.page.NextWithContext(ctx)
5883	if err != nil {
5884		iter.i--
5885		return err
5886	}
5887	iter.i = 0
5888	return nil
5889}
5890
5891// Next advances to the next value.  If there was an error making
5892// the request the iterator does not advance and the error is returned.
5893// Deprecated: Use NextWithContext() instead.
5894func (iter *PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponseIterator) Next() error {
5895	return iter.NextWithContext(context.Background())
5896}
5897
5898// NotDone returns true if the enumeration should be started or is not yet complete.
5899func (iter PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponseIterator) NotDone() bool {
5900	return iter.page.NotDone() && iter.i < len(iter.page.Values())
5901}
5902
5903// Response returns the raw server response from the last page request.
5904func (iter PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponseIterator) Response() PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponse {
5905	return iter.page.Response()
5906}
5907
5908// Value returns the current value or a zero-initialized value if the
5909// iterator has advanced beyond the end of the collection.
5910func (iter PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponseIterator) Value() PrivateEndpointConnectionForPrivateLinkHub {
5911	if !iter.page.NotDone() {
5912		return PrivateEndpointConnectionForPrivateLinkHub{}
5913	}
5914	return iter.page.Values()[iter.i]
5915}
5916
5917// Creates a new instance of the PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponseIterator type.
5918func NewPrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponseIterator(page PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage) PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponseIterator {
5919	return PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponseIterator{page: page}
5920}
5921
5922// IsEmpty returns true if the ListResult contains no values.
5923func (pecfplhRcr PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponse) IsEmpty() bool {
5924	return pecfplhRcr.Value == nil || len(*pecfplhRcr.Value) == 0
5925}
5926
5927// hasNextLink returns true if the NextLink is not empty.
5928func (pecfplhRcr PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponse) hasNextLink() bool {
5929	return pecfplhRcr.NextLink != nil && len(*pecfplhRcr.NextLink) != 0
5930}
5931
5932// privateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePreparer prepares a request to retrieve the next set of results.
5933// It returns nil if no more results exist.
5934func (pecfplhRcr PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponse) privateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePreparer(ctx context.Context) (*http.Request, error) {
5935	if !pecfplhRcr.hasNextLink() {
5936		return nil, nil
5937	}
5938	return autorest.Prepare((&http.Request{}).WithContext(ctx),
5939		autorest.AsJSON(),
5940		autorest.AsGet(),
5941		autorest.WithBaseURL(to.String(pecfplhRcr.NextLink)))
5942}
5943
5944// PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage contains a page of
5945// PrivateEndpointConnectionForPrivateLinkHub values.
5946type PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage struct {
5947	fn         func(context.Context, PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponse) (PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponse, error)
5948	pecfplhrcr PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponse
5949}
5950
5951// NextWithContext advances to the next page of values.  If there was an error making
5952// the request the page does not advance and the error is returned.
5953func (page *PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage) NextWithContext(ctx context.Context) (err error) {
5954	if tracing.IsEnabled() {
5955		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage.NextWithContext")
5956		defer func() {
5957			sc := -1
5958			if page.Response().Response.Response != nil {
5959				sc = page.Response().Response.Response.StatusCode
5960			}
5961			tracing.EndSpan(ctx, sc, err)
5962		}()
5963	}
5964	for {
5965		next, err := page.fn(ctx, page.pecfplhrcr)
5966		if err != nil {
5967			return err
5968		}
5969		page.pecfplhrcr = next
5970		if !next.hasNextLink() || !next.IsEmpty() {
5971			break
5972		}
5973	}
5974	return nil
5975}
5976
5977// Next advances to the next page of values.  If there was an error making
5978// the request the page does not advance and the error is returned.
5979// Deprecated: Use NextWithContext() instead.
5980func (page *PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage) Next() error {
5981	return page.NextWithContext(context.Background())
5982}
5983
5984// NotDone returns true if the page enumeration should be started or is not yet complete.
5985func (page PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage) NotDone() bool {
5986	return !page.pecfplhrcr.IsEmpty()
5987}
5988
5989// Response returns the raw server response from the last page request.
5990func (page PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage) Response() PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponse {
5991	return page.pecfplhrcr
5992}
5993
5994// Values returns the slice of values for the current page or nil if there are no values.
5995func (page PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage) Values() []PrivateEndpointConnectionForPrivateLinkHub {
5996	if page.pecfplhrcr.IsEmpty() {
5997		return nil
5998	}
5999	return *page.pecfplhrcr.Value
6000}
6001
6002// Creates a new instance of the PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage type.
6003func NewPrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage(cur PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponse, getNextPage func(context.Context, PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponse) (PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponse, error)) PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage {
6004	return PrivateEndpointConnectionForPrivateLinkHubResourceCollectionResponsePage{
6005		fn:         getNextPage,
6006		pecfplhrcr: cur,
6007	}
6008}
6009
6010// PrivateEndpointConnectionList a list of private endpoint connections
6011type PrivateEndpointConnectionList struct {
6012	autorest.Response `json:"-"`
6013	// Value - READ-ONLY; Array of results.
6014	Value *[]PrivateEndpointConnection `json:"value,omitempty"`
6015	// NextLink - READ-ONLY; Link to retrieve next page of results.
6016	NextLink *string `json:"nextLink,omitempty"`
6017}
6018
6019// MarshalJSON is the custom marshaler for PrivateEndpointConnectionList.
6020func (pecl PrivateEndpointConnectionList) MarshalJSON() ([]byte, error) {
6021	objectMap := make(map[string]interface{})
6022	return json.Marshal(objectMap)
6023}
6024
6025// PrivateEndpointConnectionListIterator provides access to a complete listing of PrivateEndpointConnection
6026// values.
6027type PrivateEndpointConnectionListIterator struct {
6028	i    int
6029	page PrivateEndpointConnectionListPage
6030}
6031
6032// NextWithContext advances to the next value.  If there was an error making
6033// the request the iterator does not advance and the error is returned.
6034func (iter *PrivateEndpointConnectionListIterator) NextWithContext(ctx context.Context) (err error) {
6035	if tracing.IsEnabled() {
6036		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointConnectionListIterator.NextWithContext")
6037		defer func() {
6038			sc := -1
6039			if iter.Response().Response.Response != nil {
6040				sc = iter.Response().Response.Response.StatusCode
6041			}
6042			tracing.EndSpan(ctx, sc, err)
6043		}()
6044	}
6045	iter.i++
6046	if iter.i < len(iter.page.Values()) {
6047		return nil
6048	}
6049	err = iter.page.NextWithContext(ctx)
6050	if err != nil {
6051		iter.i--
6052		return err
6053	}
6054	iter.i = 0
6055	return nil
6056}
6057
6058// Next advances to the next value.  If there was an error making
6059// the request the iterator does not advance and the error is returned.
6060// Deprecated: Use NextWithContext() instead.
6061func (iter *PrivateEndpointConnectionListIterator) Next() error {
6062	return iter.NextWithContext(context.Background())
6063}
6064
6065// NotDone returns true if the enumeration should be started or is not yet complete.
6066func (iter PrivateEndpointConnectionListIterator) NotDone() bool {
6067	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6068}
6069
6070// Response returns the raw server response from the last page request.
6071func (iter PrivateEndpointConnectionListIterator) Response() PrivateEndpointConnectionList {
6072	return iter.page.Response()
6073}
6074
6075// Value returns the current value or a zero-initialized value if the
6076// iterator has advanced beyond the end of the collection.
6077func (iter PrivateEndpointConnectionListIterator) Value() PrivateEndpointConnection {
6078	if !iter.page.NotDone() {
6079		return PrivateEndpointConnection{}
6080	}
6081	return iter.page.Values()[iter.i]
6082}
6083
6084// Creates a new instance of the PrivateEndpointConnectionListIterator type.
6085func NewPrivateEndpointConnectionListIterator(page PrivateEndpointConnectionListPage) PrivateEndpointConnectionListIterator {
6086	return PrivateEndpointConnectionListIterator{page: page}
6087}
6088
6089// IsEmpty returns true if the ListResult contains no values.
6090func (pecl PrivateEndpointConnectionList) IsEmpty() bool {
6091	return pecl.Value == nil || len(*pecl.Value) == 0
6092}
6093
6094// hasNextLink returns true if the NextLink is not empty.
6095func (pecl PrivateEndpointConnectionList) hasNextLink() bool {
6096	return pecl.NextLink != nil && len(*pecl.NextLink) != 0
6097}
6098
6099// privateEndpointConnectionListPreparer prepares a request to retrieve the next set of results.
6100// It returns nil if no more results exist.
6101func (pecl PrivateEndpointConnectionList) privateEndpointConnectionListPreparer(ctx context.Context) (*http.Request, error) {
6102	if !pecl.hasNextLink() {
6103		return nil, nil
6104	}
6105	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6106		autorest.AsJSON(),
6107		autorest.AsGet(),
6108		autorest.WithBaseURL(to.String(pecl.NextLink)))
6109}
6110
6111// PrivateEndpointConnectionListPage contains a page of PrivateEndpointConnection values.
6112type PrivateEndpointConnectionListPage struct {
6113	fn   func(context.Context, PrivateEndpointConnectionList) (PrivateEndpointConnectionList, error)
6114	pecl PrivateEndpointConnectionList
6115}
6116
6117// NextWithContext advances to the next page of values.  If there was an error making
6118// the request the page does not advance and the error is returned.
6119func (page *PrivateEndpointConnectionListPage) NextWithContext(ctx context.Context) (err error) {
6120	if tracing.IsEnabled() {
6121		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateEndpointConnectionListPage.NextWithContext")
6122		defer func() {
6123			sc := -1
6124			if page.Response().Response.Response != nil {
6125				sc = page.Response().Response.Response.StatusCode
6126			}
6127			tracing.EndSpan(ctx, sc, err)
6128		}()
6129	}
6130	for {
6131		next, err := page.fn(ctx, page.pecl)
6132		if err != nil {
6133			return err
6134		}
6135		page.pecl = next
6136		if !next.hasNextLink() || !next.IsEmpty() {
6137			break
6138		}
6139	}
6140	return nil
6141}
6142
6143// Next advances to the next page of values.  If there was an error making
6144// the request the page does not advance and the error is returned.
6145// Deprecated: Use NextWithContext() instead.
6146func (page *PrivateEndpointConnectionListPage) Next() error {
6147	return page.NextWithContext(context.Background())
6148}
6149
6150// NotDone returns true if the page enumeration should be started or is not yet complete.
6151func (page PrivateEndpointConnectionListPage) NotDone() bool {
6152	return !page.pecl.IsEmpty()
6153}
6154
6155// Response returns the raw server response from the last page request.
6156func (page PrivateEndpointConnectionListPage) Response() PrivateEndpointConnectionList {
6157	return page.pecl
6158}
6159
6160// Values returns the slice of values for the current page or nil if there are no values.
6161func (page PrivateEndpointConnectionListPage) Values() []PrivateEndpointConnection {
6162	if page.pecl.IsEmpty() {
6163		return nil
6164	}
6165	return *page.pecl.Value
6166}
6167
6168// Creates a new instance of the PrivateEndpointConnectionListPage type.
6169func NewPrivateEndpointConnectionListPage(cur PrivateEndpointConnectionList, getNextPage func(context.Context, PrivateEndpointConnectionList) (PrivateEndpointConnectionList, error)) PrivateEndpointConnectionListPage {
6170	return PrivateEndpointConnectionListPage{
6171		fn:   getNextPage,
6172		pecl: cur,
6173	}
6174}
6175
6176// PrivateEndpointConnectionProperties properties of a private endpoint connection.
6177type PrivateEndpointConnectionProperties struct {
6178	// PrivateEndpoint - The private endpoint which the connection belongs to.
6179	PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"`
6180	// PrivateLinkServiceConnectionState - Connection state of the private endpoint connection.
6181	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
6182	// ProvisioningState - READ-ONLY; Provisioning state of the private endpoint connection.
6183	ProvisioningState *string `json:"provisioningState,omitempty"`
6184}
6185
6186// MarshalJSON is the custom marshaler for PrivateEndpointConnectionProperties.
6187func (pecp PrivateEndpointConnectionProperties) MarshalJSON() ([]byte, error) {
6188	objectMap := make(map[string]interface{})
6189	if pecp.PrivateEndpoint != nil {
6190		objectMap["privateEndpoint"] = pecp.PrivateEndpoint
6191	}
6192	if pecp.PrivateLinkServiceConnectionState != nil {
6193		objectMap["privateLinkServiceConnectionState"] = pecp.PrivateLinkServiceConnectionState
6194	}
6195	return json.Marshal(objectMap)
6196}
6197
6198// PrivateEndpointConnectionsCreateFuture an abstraction for monitoring and retrieving the results of a
6199// long-running operation.
6200type PrivateEndpointConnectionsCreateFuture struct {
6201	azure.FutureAPI
6202	// Result returns the result of the asynchronous operation.
6203	// If the operation has not completed it will return an error.
6204	Result func(PrivateEndpointConnectionsClient) (PrivateEndpointConnection, error)
6205}
6206
6207// UnmarshalJSON is the custom unmarshaller for CreateFuture.
6208func (future *PrivateEndpointConnectionsCreateFuture) UnmarshalJSON(body []byte) error {
6209	var azFuture azure.Future
6210	if err := json.Unmarshal(body, &azFuture); err != nil {
6211		return err
6212	}
6213	future.FutureAPI = &azFuture
6214	future.Result = future.result
6215	return nil
6216}
6217
6218// result is the default implementation for PrivateEndpointConnectionsCreateFuture.Result.
6219func (future *PrivateEndpointConnectionsCreateFuture) result(client PrivateEndpointConnectionsClient) (pec PrivateEndpointConnection, err error) {
6220	var done bool
6221	done, err = future.DoneWithContext(context.Background(), client)
6222	if err != nil {
6223		err = autorest.NewErrorWithError(err, "synapse.PrivateEndpointConnectionsCreateFuture", "Result", future.Response(), "Polling failure")
6224		return
6225	}
6226	if !done {
6227		pec.Response.Response = future.Response()
6228		err = azure.NewAsyncOpIncompleteError("synapse.PrivateEndpointConnectionsCreateFuture")
6229		return
6230	}
6231	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
6232	if pec.Response.Response, err = future.GetResult(sender); err == nil && pec.Response.Response.StatusCode != http.StatusNoContent {
6233		pec, err = client.CreateResponder(pec.Response.Response)
6234		if err != nil {
6235			err = autorest.NewErrorWithError(err, "synapse.PrivateEndpointConnectionsCreateFuture", "Result", pec.Response.Response, "Failure responding to request")
6236		}
6237	}
6238	return
6239}
6240
6241// PrivateEndpointConnectionsDeleteFuture an abstraction for monitoring and retrieving the results of a
6242// long-running operation.
6243type PrivateEndpointConnectionsDeleteFuture struct {
6244	azure.FutureAPI
6245	// Result returns the result of the asynchronous operation.
6246	// If the operation has not completed it will return an error.
6247	Result func(PrivateEndpointConnectionsClient) (OperationResource, error)
6248}
6249
6250// UnmarshalJSON is the custom unmarshaller for CreateFuture.
6251func (future *PrivateEndpointConnectionsDeleteFuture) UnmarshalJSON(body []byte) error {
6252	var azFuture azure.Future
6253	if err := json.Unmarshal(body, &azFuture); err != nil {
6254		return err
6255	}
6256	future.FutureAPI = &azFuture
6257	future.Result = future.result
6258	return nil
6259}
6260
6261// result is the default implementation for PrivateEndpointConnectionsDeleteFuture.Result.
6262func (future *PrivateEndpointConnectionsDeleteFuture) result(client PrivateEndpointConnectionsClient) (or OperationResource, err error) {
6263	var done bool
6264	done, err = future.DoneWithContext(context.Background(), client)
6265	if err != nil {
6266		err = autorest.NewErrorWithError(err, "synapse.PrivateEndpointConnectionsDeleteFuture", "Result", future.Response(), "Polling failure")
6267		return
6268	}
6269	if !done {
6270		or.Response.Response = future.Response()
6271		err = azure.NewAsyncOpIncompleteError("synapse.PrivateEndpointConnectionsDeleteFuture")
6272		return
6273	}
6274	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
6275	if or.Response.Response, err = future.GetResult(sender); err == nil && or.Response.Response.StatusCode != http.StatusNoContent {
6276		or, err = client.DeleteResponder(or.Response.Response)
6277		if err != nil {
6278			err = autorest.NewErrorWithError(err, "synapse.PrivateEndpointConnectionsDeleteFuture", "Result", or.Response.Response, "Failure responding to request")
6279		}
6280	}
6281	return
6282}
6283
6284// PrivateLinkHub a privateLinkHub
6285type PrivateLinkHub struct {
6286	autorest.Response `json:"-"`
6287	// PrivateLinkHubProperties - PrivateLinkHub resource properties
6288	*PrivateLinkHubProperties `json:"properties,omitempty"`
6289	// Tags - Resource tags.
6290	Tags map[string]*string `json:"tags"`
6291	// Location - The geo-location where the resource lives
6292	Location *string `json:"location,omitempty"`
6293	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
6294	ID *string `json:"id,omitempty"`
6295	// Name - READ-ONLY; The name of the resource
6296	Name *string `json:"name,omitempty"`
6297	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
6298	Type *string `json:"type,omitempty"`
6299}
6300
6301// MarshalJSON is the custom marshaler for PrivateLinkHub.
6302func (plh PrivateLinkHub) MarshalJSON() ([]byte, error) {
6303	objectMap := make(map[string]interface{})
6304	if plh.PrivateLinkHubProperties != nil {
6305		objectMap["properties"] = plh.PrivateLinkHubProperties
6306	}
6307	if plh.Tags != nil {
6308		objectMap["tags"] = plh.Tags
6309	}
6310	if plh.Location != nil {
6311		objectMap["location"] = plh.Location
6312	}
6313	return json.Marshal(objectMap)
6314}
6315
6316// UnmarshalJSON is the custom unmarshaler for PrivateLinkHub struct.
6317func (plh *PrivateLinkHub) UnmarshalJSON(body []byte) error {
6318	var m map[string]*json.RawMessage
6319	err := json.Unmarshal(body, &m)
6320	if err != nil {
6321		return err
6322	}
6323	for k, v := range m {
6324		switch k {
6325		case "properties":
6326			if v != nil {
6327				var privateLinkHubProperties PrivateLinkHubProperties
6328				err = json.Unmarshal(*v, &privateLinkHubProperties)
6329				if err != nil {
6330					return err
6331				}
6332				plh.PrivateLinkHubProperties = &privateLinkHubProperties
6333			}
6334		case "tags":
6335			if v != nil {
6336				var tags map[string]*string
6337				err = json.Unmarshal(*v, &tags)
6338				if err != nil {
6339					return err
6340				}
6341				plh.Tags = tags
6342			}
6343		case "location":
6344			if v != nil {
6345				var location string
6346				err = json.Unmarshal(*v, &location)
6347				if err != nil {
6348					return err
6349				}
6350				plh.Location = &location
6351			}
6352		case "id":
6353			if v != nil {
6354				var ID string
6355				err = json.Unmarshal(*v, &ID)
6356				if err != nil {
6357					return err
6358				}
6359				plh.ID = &ID
6360			}
6361		case "name":
6362			if v != nil {
6363				var name string
6364				err = json.Unmarshal(*v, &name)
6365				if err != nil {
6366					return err
6367				}
6368				plh.Name = &name
6369			}
6370		case "type":
6371			if v != nil {
6372				var typeVar string
6373				err = json.Unmarshal(*v, &typeVar)
6374				if err != nil {
6375					return err
6376				}
6377				plh.Type = &typeVar
6378			}
6379		}
6380	}
6381
6382	return nil
6383}
6384
6385// PrivateLinkHubInfoListResult list of privateLinkHubs
6386type PrivateLinkHubInfoListResult struct {
6387	autorest.Response `json:"-"`
6388	// NextLink - Link to the next page of results
6389	NextLink *string `json:"nextLink,omitempty"`
6390	// Value - List of privateLinkHubs
6391	Value *[]PrivateLinkHub `json:"value,omitempty"`
6392}
6393
6394// PrivateLinkHubInfoListResultIterator provides access to a complete listing of PrivateLinkHub values.
6395type PrivateLinkHubInfoListResultIterator struct {
6396	i    int
6397	page PrivateLinkHubInfoListResultPage
6398}
6399
6400// NextWithContext advances to the next value.  If there was an error making
6401// the request the iterator does not advance and the error is returned.
6402func (iter *PrivateLinkHubInfoListResultIterator) NextWithContext(ctx context.Context) (err error) {
6403	if tracing.IsEnabled() {
6404		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkHubInfoListResultIterator.NextWithContext")
6405		defer func() {
6406			sc := -1
6407			if iter.Response().Response.Response != nil {
6408				sc = iter.Response().Response.Response.StatusCode
6409			}
6410			tracing.EndSpan(ctx, sc, err)
6411		}()
6412	}
6413	iter.i++
6414	if iter.i < len(iter.page.Values()) {
6415		return nil
6416	}
6417	err = iter.page.NextWithContext(ctx)
6418	if err != nil {
6419		iter.i--
6420		return err
6421	}
6422	iter.i = 0
6423	return nil
6424}
6425
6426// Next advances to the next value.  If there was an error making
6427// the request the iterator does not advance and the error is returned.
6428// Deprecated: Use NextWithContext() instead.
6429func (iter *PrivateLinkHubInfoListResultIterator) Next() error {
6430	return iter.NextWithContext(context.Background())
6431}
6432
6433// NotDone returns true if the enumeration should be started or is not yet complete.
6434func (iter PrivateLinkHubInfoListResultIterator) NotDone() bool {
6435	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6436}
6437
6438// Response returns the raw server response from the last page request.
6439func (iter PrivateLinkHubInfoListResultIterator) Response() PrivateLinkHubInfoListResult {
6440	return iter.page.Response()
6441}
6442
6443// Value returns the current value or a zero-initialized value if the
6444// iterator has advanced beyond the end of the collection.
6445func (iter PrivateLinkHubInfoListResultIterator) Value() PrivateLinkHub {
6446	if !iter.page.NotDone() {
6447		return PrivateLinkHub{}
6448	}
6449	return iter.page.Values()[iter.i]
6450}
6451
6452// Creates a new instance of the PrivateLinkHubInfoListResultIterator type.
6453func NewPrivateLinkHubInfoListResultIterator(page PrivateLinkHubInfoListResultPage) PrivateLinkHubInfoListResultIterator {
6454	return PrivateLinkHubInfoListResultIterator{page: page}
6455}
6456
6457// IsEmpty returns true if the ListResult contains no values.
6458func (plhilr PrivateLinkHubInfoListResult) IsEmpty() bool {
6459	return plhilr.Value == nil || len(*plhilr.Value) == 0
6460}
6461
6462// hasNextLink returns true if the NextLink is not empty.
6463func (plhilr PrivateLinkHubInfoListResult) hasNextLink() bool {
6464	return plhilr.NextLink != nil && len(*plhilr.NextLink) != 0
6465}
6466
6467// privateLinkHubInfoListResultPreparer prepares a request to retrieve the next set of results.
6468// It returns nil if no more results exist.
6469func (plhilr PrivateLinkHubInfoListResult) privateLinkHubInfoListResultPreparer(ctx context.Context) (*http.Request, error) {
6470	if !plhilr.hasNextLink() {
6471		return nil, nil
6472	}
6473	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6474		autorest.AsJSON(),
6475		autorest.AsGet(),
6476		autorest.WithBaseURL(to.String(plhilr.NextLink)))
6477}
6478
6479// PrivateLinkHubInfoListResultPage contains a page of PrivateLinkHub values.
6480type PrivateLinkHubInfoListResultPage struct {
6481	fn     func(context.Context, PrivateLinkHubInfoListResult) (PrivateLinkHubInfoListResult, error)
6482	plhilr PrivateLinkHubInfoListResult
6483}
6484
6485// NextWithContext advances to the next page of values.  If there was an error making
6486// the request the page does not advance and the error is returned.
6487func (page *PrivateLinkHubInfoListResultPage) NextWithContext(ctx context.Context) (err error) {
6488	if tracing.IsEnabled() {
6489		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkHubInfoListResultPage.NextWithContext")
6490		defer func() {
6491			sc := -1
6492			if page.Response().Response.Response != nil {
6493				sc = page.Response().Response.Response.StatusCode
6494			}
6495			tracing.EndSpan(ctx, sc, err)
6496		}()
6497	}
6498	for {
6499		next, err := page.fn(ctx, page.plhilr)
6500		if err != nil {
6501			return err
6502		}
6503		page.plhilr = next
6504		if !next.hasNextLink() || !next.IsEmpty() {
6505			break
6506		}
6507	}
6508	return nil
6509}
6510
6511// Next advances to the next page of values.  If there was an error making
6512// the request the page does not advance and the error is returned.
6513// Deprecated: Use NextWithContext() instead.
6514func (page *PrivateLinkHubInfoListResultPage) Next() error {
6515	return page.NextWithContext(context.Background())
6516}
6517
6518// NotDone returns true if the page enumeration should be started or is not yet complete.
6519func (page PrivateLinkHubInfoListResultPage) NotDone() bool {
6520	return !page.plhilr.IsEmpty()
6521}
6522
6523// Response returns the raw server response from the last page request.
6524func (page PrivateLinkHubInfoListResultPage) Response() PrivateLinkHubInfoListResult {
6525	return page.plhilr
6526}
6527
6528// Values returns the slice of values for the current page or nil if there are no values.
6529func (page PrivateLinkHubInfoListResultPage) Values() []PrivateLinkHub {
6530	if page.plhilr.IsEmpty() {
6531		return nil
6532	}
6533	return *page.plhilr.Value
6534}
6535
6536// Creates a new instance of the PrivateLinkHubInfoListResultPage type.
6537func NewPrivateLinkHubInfoListResultPage(cur PrivateLinkHubInfoListResult, getNextPage func(context.Context, PrivateLinkHubInfoListResult) (PrivateLinkHubInfoListResult, error)) PrivateLinkHubInfoListResultPage {
6538	return PrivateLinkHubInfoListResultPage{
6539		fn:     getNextPage,
6540		plhilr: cur,
6541	}
6542}
6543
6544// PrivateLinkHubPatchInfo privateLinkHub patch details
6545type PrivateLinkHubPatchInfo struct {
6546	// Tags - Resource tags
6547	Tags map[string]*string `json:"tags"`
6548}
6549
6550// MarshalJSON is the custom marshaler for PrivateLinkHubPatchInfo.
6551func (plhpi PrivateLinkHubPatchInfo) MarshalJSON() ([]byte, error) {
6552	objectMap := make(map[string]interface{})
6553	if plhpi.Tags != nil {
6554		objectMap["tags"] = plhpi.Tags
6555	}
6556	return json.Marshal(objectMap)
6557}
6558
6559// PrivateLinkHubProperties privateLinkHub properties
6560type PrivateLinkHubProperties struct {
6561	// ProvisioningState - PrivateLinkHub provisioning state
6562	ProvisioningState *string `json:"provisioningState,omitempty"`
6563	// PrivateEndpointConnections - READ-ONLY; List of private endpoint connections
6564	PrivateEndpointConnections *[]PrivateEndpointConnectionForPrivateLinkHubBasic `json:"privateEndpointConnections,omitempty"`
6565}
6566
6567// MarshalJSON is the custom marshaler for PrivateLinkHubProperties.
6568func (plhp PrivateLinkHubProperties) MarshalJSON() ([]byte, error) {
6569	objectMap := make(map[string]interface{})
6570	if plhp.ProvisioningState != nil {
6571		objectMap["provisioningState"] = plhp.ProvisioningState
6572	}
6573	return json.Marshal(objectMap)
6574}
6575
6576// PrivateLinkHubsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
6577// operation.
6578type PrivateLinkHubsDeleteFuture struct {
6579	azure.FutureAPI
6580	// Result returns the result of the asynchronous operation.
6581	// If the operation has not completed it will return an error.
6582	Result func(PrivateLinkHubsClient) (autorest.Response, error)
6583}
6584
6585// UnmarshalJSON is the custom unmarshaller for CreateFuture.
6586func (future *PrivateLinkHubsDeleteFuture) UnmarshalJSON(body []byte) error {
6587	var azFuture azure.Future
6588	if err := json.Unmarshal(body, &azFuture); err != nil {
6589		return err
6590	}
6591	future.FutureAPI = &azFuture
6592	future.Result = future.result
6593	return nil
6594}
6595
6596// result is the default implementation for PrivateLinkHubsDeleteFuture.Result.
6597func (future *PrivateLinkHubsDeleteFuture) result(client PrivateLinkHubsClient) (ar autorest.Response, err error) {
6598	var done bool
6599	done, err = future.DoneWithContext(context.Background(), client)
6600	if err != nil {
6601		err = autorest.NewErrorWithError(err, "synapse.PrivateLinkHubsDeleteFuture", "Result", future.Response(), "Polling failure")
6602		return
6603	}
6604	if !done {
6605		ar.Response = future.Response()
6606		err = azure.NewAsyncOpIncompleteError("synapse.PrivateLinkHubsDeleteFuture")
6607		return
6608	}
6609	ar.Response = future.Response()
6610	return
6611}
6612
6613// PrivateLinkResource a private link resource
6614type PrivateLinkResource struct {
6615	autorest.Response `json:"-"`
6616	// Properties - READ-ONLY; The private link resource properties.
6617	Properties *PrivateLinkResourceProperties `json:"properties,omitempty"`
6618	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
6619	ID *string `json:"id,omitempty"`
6620	// Name - READ-ONLY; The name of the resource
6621	Name *string `json:"name,omitempty"`
6622	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
6623	Type *string `json:"type,omitempty"`
6624}
6625
6626// MarshalJSON is the custom marshaler for PrivateLinkResource.
6627func (plr PrivateLinkResource) MarshalJSON() ([]byte, error) {
6628	objectMap := make(map[string]interface{})
6629	return json.Marshal(objectMap)
6630}
6631
6632// PrivateLinkResourceListResult a list of private link resources
6633type PrivateLinkResourceListResult struct {
6634	autorest.Response `json:"-"`
6635	// Value - READ-ONLY; Array of results.
6636	Value *[]PrivateLinkResource `json:"value,omitempty"`
6637	// NextLink - READ-ONLY; Link to retrieve next page of results.
6638	NextLink *string `json:"nextLink,omitempty"`
6639}
6640
6641// MarshalJSON is the custom marshaler for PrivateLinkResourceListResult.
6642func (plrlr PrivateLinkResourceListResult) MarshalJSON() ([]byte, error) {
6643	objectMap := make(map[string]interface{})
6644	return json.Marshal(objectMap)
6645}
6646
6647// PrivateLinkResourceListResultIterator provides access to a complete listing of PrivateLinkResource
6648// values.
6649type PrivateLinkResourceListResultIterator struct {
6650	i    int
6651	page PrivateLinkResourceListResultPage
6652}
6653
6654// NextWithContext advances to the next value.  If there was an error making
6655// the request the iterator does not advance and the error is returned.
6656func (iter *PrivateLinkResourceListResultIterator) NextWithContext(ctx context.Context) (err error) {
6657	if tracing.IsEnabled() {
6658		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkResourceListResultIterator.NextWithContext")
6659		defer func() {
6660			sc := -1
6661			if iter.Response().Response.Response != nil {
6662				sc = iter.Response().Response.Response.StatusCode
6663			}
6664			tracing.EndSpan(ctx, sc, err)
6665		}()
6666	}
6667	iter.i++
6668	if iter.i < len(iter.page.Values()) {
6669		return nil
6670	}
6671	err = iter.page.NextWithContext(ctx)
6672	if err != nil {
6673		iter.i--
6674		return err
6675	}
6676	iter.i = 0
6677	return nil
6678}
6679
6680// Next advances to the next value.  If there was an error making
6681// the request the iterator does not advance and the error is returned.
6682// Deprecated: Use NextWithContext() instead.
6683func (iter *PrivateLinkResourceListResultIterator) Next() error {
6684	return iter.NextWithContext(context.Background())
6685}
6686
6687// NotDone returns true if the enumeration should be started or is not yet complete.
6688func (iter PrivateLinkResourceListResultIterator) NotDone() bool {
6689	return iter.page.NotDone() && iter.i < len(iter.page.Values())
6690}
6691
6692// Response returns the raw server response from the last page request.
6693func (iter PrivateLinkResourceListResultIterator) Response() PrivateLinkResourceListResult {
6694	return iter.page.Response()
6695}
6696
6697// Value returns the current value or a zero-initialized value if the
6698// iterator has advanced beyond the end of the collection.
6699func (iter PrivateLinkResourceListResultIterator) Value() PrivateLinkResource {
6700	if !iter.page.NotDone() {
6701		return PrivateLinkResource{}
6702	}
6703	return iter.page.Values()[iter.i]
6704}
6705
6706// Creates a new instance of the PrivateLinkResourceListResultIterator type.
6707func NewPrivateLinkResourceListResultIterator(page PrivateLinkResourceListResultPage) PrivateLinkResourceListResultIterator {
6708	return PrivateLinkResourceListResultIterator{page: page}
6709}
6710
6711// IsEmpty returns true if the ListResult contains no values.
6712func (plrlr PrivateLinkResourceListResult) IsEmpty() bool {
6713	return plrlr.Value == nil || len(*plrlr.Value) == 0
6714}
6715
6716// hasNextLink returns true if the NextLink is not empty.
6717func (plrlr PrivateLinkResourceListResult) hasNextLink() bool {
6718	return plrlr.NextLink != nil && len(*plrlr.NextLink) != 0
6719}
6720
6721// privateLinkResourceListResultPreparer prepares a request to retrieve the next set of results.
6722// It returns nil if no more results exist.
6723func (plrlr PrivateLinkResourceListResult) privateLinkResourceListResultPreparer(ctx context.Context) (*http.Request, error) {
6724	if !plrlr.hasNextLink() {
6725		return nil, nil
6726	}
6727	return autorest.Prepare((&http.Request{}).WithContext(ctx),
6728		autorest.AsJSON(),
6729		autorest.AsGet(),
6730		autorest.WithBaseURL(to.String(plrlr.NextLink)))
6731}
6732
6733// PrivateLinkResourceListResultPage contains a page of PrivateLinkResource values.
6734type PrivateLinkResourceListResultPage struct {
6735	fn    func(context.Context, PrivateLinkResourceListResult) (PrivateLinkResourceListResult, error)
6736	plrlr PrivateLinkResourceListResult
6737}
6738
6739// NextWithContext advances to the next page of values.  If there was an error making
6740// the request the page does not advance and the error is returned.
6741func (page *PrivateLinkResourceListResultPage) NextWithContext(ctx context.Context) (err error) {
6742	if tracing.IsEnabled() {
6743		ctx = tracing.StartSpan(ctx, fqdn+"/PrivateLinkResourceListResultPage.NextWithContext")
6744		defer func() {
6745			sc := -1
6746			if page.Response().Response.Response != nil {
6747				sc = page.Response().Response.Response.StatusCode
6748			}
6749			tracing.EndSpan(ctx, sc, err)
6750		}()
6751	}
6752	for {
6753		next, err := page.fn(ctx, page.plrlr)
6754		if err != nil {
6755			return err
6756		}
6757		page.plrlr = next
6758		if !next.hasNextLink() || !next.IsEmpty() {
6759			break
6760		}
6761	}
6762	return nil
6763}
6764
6765// Next advances to the next page of values.  If there was an error making
6766// the request the page does not advance and the error is returned.
6767// Deprecated: Use NextWithContext() instead.
6768func (page *PrivateLinkResourceListResultPage) Next() error {
6769	return page.NextWithContext(context.Background())
6770}
6771
6772// NotDone returns true if the page enumeration should be started or is not yet complete.
6773func (page PrivateLinkResourceListResultPage) NotDone() bool {
6774	return !page.plrlr.IsEmpty()
6775}
6776
6777// Response returns the raw server response from the last page request.
6778func (page PrivateLinkResourceListResultPage) Response() PrivateLinkResourceListResult {
6779	return page.plrlr
6780}
6781
6782// Values returns the slice of values for the current page or nil if there are no values.
6783func (page PrivateLinkResourceListResultPage) Values() []PrivateLinkResource {
6784	if page.plrlr.IsEmpty() {
6785		return nil
6786	}
6787	return *page.plrlr.Value
6788}
6789
6790// Creates a new instance of the PrivateLinkResourceListResultPage type.
6791func NewPrivateLinkResourceListResultPage(cur PrivateLinkResourceListResult, getNextPage func(context.Context, PrivateLinkResourceListResult) (PrivateLinkResourceListResult, error)) PrivateLinkResourceListResultPage {
6792	return PrivateLinkResourceListResultPage{
6793		fn:    getNextPage,
6794		plrlr: cur,
6795	}
6796}
6797
6798// PrivateLinkResourceProperties properties of a private link resource.
6799type PrivateLinkResourceProperties struct {
6800	// GroupID - READ-ONLY; The private link resource group id.
6801	GroupID *string `json:"groupId,omitempty"`
6802	// RequiredMembers - READ-ONLY; The private link resource required member names.
6803	RequiredMembers *[]string `json:"requiredMembers,omitempty"`
6804	// RequiredZoneNames - READ-ONLY; Required DNS zone names of the the private link resource.
6805	RequiredZoneNames *[]string `json:"requiredZoneNames,omitempty"`
6806}
6807
6808// MarshalJSON is the custom marshaler for PrivateLinkResourceProperties.
6809func (plrp PrivateLinkResourceProperties) MarshalJSON() ([]byte, error) {
6810	objectMap := make(map[string]interface{})
6811	return json.Marshal(objectMap)
6812}
6813
6814// PrivateLinkServiceConnectionState connection state details of the private endpoint
6815type PrivateLinkServiceConnectionState struct {
6816	// Status - The private link service connection status.
6817	Status *string `json:"status,omitempty"`
6818	// Description - The private link service connection description.
6819	Description *string `json:"description,omitempty"`
6820	// ActionsRequired - READ-ONLY; The actions required for private link service connection.
6821	ActionsRequired *string `json:"actionsRequired,omitempty"`
6822}
6823
6824// MarshalJSON is the custom marshaler for PrivateLinkServiceConnectionState.
6825func (plscs PrivateLinkServiceConnectionState) MarshalJSON() ([]byte, error) {
6826	objectMap := make(map[string]interface{})
6827	if plscs.Status != nil {
6828		objectMap["status"] = plscs.Status
6829	}
6830	if plscs.Description != nil {
6831		objectMap["description"] = plscs.Description
6832	}
6833	return json.Marshal(objectMap)
6834}
6835
6836// ProxyResource the resource model definition for a Azure Resource Manager proxy resource. It will not
6837// have tags and a location
6838type ProxyResource struct {
6839	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
6840	ID *string `json:"id,omitempty"`
6841	// Name - READ-ONLY; The name of the resource
6842	Name *string `json:"name,omitempty"`
6843	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
6844	Type *string `json:"type,omitempty"`
6845}
6846
6847// MarshalJSON is the custom marshaler for ProxyResource.
6848func (pr ProxyResource) MarshalJSON() ([]byte, error) {
6849	objectMap := make(map[string]interface{})
6850	return json.Marshal(objectMap)
6851}
6852
6853// PurviewConfiguration purview Configuration
6854type PurviewConfiguration struct {
6855	// PurviewResourceID - Purview Resource ID
6856	PurviewResourceID *string `json:"purviewResourceId,omitempty"`
6857}
6858
6859// QueryInterval a database query.
6860type QueryInterval struct {
6861	// IntervalStartTime - READ-ONLY; The start time of the measurement interval (ISO8601 format).
6862	IntervalStartTime *date.Time `json:"intervalStartTime,omitempty"`
6863	// ExecutionCount - READ-ONLY; The number of times the query was executed during this interval.
6864	ExecutionCount *float64 `json:"executionCount,omitempty"`
6865	// Metrics - READ-ONLY; The list of query metrics during this interval.
6866	Metrics *[]QueryMetric `json:"metrics,omitempty"`
6867}
6868
6869// MarshalJSON is the custom marshaler for QueryInterval.
6870func (qi QueryInterval) MarshalJSON() ([]byte, error) {
6871	objectMap := make(map[string]interface{})
6872	return json.Marshal(objectMap)
6873}
6874
6875// QueryMetric a database query.
6876type QueryMetric struct {
6877	// Name - READ-ONLY; The name of the metric
6878	Name *string `json:"name,omitempty"`
6879	// DisplayName - READ-ONLY; The name of the metric for display in user interface
6880	DisplayName *string `json:"displayName,omitempty"`
6881	// Unit - READ-ONLY; The unit of measurement. Possible values include: 'Percentage', 'KB', 'Microseconds'
6882	Unit QueryMetricUnit `json:"unit,omitempty"`
6883	// Value - READ-ONLY; The measured value
6884	Value *float64 `json:"value,omitempty"`
6885}
6886
6887// MarshalJSON is the custom marshaler for QueryMetric.
6888func (qm QueryMetric) MarshalJSON() ([]byte, error) {
6889	objectMap := make(map[string]interface{})
6890	return json.Marshal(objectMap)
6891}
6892
6893// QueryStatistic a database query.
6894type QueryStatistic struct {
6895	// QueryID - READ-ONLY; The id of the query
6896	QueryID *string `json:"queryId,omitempty"`
6897	// Intervals - READ-ONLY; The list of query intervals.
6898	Intervals *[]QueryInterval `json:"intervals,omitempty"`
6899}
6900
6901// MarshalJSON is the custom marshaler for QueryStatistic.
6902func (qs QueryStatistic) MarshalJSON() ([]byte, error) {
6903	objectMap := make(map[string]interface{})
6904	return json.Marshal(objectMap)
6905}
6906
6907// RecoverableSQLPool a recoverable sql pool
6908type RecoverableSQLPool struct {
6909	autorest.Response `json:"-"`
6910	// RecoverableSQLPoolProperties - The properties of a recoverable sql pool
6911	*RecoverableSQLPoolProperties `json:"properties,omitempty"`
6912	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
6913	ID *string `json:"id,omitempty"`
6914	// Name - READ-ONLY; The name of the resource
6915	Name *string `json:"name,omitempty"`
6916	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
6917	Type *string `json:"type,omitempty"`
6918}
6919
6920// MarshalJSON is the custom marshaler for RecoverableSQLPool.
6921func (rsp RecoverableSQLPool) MarshalJSON() ([]byte, error) {
6922	objectMap := make(map[string]interface{})
6923	if rsp.RecoverableSQLPoolProperties != nil {
6924		objectMap["properties"] = rsp.RecoverableSQLPoolProperties
6925	}
6926	return json.Marshal(objectMap)
6927}
6928
6929// UnmarshalJSON is the custom unmarshaler for RecoverableSQLPool struct.
6930func (rsp *RecoverableSQLPool) UnmarshalJSON(body []byte) error {
6931	var m map[string]*json.RawMessage
6932	err := json.Unmarshal(body, &m)
6933	if err != nil {
6934		return err
6935	}
6936	for k, v := range m {
6937		switch k {
6938		case "properties":
6939			if v != nil {
6940				var recoverableSQLPoolProperties RecoverableSQLPoolProperties
6941				err = json.Unmarshal(*v, &recoverableSQLPoolProperties)
6942				if err != nil {
6943					return err
6944				}
6945				rsp.RecoverableSQLPoolProperties = &recoverableSQLPoolProperties
6946			}
6947		case "id":
6948			if v != nil {
6949				var ID string
6950				err = json.Unmarshal(*v, &ID)
6951				if err != nil {
6952					return err
6953				}
6954				rsp.ID = &ID
6955			}
6956		case "name":
6957			if v != nil {
6958				var name string
6959				err = json.Unmarshal(*v, &name)
6960				if err != nil {
6961					return err
6962				}
6963				rsp.Name = &name
6964			}
6965		case "type":
6966			if v != nil {
6967				var typeVar string
6968				err = json.Unmarshal(*v, &typeVar)
6969				if err != nil {
6970					return err
6971				}
6972				rsp.Type = &typeVar
6973			}
6974		}
6975	}
6976
6977	return nil
6978}
6979
6980// RecoverableSQLPoolListResult the response to a list recoverable sql pools request
6981type RecoverableSQLPoolListResult struct {
6982	autorest.Response `json:"-"`
6983	// Value - READ-ONLY; A list of recoverable sql pool
6984	Value *[]RecoverableSQLPool `json:"value,omitempty"`
6985	// NextLink - READ-ONLY; Link to retrieve next page of results.
6986	NextLink *string `json:"nextLink,omitempty"`
6987}
6988
6989// MarshalJSON is the custom marshaler for RecoverableSQLPoolListResult.
6990func (rsplr RecoverableSQLPoolListResult) MarshalJSON() ([]byte, error) {
6991	objectMap := make(map[string]interface{})
6992	return json.Marshal(objectMap)
6993}
6994
6995// RecoverableSQLPoolListResultIterator provides access to a complete listing of RecoverableSQLPool values.
6996type RecoverableSQLPoolListResultIterator struct {
6997	i    int
6998	page RecoverableSQLPoolListResultPage
6999}
7000
7001// NextWithContext advances to the next value.  If there was an error making
7002// the request the iterator does not advance and the error is returned.
7003func (iter *RecoverableSQLPoolListResultIterator) NextWithContext(ctx context.Context) (err error) {
7004	if tracing.IsEnabled() {
7005		ctx = tracing.StartSpan(ctx, fqdn+"/RecoverableSQLPoolListResultIterator.NextWithContext")
7006		defer func() {
7007			sc := -1
7008			if iter.Response().Response.Response != nil {
7009				sc = iter.Response().Response.Response.StatusCode
7010			}
7011			tracing.EndSpan(ctx, sc, err)
7012		}()
7013	}
7014	iter.i++
7015	if iter.i < len(iter.page.Values()) {
7016		return nil
7017	}
7018	err = iter.page.NextWithContext(ctx)
7019	if err != nil {
7020		iter.i--
7021		return err
7022	}
7023	iter.i = 0
7024	return nil
7025}
7026
7027// Next advances to the next value.  If there was an error making
7028// the request the iterator does not advance and the error is returned.
7029// Deprecated: Use NextWithContext() instead.
7030func (iter *RecoverableSQLPoolListResultIterator) Next() error {
7031	return iter.NextWithContext(context.Background())
7032}
7033
7034// NotDone returns true if the enumeration should be started or is not yet complete.
7035func (iter RecoverableSQLPoolListResultIterator) NotDone() bool {
7036	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7037}
7038
7039// Response returns the raw server response from the last page request.
7040func (iter RecoverableSQLPoolListResultIterator) Response() RecoverableSQLPoolListResult {
7041	return iter.page.Response()
7042}
7043
7044// Value returns the current value or a zero-initialized value if the
7045// iterator has advanced beyond the end of the collection.
7046func (iter RecoverableSQLPoolListResultIterator) Value() RecoverableSQLPool {
7047	if !iter.page.NotDone() {
7048		return RecoverableSQLPool{}
7049	}
7050	return iter.page.Values()[iter.i]
7051}
7052
7053// Creates a new instance of the RecoverableSQLPoolListResultIterator type.
7054func NewRecoverableSQLPoolListResultIterator(page RecoverableSQLPoolListResultPage) RecoverableSQLPoolListResultIterator {
7055	return RecoverableSQLPoolListResultIterator{page: page}
7056}
7057
7058// IsEmpty returns true if the ListResult contains no values.
7059func (rsplr RecoverableSQLPoolListResult) IsEmpty() bool {
7060	return rsplr.Value == nil || len(*rsplr.Value) == 0
7061}
7062
7063// hasNextLink returns true if the NextLink is not empty.
7064func (rsplr RecoverableSQLPoolListResult) hasNextLink() bool {
7065	return rsplr.NextLink != nil && len(*rsplr.NextLink) != 0
7066}
7067
7068// recoverableSQLPoolListResultPreparer prepares a request to retrieve the next set of results.
7069// It returns nil if no more results exist.
7070func (rsplr RecoverableSQLPoolListResult) recoverableSQLPoolListResultPreparer(ctx context.Context) (*http.Request, error) {
7071	if !rsplr.hasNextLink() {
7072		return nil, nil
7073	}
7074	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7075		autorest.AsJSON(),
7076		autorest.AsGet(),
7077		autorest.WithBaseURL(to.String(rsplr.NextLink)))
7078}
7079
7080// RecoverableSQLPoolListResultPage contains a page of RecoverableSQLPool values.
7081type RecoverableSQLPoolListResultPage struct {
7082	fn    func(context.Context, RecoverableSQLPoolListResult) (RecoverableSQLPoolListResult, error)
7083	rsplr RecoverableSQLPoolListResult
7084}
7085
7086// NextWithContext advances to the next page of values.  If there was an error making
7087// the request the page does not advance and the error is returned.
7088func (page *RecoverableSQLPoolListResultPage) NextWithContext(ctx context.Context) (err error) {
7089	if tracing.IsEnabled() {
7090		ctx = tracing.StartSpan(ctx, fqdn+"/RecoverableSQLPoolListResultPage.NextWithContext")
7091		defer func() {
7092			sc := -1
7093			if page.Response().Response.Response != nil {
7094				sc = page.Response().Response.Response.StatusCode
7095			}
7096			tracing.EndSpan(ctx, sc, err)
7097		}()
7098	}
7099	for {
7100		next, err := page.fn(ctx, page.rsplr)
7101		if err != nil {
7102			return err
7103		}
7104		page.rsplr = next
7105		if !next.hasNextLink() || !next.IsEmpty() {
7106			break
7107		}
7108	}
7109	return nil
7110}
7111
7112// Next advances to the next page of values.  If there was an error making
7113// the request the page does not advance and the error is returned.
7114// Deprecated: Use NextWithContext() instead.
7115func (page *RecoverableSQLPoolListResultPage) Next() error {
7116	return page.NextWithContext(context.Background())
7117}
7118
7119// NotDone returns true if the page enumeration should be started or is not yet complete.
7120func (page RecoverableSQLPoolListResultPage) NotDone() bool {
7121	return !page.rsplr.IsEmpty()
7122}
7123
7124// Response returns the raw server response from the last page request.
7125func (page RecoverableSQLPoolListResultPage) Response() RecoverableSQLPoolListResult {
7126	return page.rsplr
7127}
7128
7129// Values returns the slice of values for the current page or nil if there are no values.
7130func (page RecoverableSQLPoolListResultPage) Values() []RecoverableSQLPool {
7131	if page.rsplr.IsEmpty() {
7132		return nil
7133	}
7134	return *page.rsplr.Value
7135}
7136
7137// Creates a new instance of the RecoverableSQLPoolListResultPage type.
7138func NewRecoverableSQLPoolListResultPage(cur RecoverableSQLPoolListResult, getNextPage func(context.Context, RecoverableSQLPoolListResult) (RecoverableSQLPoolListResult, error)) RecoverableSQLPoolListResultPage {
7139	return RecoverableSQLPoolListResultPage{
7140		fn:    getNextPage,
7141		rsplr: cur,
7142	}
7143}
7144
7145// RecoverableSQLPoolProperties the properties of a recoverable sql pool
7146type RecoverableSQLPoolProperties struct {
7147	// Edition - READ-ONLY; The edition of the database
7148	Edition *string `json:"edition,omitempty"`
7149	// ServiceLevelObjective - READ-ONLY; The service level objective name of the database
7150	ServiceLevelObjective *string `json:"serviceLevelObjective,omitempty"`
7151	// ElasticPoolName - READ-ONLY; The elastic pool name of the database
7152	ElasticPoolName *string `json:"elasticPoolName,omitempty"`
7153	// LastAvailableBackupDate - READ-ONLY; The last available backup date of the database (ISO8601 format)
7154	LastAvailableBackupDate *date.Time `json:"lastAvailableBackupDate,omitempty"`
7155}
7156
7157// MarshalJSON is the custom marshaler for RecoverableSQLPoolProperties.
7158func (rspp RecoverableSQLPoolProperties) MarshalJSON() ([]byte, error) {
7159	objectMap := make(map[string]interface{})
7160	return json.Marshal(objectMap)
7161}
7162
7163// ReplaceAllFirewallRulesOperationResponse an existing operation for replacing the firewall rules
7164type ReplaceAllFirewallRulesOperationResponse struct {
7165	autorest.Response `json:"-"`
7166	// OperationID - The operation ID
7167	OperationID *string `json:"operationId,omitempty"`
7168}
7169
7170// ReplaceAllIPFirewallRulesRequest replace all IP firewall rules request
7171type ReplaceAllIPFirewallRulesRequest struct {
7172	// IPFirewallRules - IP firewall rule properties
7173	IPFirewallRules map[string]*IPFirewallRuleProperties `json:"ipFirewallRules"`
7174}
7175
7176// MarshalJSON is the custom marshaler for ReplaceAllIPFirewallRulesRequest.
7177func (raifrr ReplaceAllIPFirewallRulesRequest) MarshalJSON() ([]byte, error) {
7178	objectMap := make(map[string]interface{})
7179	if raifrr.IPFirewallRules != nil {
7180		objectMap["ipFirewallRules"] = raifrr.IPFirewallRules
7181	}
7182	return json.Marshal(objectMap)
7183}
7184
7185// ReplicationLink represents a Sql pool replication link.
7186type ReplicationLink struct {
7187	autorest.Response `json:"-"`
7188	// Location - READ-ONLY; Location of the workspace that contains this firewall rule.
7189	Location *string `json:"location,omitempty"`
7190	// ReplicationLinkProperties - The properties representing the resource.
7191	*ReplicationLinkProperties `json:"properties,omitempty"`
7192	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
7193	ID *string `json:"id,omitempty"`
7194	// Name - READ-ONLY; The name of the resource
7195	Name *string `json:"name,omitempty"`
7196	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
7197	Type *string `json:"type,omitempty"`
7198}
7199
7200// MarshalJSON is the custom marshaler for ReplicationLink.
7201func (rl ReplicationLink) MarshalJSON() ([]byte, error) {
7202	objectMap := make(map[string]interface{})
7203	if rl.ReplicationLinkProperties != nil {
7204		objectMap["properties"] = rl.ReplicationLinkProperties
7205	}
7206	return json.Marshal(objectMap)
7207}
7208
7209// UnmarshalJSON is the custom unmarshaler for ReplicationLink struct.
7210func (rl *ReplicationLink) UnmarshalJSON(body []byte) error {
7211	var m map[string]*json.RawMessage
7212	err := json.Unmarshal(body, &m)
7213	if err != nil {
7214		return err
7215	}
7216	for k, v := range m {
7217		switch k {
7218		case "location":
7219			if v != nil {
7220				var location string
7221				err = json.Unmarshal(*v, &location)
7222				if err != nil {
7223					return err
7224				}
7225				rl.Location = &location
7226			}
7227		case "properties":
7228			if v != nil {
7229				var replicationLinkProperties ReplicationLinkProperties
7230				err = json.Unmarshal(*v, &replicationLinkProperties)
7231				if err != nil {
7232					return err
7233				}
7234				rl.ReplicationLinkProperties = &replicationLinkProperties
7235			}
7236		case "id":
7237			if v != nil {
7238				var ID string
7239				err = json.Unmarshal(*v, &ID)
7240				if err != nil {
7241					return err
7242				}
7243				rl.ID = &ID
7244			}
7245		case "name":
7246			if v != nil {
7247				var name string
7248				err = json.Unmarshal(*v, &name)
7249				if err != nil {
7250					return err
7251				}
7252				rl.Name = &name
7253			}
7254		case "type":
7255			if v != nil {
7256				var typeVar string
7257				err = json.Unmarshal(*v, &typeVar)
7258				if err != nil {
7259					return err
7260				}
7261				rl.Type = &typeVar
7262			}
7263		}
7264	}
7265
7266	return nil
7267}
7268
7269// ReplicationLinkListResult represents the response to a List Sql pool replication link request.
7270type ReplicationLinkListResult struct {
7271	autorest.Response `json:"-"`
7272	// Value - The list of Sql pool replication links housed in the Sql pool.
7273	Value *[]ReplicationLink `json:"value,omitempty"`
7274	// NextLink - READ-ONLY; Link to retrieve next page of results.
7275	NextLink *string `json:"nextLink,omitempty"`
7276}
7277
7278// MarshalJSON is the custom marshaler for ReplicationLinkListResult.
7279func (rllr ReplicationLinkListResult) MarshalJSON() ([]byte, error) {
7280	objectMap := make(map[string]interface{})
7281	if rllr.Value != nil {
7282		objectMap["value"] = rllr.Value
7283	}
7284	return json.Marshal(objectMap)
7285}
7286
7287// ReplicationLinkListResultIterator provides access to a complete listing of ReplicationLink values.
7288type ReplicationLinkListResultIterator struct {
7289	i    int
7290	page ReplicationLinkListResultPage
7291}
7292
7293// NextWithContext advances to the next value.  If there was an error making
7294// the request the iterator does not advance and the error is returned.
7295func (iter *ReplicationLinkListResultIterator) NextWithContext(ctx context.Context) (err error) {
7296	if tracing.IsEnabled() {
7297		ctx = tracing.StartSpan(ctx, fqdn+"/ReplicationLinkListResultIterator.NextWithContext")
7298		defer func() {
7299			sc := -1
7300			if iter.Response().Response.Response != nil {
7301				sc = iter.Response().Response.Response.StatusCode
7302			}
7303			tracing.EndSpan(ctx, sc, err)
7304		}()
7305	}
7306	iter.i++
7307	if iter.i < len(iter.page.Values()) {
7308		return nil
7309	}
7310	err = iter.page.NextWithContext(ctx)
7311	if err != nil {
7312		iter.i--
7313		return err
7314	}
7315	iter.i = 0
7316	return nil
7317}
7318
7319// Next advances to the next value.  If there was an error making
7320// the request the iterator does not advance and the error is returned.
7321// Deprecated: Use NextWithContext() instead.
7322func (iter *ReplicationLinkListResultIterator) Next() error {
7323	return iter.NextWithContext(context.Background())
7324}
7325
7326// NotDone returns true if the enumeration should be started or is not yet complete.
7327func (iter ReplicationLinkListResultIterator) NotDone() bool {
7328	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7329}
7330
7331// Response returns the raw server response from the last page request.
7332func (iter ReplicationLinkListResultIterator) Response() ReplicationLinkListResult {
7333	return iter.page.Response()
7334}
7335
7336// Value returns the current value or a zero-initialized value if the
7337// iterator has advanced beyond the end of the collection.
7338func (iter ReplicationLinkListResultIterator) Value() ReplicationLink {
7339	if !iter.page.NotDone() {
7340		return ReplicationLink{}
7341	}
7342	return iter.page.Values()[iter.i]
7343}
7344
7345// Creates a new instance of the ReplicationLinkListResultIterator type.
7346func NewReplicationLinkListResultIterator(page ReplicationLinkListResultPage) ReplicationLinkListResultIterator {
7347	return ReplicationLinkListResultIterator{page: page}
7348}
7349
7350// IsEmpty returns true if the ListResult contains no values.
7351func (rllr ReplicationLinkListResult) IsEmpty() bool {
7352	return rllr.Value == nil || len(*rllr.Value) == 0
7353}
7354
7355// hasNextLink returns true if the NextLink is not empty.
7356func (rllr ReplicationLinkListResult) hasNextLink() bool {
7357	return rllr.NextLink != nil && len(*rllr.NextLink) != 0
7358}
7359
7360// replicationLinkListResultPreparer prepares a request to retrieve the next set of results.
7361// It returns nil if no more results exist.
7362func (rllr ReplicationLinkListResult) replicationLinkListResultPreparer(ctx context.Context) (*http.Request, error) {
7363	if !rllr.hasNextLink() {
7364		return nil, nil
7365	}
7366	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7367		autorest.AsJSON(),
7368		autorest.AsGet(),
7369		autorest.WithBaseURL(to.String(rllr.NextLink)))
7370}
7371
7372// ReplicationLinkListResultPage contains a page of ReplicationLink values.
7373type ReplicationLinkListResultPage struct {
7374	fn   func(context.Context, ReplicationLinkListResult) (ReplicationLinkListResult, error)
7375	rllr ReplicationLinkListResult
7376}
7377
7378// NextWithContext advances to the next page of values.  If there was an error making
7379// the request the page does not advance and the error is returned.
7380func (page *ReplicationLinkListResultPage) NextWithContext(ctx context.Context) (err error) {
7381	if tracing.IsEnabled() {
7382		ctx = tracing.StartSpan(ctx, fqdn+"/ReplicationLinkListResultPage.NextWithContext")
7383		defer func() {
7384			sc := -1
7385			if page.Response().Response.Response != nil {
7386				sc = page.Response().Response.Response.StatusCode
7387			}
7388			tracing.EndSpan(ctx, sc, err)
7389		}()
7390	}
7391	for {
7392		next, err := page.fn(ctx, page.rllr)
7393		if err != nil {
7394			return err
7395		}
7396		page.rllr = next
7397		if !next.hasNextLink() || !next.IsEmpty() {
7398			break
7399		}
7400	}
7401	return nil
7402}
7403
7404// Next advances to the next page of values.  If there was an error making
7405// the request the page does not advance and the error is returned.
7406// Deprecated: Use NextWithContext() instead.
7407func (page *ReplicationLinkListResultPage) Next() error {
7408	return page.NextWithContext(context.Background())
7409}
7410
7411// NotDone returns true if the page enumeration should be started or is not yet complete.
7412func (page ReplicationLinkListResultPage) NotDone() bool {
7413	return !page.rllr.IsEmpty()
7414}
7415
7416// Response returns the raw server response from the last page request.
7417func (page ReplicationLinkListResultPage) Response() ReplicationLinkListResult {
7418	return page.rllr
7419}
7420
7421// Values returns the slice of values for the current page or nil if there are no values.
7422func (page ReplicationLinkListResultPage) Values() []ReplicationLink {
7423	if page.rllr.IsEmpty() {
7424		return nil
7425	}
7426	return *page.rllr.Value
7427}
7428
7429// Creates a new instance of the ReplicationLinkListResultPage type.
7430func NewReplicationLinkListResultPage(cur ReplicationLinkListResult, getNextPage func(context.Context, ReplicationLinkListResult) (ReplicationLinkListResult, error)) ReplicationLinkListResultPage {
7431	return ReplicationLinkListResultPage{
7432		fn:   getNextPage,
7433		rllr: cur,
7434	}
7435}
7436
7437// ReplicationLinkProperties represents the properties of a Sql pool replication link.
7438type ReplicationLinkProperties struct {
7439	// IsTerminationAllowed - READ-ONLY; Legacy value indicating whether termination is allowed.  Currently always returns true.
7440	IsTerminationAllowed *bool `json:"isTerminationAllowed,omitempty"`
7441	// ReplicationMode - READ-ONLY; Replication mode of this replication link.
7442	ReplicationMode *string `json:"replicationMode,omitempty"`
7443	// PartnerServer - READ-ONLY; The name of the workspace hosting the partner Sql pool.
7444	PartnerServer *string `json:"partnerServer,omitempty"`
7445	// PartnerDatabase - READ-ONLY; The name of the partner Sql pool.
7446	PartnerDatabase *string `json:"partnerDatabase,omitempty"`
7447	// PartnerLocation - READ-ONLY; The Azure Region of the partner Sql pool.
7448	PartnerLocation *string `json:"partnerLocation,omitempty"`
7449	// Role - READ-ONLY; The role of the Sql pool in the replication link. Possible values include: 'Primary', 'Secondary', 'NonReadableSecondary', 'Source', 'Copy'
7450	Role ReplicationRole `json:"role,omitempty"`
7451	// PartnerRole - READ-ONLY; The role of the partner Sql pool in the replication link. Possible values include: 'Primary', 'Secondary', 'NonReadableSecondary', 'Source', 'Copy'
7452	PartnerRole ReplicationRole `json:"partnerRole,omitempty"`
7453	// StartTime - READ-ONLY; The start time for the replication link.
7454	StartTime *date.Time `json:"startTime,omitempty"`
7455	// PercentComplete - READ-ONLY; The percentage of seeding complete for the replication link.
7456	PercentComplete *int32 `json:"percentComplete,omitempty"`
7457	// ReplicationState - READ-ONLY; The replication state for the replication link. Possible values include: 'PENDING', 'SEEDING', 'CATCHUP', 'SUSPENDED'
7458	ReplicationState ReplicationState `json:"replicationState,omitempty"`
7459}
7460
7461// MarshalJSON is the custom marshaler for ReplicationLinkProperties.
7462func (rlp ReplicationLinkProperties) MarshalJSON() ([]byte, error) {
7463	objectMap := make(map[string]interface{})
7464	return json.Marshal(objectMap)
7465}
7466
7467// Resource common fields that are returned in the response for all Azure Resource Manager resources
7468type Resource struct {
7469	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
7470	ID *string `json:"id,omitempty"`
7471	// Name - READ-ONLY; The name of the resource
7472	Name *string `json:"name,omitempty"`
7473	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
7474	Type *string `json:"type,omitempty"`
7475}
7476
7477// MarshalJSON is the custom marshaler for Resource.
7478func (r Resource) MarshalJSON() ([]byte, error) {
7479	objectMap := make(map[string]interface{})
7480	return json.Marshal(objectMap)
7481}
7482
7483// RestorableDroppedSQLPool a restorable dropped Sql pool
7484type RestorableDroppedSQLPool struct {
7485	autorest.Response `json:"-"`
7486	// Location - READ-ONLY; The geo-location where the resource lives
7487	Location *string `json:"location,omitempty"`
7488	// RestorableDroppedSQLPoolProperties - The properties of a restorable dropped Sql pool
7489	*RestorableDroppedSQLPoolProperties `json:"properties,omitempty"`
7490	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
7491	ID *string `json:"id,omitempty"`
7492	// Name - READ-ONLY; The name of the resource
7493	Name *string `json:"name,omitempty"`
7494	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
7495	Type *string `json:"type,omitempty"`
7496}
7497
7498// MarshalJSON is the custom marshaler for RestorableDroppedSQLPool.
7499func (rdsp RestorableDroppedSQLPool) MarshalJSON() ([]byte, error) {
7500	objectMap := make(map[string]interface{})
7501	if rdsp.RestorableDroppedSQLPoolProperties != nil {
7502		objectMap["properties"] = rdsp.RestorableDroppedSQLPoolProperties
7503	}
7504	return json.Marshal(objectMap)
7505}
7506
7507// UnmarshalJSON is the custom unmarshaler for RestorableDroppedSQLPool struct.
7508func (rdsp *RestorableDroppedSQLPool) UnmarshalJSON(body []byte) error {
7509	var m map[string]*json.RawMessage
7510	err := json.Unmarshal(body, &m)
7511	if err != nil {
7512		return err
7513	}
7514	for k, v := range m {
7515		switch k {
7516		case "location":
7517			if v != nil {
7518				var location string
7519				err = json.Unmarshal(*v, &location)
7520				if err != nil {
7521					return err
7522				}
7523				rdsp.Location = &location
7524			}
7525		case "properties":
7526			if v != nil {
7527				var restorableDroppedSQLPoolProperties RestorableDroppedSQLPoolProperties
7528				err = json.Unmarshal(*v, &restorableDroppedSQLPoolProperties)
7529				if err != nil {
7530					return err
7531				}
7532				rdsp.RestorableDroppedSQLPoolProperties = &restorableDroppedSQLPoolProperties
7533			}
7534		case "id":
7535			if v != nil {
7536				var ID string
7537				err = json.Unmarshal(*v, &ID)
7538				if err != nil {
7539					return err
7540				}
7541				rdsp.ID = &ID
7542			}
7543		case "name":
7544			if v != nil {
7545				var name string
7546				err = json.Unmarshal(*v, &name)
7547				if err != nil {
7548					return err
7549				}
7550				rdsp.Name = &name
7551			}
7552		case "type":
7553			if v != nil {
7554				var typeVar string
7555				err = json.Unmarshal(*v, &typeVar)
7556				if err != nil {
7557					return err
7558				}
7559				rdsp.Type = &typeVar
7560			}
7561		}
7562	}
7563
7564	return nil
7565}
7566
7567// RestorableDroppedSQLPoolListResult the response to a list restorable dropped Sql pools request
7568type RestorableDroppedSQLPoolListResult struct {
7569	autorest.Response `json:"-"`
7570	// Value - A list of restorable dropped Sql pools
7571	Value *[]RestorableDroppedSQLPool `json:"value,omitempty"`
7572}
7573
7574// RestorableDroppedSQLPoolProperties the properties of a restorable dropped Sql pool
7575type RestorableDroppedSQLPoolProperties struct {
7576	// DatabaseName - READ-ONLY; The name of the database
7577	DatabaseName *string `json:"databaseName,omitempty"`
7578	// Edition - READ-ONLY; The edition of the database
7579	Edition *string `json:"edition,omitempty"`
7580	// MaxSizeBytes - READ-ONLY; The max size in bytes of the database
7581	MaxSizeBytes *string `json:"maxSizeBytes,omitempty"`
7582	// ServiceLevelObjective - READ-ONLY; The service level objective name of the database
7583	ServiceLevelObjective *string `json:"serviceLevelObjective,omitempty"`
7584	// ElasticPoolName - READ-ONLY; The elastic pool name of the database
7585	ElasticPoolName *string `json:"elasticPoolName,omitempty"`
7586	// CreationDate - READ-ONLY; The creation date of the database (ISO8601 format)
7587	CreationDate *date.Time `json:"creationDate,omitempty"`
7588	// DeletionDate - READ-ONLY; The deletion date of the database (ISO8601 format)
7589	DeletionDate *date.Time `json:"deletionDate,omitempty"`
7590	// EarliestRestoreDate - READ-ONLY; The earliest restore date of the database (ISO8601 format)
7591	EarliestRestoreDate *date.Time `json:"earliestRestoreDate,omitempty"`
7592}
7593
7594// MarshalJSON is the custom marshaler for RestorableDroppedSQLPoolProperties.
7595func (rdspp RestorableDroppedSQLPoolProperties) MarshalJSON() ([]byte, error) {
7596	objectMap := make(map[string]interface{})
7597	return json.Marshal(objectMap)
7598}
7599
7600// RestorePoint database restore points.
7601type RestorePoint struct {
7602	autorest.Response `json:"-"`
7603	// Location - READ-ONLY; Resource location.
7604	Location *string `json:"location,omitempty"`
7605	// RestorePointProperties - Resource properties.
7606	*RestorePointProperties `json:"properties,omitempty"`
7607	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
7608	ID *string `json:"id,omitempty"`
7609	// Name - READ-ONLY; The name of the resource
7610	Name *string `json:"name,omitempty"`
7611	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
7612	Type *string `json:"type,omitempty"`
7613}
7614
7615// MarshalJSON is the custom marshaler for RestorePoint.
7616func (rp RestorePoint) MarshalJSON() ([]byte, error) {
7617	objectMap := make(map[string]interface{})
7618	if rp.RestorePointProperties != nil {
7619		objectMap["properties"] = rp.RestorePointProperties
7620	}
7621	return json.Marshal(objectMap)
7622}
7623
7624// UnmarshalJSON is the custom unmarshaler for RestorePoint struct.
7625func (rp *RestorePoint) UnmarshalJSON(body []byte) error {
7626	var m map[string]*json.RawMessage
7627	err := json.Unmarshal(body, &m)
7628	if err != nil {
7629		return err
7630	}
7631	for k, v := range m {
7632		switch k {
7633		case "location":
7634			if v != nil {
7635				var location string
7636				err = json.Unmarshal(*v, &location)
7637				if err != nil {
7638					return err
7639				}
7640				rp.Location = &location
7641			}
7642		case "properties":
7643			if v != nil {
7644				var restorePointProperties RestorePointProperties
7645				err = json.Unmarshal(*v, &restorePointProperties)
7646				if err != nil {
7647					return err
7648				}
7649				rp.RestorePointProperties = &restorePointProperties
7650			}
7651		case "id":
7652			if v != nil {
7653				var ID string
7654				err = json.Unmarshal(*v, &ID)
7655				if err != nil {
7656					return err
7657				}
7658				rp.ID = &ID
7659			}
7660		case "name":
7661			if v != nil {
7662				var name string
7663				err = json.Unmarshal(*v, &name)
7664				if err != nil {
7665					return err
7666				}
7667				rp.Name = &name
7668			}
7669		case "type":
7670			if v != nil {
7671				var typeVar string
7672				err = json.Unmarshal(*v, &typeVar)
7673				if err != nil {
7674					return err
7675				}
7676				rp.Type = &typeVar
7677			}
7678		}
7679	}
7680
7681	return nil
7682}
7683
7684// RestorePointListResult a list of long term retention backups.
7685type RestorePointListResult struct {
7686	autorest.Response `json:"-"`
7687	// Value - READ-ONLY; Array of results.
7688	Value *[]RestorePoint `json:"value,omitempty"`
7689	// NextLink - READ-ONLY; Link to retrieve next page of results.
7690	NextLink *string `json:"nextLink,omitempty"`
7691}
7692
7693// MarshalJSON is the custom marshaler for RestorePointListResult.
7694func (rplr RestorePointListResult) MarshalJSON() ([]byte, error) {
7695	objectMap := make(map[string]interface{})
7696	return json.Marshal(objectMap)
7697}
7698
7699// RestorePointListResultIterator provides access to a complete listing of RestorePoint values.
7700type RestorePointListResultIterator struct {
7701	i    int
7702	page RestorePointListResultPage
7703}
7704
7705// NextWithContext advances to the next value.  If there was an error making
7706// the request the iterator does not advance and the error is returned.
7707func (iter *RestorePointListResultIterator) NextWithContext(ctx context.Context) (err error) {
7708	if tracing.IsEnabled() {
7709		ctx = tracing.StartSpan(ctx, fqdn+"/RestorePointListResultIterator.NextWithContext")
7710		defer func() {
7711			sc := -1
7712			if iter.Response().Response.Response != nil {
7713				sc = iter.Response().Response.Response.StatusCode
7714			}
7715			tracing.EndSpan(ctx, sc, err)
7716		}()
7717	}
7718	iter.i++
7719	if iter.i < len(iter.page.Values()) {
7720		return nil
7721	}
7722	err = iter.page.NextWithContext(ctx)
7723	if err != nil {
7724		iter.i--
7725		return err
7726	}
7727	iter.i = 0
7728	return nil
7729}
7730
7731// Next advances to the next value.  If there was an error making
7732// the request the iterator does not advance and the error is returned.
7733// Deprecated: Use NextWithContext() instead.
7734func (iter *RestorePointListResultIterator) Next() error {
7735	return iter.NextWithContext(context.Background())
7736}
7737
7738// NotDone returns true if the enumeration should be started or is not yet complete.
7739func (iter RestorePointListResultIterator) NotDone() bool {
7740	return iter.page.NotDone() && iter.i < len(iter.page.Values())
7741}
7742
7743// Response returns the raw server response from the last page request.
7744func (iter RestorePointListResultIterator) Response() RestorePointListResult {
7745	return iter.page.Response()
7746}
7747
7748// Value returns the current value or a zero-initialized value if the
7749// iterator has advanced beyond the end of the collection.
7750func (iter RestorePointListResultIterator) Value() RestorePoint {
7751	if !iter.page.NotDone() {
7752		return RestorePoint{}
7753	}
7754	return iter.page.Values()[iter.i]
7755}
7756
7757// Creates a new instance of the RestorePointListResultIterator type.
7758func NewRestorePointListResultIterator(page RestorePointListResultPage) RestorePointListResultIterator {
7759	return RestorePointListResultIterator{page: page}
7760}
7761
7762// IsEmpty returns true if the ListResult contains no values.
7763func (rplr RestorePointListResult) IsEmpty() bool {
7764	return rplr.Value == nil || len(*rplr.Value) == 0
7765}
7766
7767// hasNextLink returns true if the NextLink is not empty.
7768func (rplr RestorePointListResult) hasNextLink() bool {
7769	return rplr.NextLink != nil && len(*rplr.NextLink) != 0
7770}
7771
7772// restorePointListResultPreparer prepares a request to retrieve the next set of results.
7773// It returns nil if no more results exist.
7774func (rplr RestorePointListResult) restorePointListResultPreparer(ctx context.Context) (*http.Request, error) {
7775	if !rplr.hasNextLink() {
7776		return nil, nil
7777	}
7778	return autorest.Prepare((&http.Request{}).WithContext(ctx),
7779		autorest.AsJSON(),
7780		autorest.AsGet(),
7781		autorest.WithBaseURL(to.String(rplr.NextLink)))
7782}
7783
7784// RestorePointListResultPage contains a page of RestorePoint values.
7785type RestorePointListResultPage struct {
7786	fn   func(context.Context, RestorePointListResult) (RestorePointListResult, error)
7787	rplr RestorePointListResult
7788}
7789
7790// NextWithContext advances to the next page of values.  If there was an error making
7791// the request the page does not advance and the error is returned.
7792func (page *RestorePointListResultPage) NextWithContext(ctx context.Context) (err error) {
7793	if tracing.IsEnabled() {
7794		ctx = tracing.StartSpan(ctx, fqdn+"/RestorePointListResultPage.NextWithContext")
7795		defer func() {
7796			sc := -1
7797			if page.Response().Response.Response != nil {
7798				sc = page.Response().Response.Response.StatusCode
7799			}
7800			tracing.EndSpan(ctx, sc, err)
7801		}()
7802	}
7803	for {
7804		next, err := page.fn(ctx, page.rplr)
7805		if err != nil {
7806			return err
7807		}
7808		page.rplr = next
7809		if !next.hasNextLink() || !next.IsEmpty() {
7810			break
7811		}
7812	}
7813	return nil
7814}
7815
7816// Next advances to the next page of values.  If there was an error making
7817// the request the page does not advance and the error is returned.
7818// Deprecated: Use NextWithContext() instead.
7819func (page *RestorePointListResultPage) Next() error {
7820	return page.NextWithContext(context.Background())
7821}
7822
7823// NotDone returns true if the page enumeration should be started or is not yet complete.
7824func (page RestorePointListResultPage) NotDone() bool {
7825	return !page.rplr.IsEmpty()
7826}
7827
7828// Response returns the raw server response from the last page request.
7829func (page RestorePointListResultPage) Response() RestorePointListResult {
7830	return page.rplr
7831}
7832
7833// Values returns the slice of values for the current page or nil if there are no values.
7834func (page RestorePointListResultPage) Values() []RestorePoint {
7835	if page.rplr.IsEmpty() {
7836		return nil
7837	}
7838	return *page.rplr.Value
7839}
7840
7841// Creates a new instance of the RestorePointListResultPage type.
7842func NewRestorePointListResultPage(cur RestorePointListResult, getNextPage func(context.Context, RestorePointListResult) (RestorePointListResult, error)) RestorePointListResultPage {
7843	return RestorePointListResultPage{
7844		fn:   getNextPage,
7845		rplr: cur,
7846	}
7847}
7848
7849// RestorePointProperties properties of a database restore point
7850type RestorePointProperties struct {
7851	// RestorePointType - READ-ONLY; The type of restore point. Possible values include: 'CONTINUOUS', 'DISCRETE'
7852	RestorePointType RestorePointType `json:"restorePointType,omitempty"`
7853	// EarliestRestoreDate - READ-ONLY; The earliest time to which this database can be restored
7854	EarliestRestoreDate *date.Time `json:"earliestRestoreDate,omitempty"`
7855	// RestorePointCreationDate - READ-ONLY; The time the backup was taken
7856	RestorePointCreationDate *date.Time `json:"restorePointCreationDate,omitempty"`
7857	// RestorePointLabel - READ-ONLY; The label of restore point for backup request by user
7858	RestorePointLabel *string `json:"restorePointLabel,omitempty"`
7859}
7860
7861// MarshalJSON is the custom marshaler for RestorePointProperties.
7862func (rpp RestorePointProperties) MarshalJSON() ([]byte, error) {
7863	objectMap := make(map[string]interface{})
7864	return json.Marshal(objectMap)
7865}
7866
7867// BasicSecretBase the base definition of a secret type.
7868type BasicSecretBase interface {
7869	AsSecureString() (*SecureString, bool)
7870	AsSecretBase() (*SecretBase, bool)
7871}
7872
7873// SecretBase the base definition of a secret type.
7874type SecretBase struct {
7875	// Type - Possible values include: 'TypeSecretBase', 'TypeSecureString'
7876	Type TypeBasicSecretBase `json:"type,omitempty"`
7877}
7878
7879func unmarshalBasicSecretBase(body []byte) (BasicSecretBase, error) {
7880	var m map[string]interface{}
7881	err := json.Unmarshal(body, &m)
7882	if err != nil {
7883		return nil, err
7884	}
7885
7886	switch m["type"] {
7887	case string(TypeSecureString):
7888		var ss SecureString
7889		err := json.Unmarshal(body, &ss)
7890		return ss, err
7891	default:
7892		var sb SecretBase
7893		err := json.Unmarshal(body, &sb)
7894		return sb, err
7895	}
7896}
7897func unmarshalBasicSecretBaseArray(body []byte) ([]BasicSecretBase, error) {
7898	var rawMessages []*json.RawMessage
7899	err := json.Unmarshal(body, &rawMessages)
7900	if err != nil {
7901		return nil, err
7902	}
7903
7904	sbArray := make([]BasicSecretBase, len(rawMessages))
7905
7906	for index, rawMessage := range rawMessages {
7907		sb, err := unmarshalBasicSecretBase(*rawMessage)
7908		if err != nil {
7909			return nil, err
7910		}
7911		sbArray[index] = sb
7912	}
7913	return sbArray, nil
7914}
7915
7916// MarshalJSON is the custom marshaler for SecretBase.
7917func (sb SecretBase) MarshalJSON() ([]byte, error) {
7918	sb.Type = TypeSecretBase
7919	objectMap := make(map[string]interface{})
7920	if sb.Type != "" {
7921		objectMap["type"] = sb.Type
7922	}
7923	return json.Marshal(objectMap)
7924}
7925
7926// AsSecureString is the BasicSecretBase implementation for SecretBase.
7927func (sb SecretBase) AsSecureString() (*SecureString, bool) {
7928	return nil, false
7929}
7930
7931// AsSecretBase is the BasicSecretBase implementation for SecretBase.
7932func (sb SecretBase) AsSecretBase() (*SecretBase, bool) {
7933	return &sb, true
7934}
7935
7936// AsBasicSecretBase is the BasicSecretBase implementation for SecretBase.
7937func (sb SecretBase) AsBasicSecretBase() (BasicSecretBase, bool) {
7938	return &sb, true
7939}
7940
7941// SecureString azure Synapse secure string definition. The string value will be masked with asterisks '*'
7942// during Get or List API calls.
7943type SecureString struct {
7944	// Value - Value of secure string.
7945	Value *string `json:"value,omitempty"`
7946	// Type - Possible values include: 'TypeSecretBase', 'TypeSecureString'
7947	Type TypeBasicSecretBase `json:"type,omitempty"`
7948}
7949
7950// MarshalJSON is the custom marshaler for SecureString.
7951func (ss SecureString) MarshalJSON() ([]byte, error) {
7952	ss.Type = TypeSecureString
7953	objectMap := make(map[string]interface{})
7954	if ss.Value != nil {
7955		objectMap["value"] = ss.Value
7956	}
7957	if ss.Type != "" {
7958		objectMap["type"] = ss.Type
7959	}
7960	return json.Marshal(objectMap)
7961}
7962
7963// AsSecureString is the BasicSecretBase implementation for SecureString.
7964func (ss SecureString) AsSecureString() (*SecureString, bool) {
7965	return &ss, true
7966}
7967
7968// AsSecretBase is the BasicSecretBase implementation for SecureString.
7969func (ss SecureString) AsSecretBase() (*SecretBase, bool) {
7970	return nil, false
7971}
7972
7973// AsBasicSecretBase is the BasicSecretBase implementation for SecureString.
7974func (ss SecureString) AsBasicSecretBase() (BasicSecretBase, bool) {
7975	return &ss, true
7976}
7977
7978// SecurityAlertPolicyProperties properties of a security alert policy.
7979type SecurityAlertPolicyProperties struct {
7980	// State - Specifies the state of the policy, whether it is enabled or disabled or a policy has not been applied yet on the specific Sql pool. Possible values include: 'SecurityAlertPolicyStateNew', 'SecurityAlertPolicyStateEnabled', 'SecurityAlertPolicyStateDisabled'
7981	State SecurityAlertPolicyState `json:"state,omitempty"`
7982	// DisabledAlerts - Specifies an array of alerts that are disabled. Allowed values are: Sql_Injection, Sql_Injection_Vulnerability, Access_Anomaly, Data_Exfiltration, Unsafe_Action
7983	DisabledAlerts *[]string `json:"disabledAlerts,omitempty"`
7984	// EmailAddresses - Specifies an array of e-mail addresses to which the alert is sent.
7985	EmailAddresses *[]string `json:"emailAddresses,omitempty"`
7986	// EmailAccountAdmins - Specifies that the alert is sent to the account administrators.
7987	EmailAccountAdmins *bool `json:"emailAccountAdmins,omitempty"`
7988	// StorageEndpoint - Specifies the blob storage endpoint (e.g. https://MyAccount.blob.core.windows.net). This blob storage will hold all Threat Detection audit logs.
7989	StorageEndpoint *string `json:"storageEndpoint,omitempty"`
7990	// StorageAccountAccessKey - Specifies the identifier key of the Threat Detection audit storage account.
7991	StorageAccountAccessKey *string `json:"storageAccountAccessKey,omitempty"`
7992	// RetentionDays - Specifies the number of days to keep in the Threat Detection audit logs.
7993	RetentionDays *int32 `json:"retentionDays,omitempty"`
7994	// CreationTime - READ-ONLY; Specifies the UTC creation time of the policy.
7995	CreationTime *date.Time `json:"creationTime,omitempty"`
7996}
7997
7998// MarshalJSON is the custom marshaler for SecurityAlertPolicyProperties.
7999func (sapp SecurityAlertPolicyProperties) MarshalJSON() ([]byte, error) {
8000	objectMap := make(map[string]interface{})
8001	if sapp.State != "" {
8002		objectMap["state"] = sapp.State
8003	}
8004	if sapp.DisabledAlerts != nil {
8005		objectMap["disabledAlerts"] = sapp.DisabledAlerts
8006	}
8007	if sapp.EmailAddresses != nil {
8008		objectMap["emailAddresses"] = sapp.EmailAddresses
8009	}
8010	if sapp.EmailAccountAdmins != nil {
8011		objectMap["emailAccountAdmins"] = sapp.EmailAccountAdmins
8012	}
8013	if sapp.StorageEndpoint != nil {
8014		objectMap["storageEndpoint"] = sapp.StorageEndpoint
8015	}
8016	if sapp.StorageAccountAccessKey != nil {
8017		objectMap["storageAccountAccessKey"] = sapp.StorageAccountAccessKey
8018	}
8019	if sapp.RetentionDays != nil {
8020		objectMap["retentionDays"] = sapp.RetentionDays
8021	}
8022	return json.Marshal(objectMap)
8023}
8024
8025// SelfHostedIntegrationRuntime self-hosted integration runtime.
8026type SelfHostedIntegrationRuntime struct {
8027	// SelfHostedIntegrationRuntimeTypeProperties - When this property is not null, means this is a linked integration runtime. The property is used to access original integration runtime.
8028	*SelfHostedIntegrationRuntimeTypeProperties `json:"typeProperties,omitempty"`
8029	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
8030	AdditionalProperties map[string]interface{} `json:""`
8031	// Description - Integration runtime description.
8032	Description *string `json:"description,omitempty"`
8033	// Type - Possible values include: 'TypeIntegrationRuntime', 'TypeManaged', 'TypeSelfHosted'
8034	Type Type `json:"type,omitempty"`
8035}
8036
8037// MarshalJSON is the custom marshaler for SelfHostedIntegrationRuntime.
8038func (shir SelfHostedIntegrationRuntime) MarshalJSON() ([]byte, error) {
8039	shir.Type = TypeSelfHosted
8040	objectMap := make(map[string]interface{})
8041	if shir.SelfHostedIntegrationRuntimeTypeProperties != nil {
8042		objectMap["typeProperties"] = shir.SelfHostedIntegrationRuntimeTypeProperties
8043	}
8044	if shir.Description != nil {
8045		objectMap["description"] = shir.Description
8046	}
8047	if shir.Type != "" {
8048		objectMap["type"] = shir.Type
8049	}
8050	for k, v := range shir.AdditionalProperties {
8051		objectMap[k] = v
8052	}
8053	return json.Marshal(objectMap)
8054}
8055
8056// AsManagedIntegrationRuntime is the BasicIntegrationRuntime implementation for SelfHostedIntegrationRuntime.
8057func (shir SelfHostedIntegrationRuntime) AsManagedIntegrationRuntime() (*ManagedIntegrationRuntime, bool) {
8058	return nil, false
8059}
8060
8061// AsSelfHostedIntegrationRuntime is the BasicIntegrationRuntime implementation for SelfHostedIntegrationRuntime.
8062func (shir SelfHostedIntegrationRuntime) AsSelfHostedIntegrationRuntime() (*SelfHostedIntegrationRuntime, bool) {
8063	return &shir, true
8064}
8065
8066// AsIntegrationRuntime is the BasicIntegrationRuntime implementation for SelfHostedIntegrationRuntime.
8067func (shir SelfHostedIntegrationRuntime) AsIntegrationRuntime() (*IntegrationRuntime, bool) {
8068	return nil, false
8069}
8070
8071// AsBasicIntegrationRuntime is the BasicIntegrationRuntime implementation for SelfHostedIntegrationRuntime.
8072func (shir SelfHostedIntegrationRuntime) AsBasicIntegrationRuntime() (BasicIntegrationRuntime, bool) {
8073	return &shir, true
8074}
8075
8076// UnmarshalJSON is the custom unmarshaler for SelfHostedIntegrationRuntime struct.
8077func (shir *SelfHostedIntegrationRuntime) UnmarshalJSON(body []byte) error {
8078	var m map[string]*json.RawMessage
8079	err := json.Unmarshal(body, &m)
8080	if err != nil {
8081		return err
8082	}
8083	for k, v := range m {
8084		switch k {
8085		case "typeProperties":
8086			if v != nil {
8087				var selfHostedIntegrationRuntimeTypeProperties SelfHostedIntegrationRuntimeTypeProperties
8088				err = json.Unmarshal(*v, &selfHostedIntegrationRuntimeTypeProperties)
8089				if err != nil {
8090					return err
8091				}
8092				shir.SelfHostedIntegrationRuntimeTypeProperties = &selfHostedIntegrationRuntimeTypeProperties
8093			}
8094		default:
8095			if v != nil {
8096				var additionalProperties interface{}
8097				err = json.Unmarshal(*v, &additionalProperties)
8098				if err != nil {
8099					return err
8100				}
8101				if shir.AdditionalProperties == nil {
8102					shir.AdditionalProperties = make(map[string]interface{})
8103				}
8104				shir.AdditionalProperties[k] = additionalProperties
8105			}
8106		case "description":
8107			if v != nil {
8108				var description string
8109				err = json.Unmarshal(*v, &description)
8110				if err != nil {
8111					return err
8112				}
8113				shir.Description = &description
8114			}
8115		case "type":
8116			if v != nil {
8117				var typeVar Type
8118				err = json.Unmarshal(*v, &typeVar)
8119				if err != nil {
8120					return err
8121				}
8122				shir.Type = typeVar
8123			}
8124		}
8125	}
8126
8127	return nil
8128}
8129
8130// SelfHostedIntegrationRuntimeNode properties of Self-hosted integration runtime node.
8131type SelfHostedIntegrationRuntimeNode struct {
8132	autorest.Response `json:"-"`
8133	// NodeName - READ-ONLY; Name of the integration runtime node.
8134	NodeName *string `json:"nodeName,omitempty"`
8135	// MachineName - READ-ONLY; Machine name of the integration runtime node.
8136	MachineName *string `json:"machineName,omitempty"`
8137	// HostServiceURI - READ-ONLY; URI for the host machine of the integration runtime.
8138	HostServiceURI *string `json:"hostServiceUri,omitempty"`
8139	// Status - READ-ONLY; Status of the integration runtime node. Possible values include: 'SelfHostedIntegrationRuntimeNodeStatusNeedRegistration', 'SelfHostedIntegrationRuntimeNodeStatusOnline', 'SelfHostedIntegrationRuntimeNodeStatusLimited', 'SelfHostedIntegrationRuntimeNodeStatusOffline', 'SelfHostedIntegrationRuntimeNodeStatusUpgrading', 'SelfHostedIntegrationRuntimeNodeStatusInitializing', 'SelfHostedIntegrationRuntimeNodeStatusInitializeFailed'
8140	Status SelfHostedIntegrationRuntimeNodeStatus `json:"status,omitempty"`
8141	// Capabilities - READ-ONLY; The integration runtime capabilities dictionary
8142	Capabilities map[string]*string `json:"capabilities"`
8143	// VersionStatus - READ-ONLY; Status of the integration runtime node version.
8144	VersionStatus *string `json:"versionStatus,omitempty"`
8145	// Version - READ-ONLY; Version of the integration runtime node.
8146	Version *string `json:"version,omitempty"`
8147	// RegisterTime - READ-ONLY; The time at which the integration runtime node was registered in ISO8601 format.
8148	RegisterTime *date.Time `json:"registerTime,omitempty"`
8149	// LastConnectTime - READ-ONLY; The most recent time at which the integration runtime was connected in ISO8601 format.
8150	LastConnectTime *date.Time `json:"lastConnectTime,omitempty"`
8151	// ExpiryTime - READ-ONLY; The time at which the integration runtime will expire in ISO8601 format.
8152	ExpiryTime *date.Time `json:"expiryTime,omitempty"`
8153	// LastStartTime - READ-ONLY; The time the node last started up.
8154	LastStartTime *date.Time `json:"lastStartTime,omitempty"`
8155	// LastStopTime - READ-ONLY; The integration runtime node last stop time.
8156	LastStopTime *date.Time `json:"lastStopTime,omitempty"`
8157	// LastUpdateResult - READ-ONLY; The result of the last integration runtime node update. Possible values include: 'None', 'Succeed', 'Fail'
8158	LastUpdateResult IntegrationRuntimeUpdateResult `json:"lastUpdateResult,omitempty"`
8159	// LastStartUpdateTime - READ-ONLY; The last time for the integration runtime node update start.
8160	LastStartUpdateTime *date.Time `json:"lastStartUpdateTime,omitempty"`
8161	// LastEndUpdateTime - READ-ONLY; The last time for the integration runtime node update end.
8162	LastEndUpdateTime *date.Time `json:"lastEndUpdateTime,omitempty"`
8163	// IsActiveDispatcher - READ-ONLY; Indicates whether this node is the active dispatcher for integration runtime requests.
8164	IsActiveDispatcher *bool `json:"isActiveDispatcher,omitempty"`
8165	// ConcurrentJobsLimit - READ-ONLY; Maximum concurrent jobs on the integration runtime node.
8166	ConcurrentJobsLimit *int32 `json:"concurrentJobsLimit,omitempty"`
8167	// MaxConcurrentJobs - READ-ONLY; The maximum concurrent jobs in this integration runtime.
8168	MaxConcurrentJobs *int32 `json:"maxConcurrentJobs,omitempty"`
8169}
8170
8171// MarshalJSON is the custom marshaler for SelfHostedIntegrationRuntimeNode.
8172func (shirn SelfHostedIntegrationRuntimeNode) MarshalJSON() ([]byte, error) {
8173	objectMap := make(map[string]interface{})
8174	return json.Marshal(objectMap)
8175}
8176
8177// SelfHostedIntegrationRuntimeStatus self-hosted integration runtime status.
8178type SelfHostedIntegrationRuntimeStatus struct {
8179	// SelfHostedIntegrationRuntimeStatusTypeProperties - Self-hosted integration runtime status type properties.
8180	*SelfHostedIntegrationRuntimeStatusTypeProperties `json:"typeProperties,omitempty"`
8181	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
8182	AdditionalProperties map[string]interface{} `json:""`
8183	// DataFactoryName - READ-ONLY; The workspace name which the integration runtime belong to.
8184	DataFactoryName *string `json:"dataFactoryName,omitempty"`
8185	// State - READ-ONLY; The state of integration runtime. Possible values include: 'Initial', 'Stopped', 'Started', 'Starting', 'Stopping', 'NeedRegistration', 'Online', 'Limited', 'Offline', 'AccessDenied'
8186	State IntegrationRuntimeState `json:"state,omitempty"`
8187	// Type - Possible values include: 'TypeBasicIntegrationRuntimeStatusTypeIntegrationRuntimeStatus', 'TypeBasicIntegrationRuntimeStatusTypeManaged', 'TypeBasicIntegrationRuntimeStatusTypeSelfHosted'
8188	Type TypeBasicIntegrationRuntimeStatus `json:"type,omitempty"`
8189}
8190
8191// MarshalJSON is the custom marshaler for SelfHostedIntegrationRuntimeStatus.
8192func (shirs SelfHostedIntegrationRuntimeStatus) MarshalJSON() ([]byte, error) {
8193	shirs.Type = TypeBasicIntegrationRuntimeStatusTypeSelfHosted
8194	objectMap := make(map[string]interface{})
8195	if shirs.SelfHostedIntegrationRuntimeStatusTypeProperties != nil {
8196		objectMap["typeProperties"] = shirs.SelfHostedIntegrationRuntimeStatusTypeProperties
8197	}
8198	if shirs.Type != "" {
8199		objectMap["type"] = shirs.Type
8200	}
8201	for k, v := range shirs.AdditionalProperties {
8202		objectMap[k] = v
8203	}
8204	return json.Marshal(objectMap)
8205}
8206
8207// AsManagedIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for SelfHostedIntegrationRuntimeStatus.
8208func (shirs SelfHostedIntegrationRuntimeStatus) AsManagedIntegrationRuntimeStatus() (*ManagedIntegrationRuntimeStatus, bool) {
8209	return nil, false
8210}
8211
8212// AsSelfHostedIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for SelfHostedIntegrationRuntimeStatus.
8213func (shirs SelfHostedIntegrationRuntimeStatus) AsSelfHostedIntegrationRuntimeStatus() (*SelfHostedIntegrationRuntimeStatus, bool) {
8214	return &shirs, true
8215}
8216
8217// AsIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for SelfHostedIntegrationRuntimeStatus.
8218func (shirs SelfHostedIntegrationRuntimeStatus) AsIntegrationRuntimeStatus() (*IntegrationRuntimeStatus, bool) {
8219	return nil, false
8220}
8221
8222// AsBasicIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for SelfHostedIntegrationRuntimeStatus.
8223func (shirs SelfHostedIntegrationRuntimeStatus) AsBasicIntegrationRuntimeStatus() (BasicIntegrationRuntimeStatus, bool) {
8224	return &shirs, true
8225}
8226
8227// UnmarshalJSON is the custom unmarshaler for SelfHostedIntegrationRuntimeStatus struct.
8228func (shirs *SelfHostedIntegrationRuntimeStatus) UnmarshalJSON(body []byte) error {
8229	var m map[string]*json.RawMessage
8230	err := json.Unmarshal(body, &m)
8231	if err != nil {
8232		return err
8233	}
8234	for k, v := range m {
8235		switch k {
8236		case "typeProperties":
8237			if v != nil {
8238				var selfHostedIntegrationRuntimeStatusTypeProperties SelfHostedIntegrationRuntimeStatusTypeProperties
8239				err = json.Unmarshal(*v, &selfHostedIntegrationRuntimeStatusTypeProperties)
8240				if err != nil {
8241					return err
8242				}
8243				shirs.SelfHostedIntegrationRuntimeStatusTypeProperties = &selfHostedIntegrationRuntimeStatusTypeProperties
8244			}
8245		default:
8246			if v != nil {
8247				var additionalProperties interface{}
8248				err = json.Unmarshal(*v, &additionalProperties)
8249				if err != nil {
8250					return err
8251				}
8252				if shirs.AdditionalProperties == nil {
8253					shirs.AdditionalProperties = make(map[string]interface{})
8254				}
8255				shirs.AdditionalProperties[k] = additionalProperties
8256			}
8257		case "dataFactoryName":
8258			if v != nil {
8259				var dataFactoryName string
8260				err = json.Unmarshal(*v, &dataFactoryName)
8261				if err != nil {
8262					return err
8263				}
8264				shirs.DataFactoryName = &dataFactoryName
8265			}
8266		case "state":
8267			if v != nil {
8268				var state IntegrationRuntimeState
8269				err = json.Unmarshal(*v, &state)
8270				if err != nil {
8271					return err
8272				}
8273				shirs.State = state
8274			}
8275		case "type":
8276			if v != nil {
8277				var typeVar TypeBasicIntegrationRuntimeStatus
8278				err = json.Unmarshal(*v, &typeVar)
8279				if err != nil {
8280					return err
8281				}
8282				shirs.Type = typeVar
8283			}
8284		}
8285	}
8286
8287	return nil
8288}
8289
8290// SelfHostedIntegrationRuntimeStatusTypeProperties self-hosted integration runtime status type properties.
8291type SelfHostedIntegrationRuntimeStatusTypeProperties struct {
8292	// CreateTime - READ-ONLY; The time at which the integration runtime was created, in ISO8601 format.
8293	CreateTime *date.Time `json:"createTime,omitempty"`
8294	// TaskQueueID - READ-ONLY; The task queue id of the integration runtime.
8295	TaskQueueID *string `json:"taskQueueId,omitempty"`
8296	// NodeCommunicationChannelEncryptionMode - READ-ONLY; The node communication Channel encryption mode
8297	NodeCommunicationChannelEncryptionMode *string `json:"nodeCommunicationChannelEncryptionMode,omitempty"`
8298	// InternalChannelEncryption - READ-ONLY; It is used to set the encryption mode for node-node communication channel (when more than 2 self-hosted integration runtime nodes exist). Possible values include: 'NotSet', 'SslEncrypted', 'NotEncrypted'
8299	InternalChannelEncryption IntegrationRuntimeInternalChannelEncryptionMode `json:"internalChannelEncryption,omitempty"`
8300	// Version - READ-ONLY; Version of the integration runtime.
8301	Version *string `json:"version,omitempty"`
8302	// Nodes - The list of nodes for this integration runtime.
8303	Nodes *[]SelfHostedIntegrationRuntimeNode `json:"nodes,omitempty"`
8304	// ScheduledUpdateDate - READ-ONLY; The date at which the integration runtime will be scheduled to update, in ISO8601 format.
8305	ScheduledUpdateDate *date.Time `json:"scheduledUpdateDate,omitempty"`
8306	// UpdateDelayOffset - READ-ONLY; The time in the date scheduled by service to update the integration runtime, e.g., PT03H is 3 hours
8307	UpdateDelayOffset *string `json:"updateDelayOffset,omitempty"`
8308	// LocalTimeZoneOffset - READ-ONLY; The local time zone offset in hours.
8309	LocalTimeZoneOffset *string `json:"localTimeZoneOffset,omitempty"`
8310	// Capabilities - READ-ONLY; Object with additional information about integration runtime capabilities.
8311	Capabilities map[string]*string `json:"capabilities"`
8312	// ServiceUrls - READ-ONLY; The URLs for the services used in integration runtime backend service.
8313	ServiceUrls *[]string `json:"serviceUrls,omitempty"`
8314	// AutoUpdate - READ-ONLY; Whether Self-hosted integration runtime auto update has been turned on. Possible values include: 'On', 'Off'
8315	AutoUpdate IntegrationRuntimeAutoUpdate `json:"autoUpdate,omitempty"`
8316	// VersionStatus - READ-ONLY; Status of the integration runtime version.
8317	VersionStatus *string `json:"versionStatus,omitempty"`
8318	// Links - The list of linked integration runtimes that are created to share with this integration runtime.
8319	Links *[]LinkedIntegrationRuntime `json:"links,omitempty"`
8320	// PushedVersion - READ-ONLY; The version that the integration runtime is going to update to.
8321	PushedVersion *string `json:"pushedVersion,omitempty"`
8322	// LatestVersion - READ-ONLY; The latest version on download center.
8323	LatestVersion *string `json:"latestVersion,omitempty"`
8324	// AutoUpdateETA - READ-ONLY; The estimated time when the self-hosted integration runtime will be updated.
8325	AutoUpdateETA *date.Time `json:"autoUpdateETA,omitempty"`
8326}
8327
8328// MarshalJSON is the custom marshaler for SelfHostedIntegrationRuntimeStatusTypeProperties.
8329func (shirstp SelfHostedIntegrationRuntimeStatusTypeProperties) MarshalJSON() ([]byte, error) {
8330	objectMap := make(map[string]interface{})
8331	if shirstp.Nodes != nil {
8332		objectMap["nodes"] = shirstp.Nodes
8333	}
8334	if shirstp.Links != nil {
8335		objectMap["links"] = shirstp.Links
8336	}
8337	return json.Marshal(objectMap)
8338}
8339
8340// SelfHostedIntegrationRuntimeTypeProperties the self-hosted integration runtime properties.
8341type SelfHostedIntegrationRuntimeTypeProperties struct {
8342	// LinkedInfo - Linked integration runtime type from data factory
8343	LinkedInfo BasicLinkedIntegrationRuntimeType `json:"linkedInfo,omitempty"`
8344}
8345
8346// UnmarshalJSON is the custom unmarshaler for SelfHostedIntegrationRuntimeTypeProperties struct.
8347func (shirtp *SelfHostedIntegrationRuntimeTypeProperties) UnmarshalJSON(body []byte) error {
8348	var m map[string]*json.RawMessage
8349	err := json.Unmarshal(body, &m)
8350	if err != nil {
8351		return err
8352	}
8353	for k, v := range m {
8354		switch k {
8355		case "linkedInfo":
8356			if v != nil {
8357				linkedInfo, err := unmarshalBasicLinkedIntegrationRuntimeType(*v)
8358				if err != nil {
8359					return err
8360				}
8361				shirtp.LinkedInfo = linkedInfo
8362			}
8363		}
8364	}
8365
8366	return nil
8367}
8368
8369// SensitivityLabel a sensitivity label.
8370type SensitivityLabel struct {
8371	autorest.Response `json:"-"`
8372	// SensitivityLabelProperties - Resource properties.
8373	*SensitivityLabelProperties `json:"properties,omitempty"`
8374	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
8375	ID *string `json:"id,omitempty"`
8376	// Name - READ-ONLY; The name of the resource
8377	Name *string `json:"name,omitempty"`
8378	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
8379	Type *string `json:"type,omitempty"`
8380}
8381
8382// MarshalJSON is the custom marshaler for SensitivityLabel.
8383func (sl SensitivityLabel) MarshalJSON() ([]byte, error) {
8384	objectMap := make(map[string]interface{})
8385	if sl.SensitivityLabelProperties != nil {
8386		objectMap["properties"] = sl.SensitivityLabelProperties
8387	}
8388	return json.Marshal(objectMap)
8389}
8390
8391// UnmarshalJSON is the custom unmarshaler for SensitivityLabel struct.
8392func (sl *SensitivityLabel) UnmarshalJSON(body []byte) error {
8393	var m map[string]*json.RawMessage
8394	err := json.Unmarshal(body, &m)
8395	if err != nil {
8396		return err
8397	}
8398	for k, v := range m {
8399		switch k {
8400		case "properties":
8401			if v != nil {
8402				var sensitivityLabelProperties SensitivityLabelProperties
8403				err = json.Unmarshal(*v, &sensitivityLabelProperties)
8404				if err != nil {
8405					return err
8406				}
8407				sl.SensitivityLabelProperties = &sensitivityLabelProperties
8408			}
8409		case "id":
8410			if v != nil {
8411				var ID string
8412				err = json.Unmarshal(*v, &ID)
8413				if err != nil {
8414					return err
8415				}
8416				sl.ID = &ID
8417			}
8418		case "name":
8419			if v != nil {
8420				var name string
8421				err = json.Unmarshal(*v, &name)
8422				if err != nil {
8423					return err
8424				}
8425				sl.Name = &name
8426			}
8427		case "type":
8428			if v != nil {
8429				var typeVar string
8430				err = json.Unmarshal(*v, &typeVar)
8431				if err != nil {
8432					return err
8433				}
8434				sl.Type = &typeVar
8435			}
8436		}
8437	}
8438
8439	return nil
8440}
8441
8442// SensitivityLabelListResult a list of sensitivity labels.
8443type SensitivityLabelListResult struct {
8444	autorest.Response `json:"-"`
8445	// Value - READ-ONLY; Array of results.
8446	Value *[]SensitivityLabel `json:"value,omitempty"`
8447	// NextLink - READ-ONLY; Link to retrieve next page of results.
8448	NextLink *string `json:"nextLink,omitempty"`
8449}
8450
8451// MarshalJSON is the custom marshaler for SensitivityLabelListResult.
8452func (sllr SensitivityLabelListResult) MarshalJSON() ([]byte, error) {
8453	objectMap := make(map[string]interface{})
8454	return json.Marshal(objectMap)
8455}
8456
8457// SensitivityLabelListResultIterator provides access to a complete listing of SensitivityLabel values.
8458type SensitivityLabelListResultIterator struct {
8459	i    int
8460	page SensitivityLabelListResultPage
8461}
8462
8463// NextWithContext advances to the next value.  If there was an error making
8464// the request the iterator does not advance and the error is returned.
8465func (iter *SensitivityLabelListResultIterator) NextWithContext(ctx context.Context) (err error) {
8466	if tracing.IsEnabled() {
8467		ctx = tracing.StartSpan(ctx, fqdn+"/SensitivityLabelListResultIterator.NextWithContext")
8468		defer func() {
8469			sc := -1
8470			if iter.Response().Response.Response != nil {
8471				sc = iter.Response().Response.Response.StatusCode
8472			}
8473			tracing.EndSpan(ctx, sc, err)
8474		}()
8475	}
8476	iter.i++
8477	if iter.i < len(iter.page.Values()) {
8478		return nil
8479	}
8480	err = iter.page.NextWithContext(ctx)
8481	if err != nil {
8482		iter.i--
8483		return err
8484	}
8485	iter.i = 0
8486	return nil
8487}
8488
8489// Next advances to the next value.  If there was an error making
8490// the request the iterator does not advance and the error is returned.
8491// Deprecated: Use NextWithContext() instead.
8492func (iter *SensitivityLabelListResultIterator) Next() error {
8493	return iter.NextWithContext(context.Background())
8494}
8495
8496// NotDone returns true if the enumeration should be started or is not yet complete.
8497func (iter SensitivityLabelListResultIterator) NotDone() bool {
8498	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8499}
8500
8501// Response returns the raw server response from the last page request.
8502func (iter SensitivityLabelListResultIterator) Response() SensitivityLabelListResult {
8503	return iter.page.Response()
8504}
8505
8506// Value returns the current value or a zero-initialized value if the
8507// iterator has advanced beyond the end of the collection.
8508func (iter SensitivityLabelListResultIterator) Value() SensitivityLabel {
8509	if !iter.page.NotDone() {
8510		return SensitivityLabel{}
8511	}
8512	return iter.page.Values()[iter.i]
8513}
8514
8515// Creates a new instance of the SensitivityLabelListResultIterator type.
8516func NewSensitivityLabelListResultIterator(page SensitivityLabelListResultPage) SensitivityLabelListResultIterator {
8517	return SensitivityLabelListResultIterator{page: page}
8518}
8519
8520// IsEmpty returns true if the ListResult contains no values.
8521func (sllr SensitivityLabelListResult) IsEmpty() bool {
8522	return sllr.Value == nil || len(*sllr.Value) == 0
8523}
8524
8525// hasNextLink returns true if the NextLink is not empty.
8526func (sllr SensitivityLabelListResult) hasNextLink() bool {
8527	return sllr.NextLink != nil && len(*sllr.NextLink) != 0
8528}
8529
8530// sensitivityLabelListResultPreparer prepares a request to retrieve the next set of results.
8531// It returns nil if no more results exist.
8532func (sllr SensitivityLabelListResult) sensitivityLabelListResultPreparer(ctx context.Context) (*http.Request, error) {
8533	if !sllr.hasNextLink() {
8534		return nil, nil
8535	}
8536	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8537		autorest.AsJSON(),
8538		autorest.AsGet(),
8539		autorest.WithBaseURL(to.String(sllr.NextLink)))
8540}
8541
8542// SensitivityLabelListResultPage contains a page of SensitivityLabel values.
8543type SensitivityLabelListResultPage struct {
8544	fn   func(context.Context, SensitivityLabelListResult) (SensitivityLabelListResult, error)
8545	sllr SensitivityLabelListResult
8546}
8547
8548// NextWithContext advances to the next page of values.  If there was an error making
8549// the request the page does not advance and the error is returned.
8550func (page *SensitivityLabelListResultPage) NextWithContext(ctx context.Context) (err error) {
8551	if tracing.IsEnabled() {
8552		ctx = tracing.StartSpan(ctx, fqdn+"/SensitivityLabelListResultPage.NextWithContext")
8553		defer func() {
8554			sc := -1
8555			if page.Response().Response.Response != nil {
8556				sc = page.Response().Response.Response.StatusCode
8557			}
8558			tracing.EndSpan(ctx, sc, err)
8559		}()
8560	}
8561	for {
8562		next, err := page.fn(ctx, page.sllr)
8563		if err != nil {
8564			return err
8565		}
8566		page.sllr = next
8567		if !next.hasNextLink() || !next.IsEmpty() {
8568			break
8569		}
8570	}
8571	return nil
8572}
8573
8574// Next advances to the next page of values.  If there was an error making
8575// the request the page does not advance and the error is returned.
8576// Deprecated: Use NextWithContext() instead.
8577func (page *SensitivityLabelListResultPage) Next() error {
8578	return page.NextWithContext(context.Background())
8579}
8580
8581// NotDone returns true if the page enumeration should be started or is not yet complete.
8582func (page SensitivityLabelListResultPage) NotDone() bool {
8583	return !page.sllr.IsEmpty()
8584}
8585
8586// Response returns the raw server response from the last page request.
8587func (page SensitivityLabelListResultPage) Response() SensitivityLabelListResult {
8588	return page.sllr
8589}
8590
8591// Values returns the slice of values for the current page or nil if there are no values.
8592func (page SensitivityLabelListResultPage) Values() []SensitivityLabel {
8593	if page.sllr.IsEmpty() {
8594		return nil
8595	}
8596	return *page.sllr.Value
8597}
8598
8599// Creates a new instance of the SensitivityLabelListResultPage type.
8600func NewSensitivityLabelListResultPage(cur SensitivityLabelListResult, getNextPage func(context.Context, SensitivityLabelListResult) (SensitivityLabelListResult, error)) SensitivityLabelListResultPage {
8601	return SensitivityLabelListResultPage{
8602		fn:   getNextPage,
8603		sllr: cur,
8604	}
8605}
8606
8607// SensitivityLabelProperties properties of a sensitivity label.
8608type SensitivityLabelProperties struct {
8609	// LabelName - The label name.
8610	LabelName *string `json:"labelName,omitempty"`
8611	// LabelID - The label ID.
8612	LabelID *string `json:"labelId,omitempty"`
8613	// InformationType - The information type.
8614	InformationType *string `json:"informationType,omitempty"`
8615	// InformationTypeID - The information type ID.
8616	InformationTypeID *string `json:"informationTypeId,omitempty"`
8617	// IsDisabled - READ-ONLY; Is sensitivity recommendation disabled. Applicable for recommended sensitivity label only. Specifies whether the sensitivity recommendation on this column is disabled (dismissed) or not.
8618	IsDisabled *bool `json:"isDisabled,omitempty"`
8619}
8620
8621// MarshalJSON is the custom marshaler for SensitivityLabelProperties.
8622func (slp SensitivityLabelProperties) MarshalJSON() ([]byte, error) {
8623	objectMap := make(map[string]interface{})
8624	if slp.LabelName != nil {
8625		objectMap["labelName"] = slp.LabelName
8626	}
8627	if slp.LabelID != nil {
8628		objectMap["labelId"] = slp.LabelID
8629	}
8630	if slp.InformationType != nil {
8631		objectMap["informationType"] = slp.InformationType
8632	}
8633	if slp.InformationTypeID != nil {
8634		objectMap["informationTypeId"] = slp.InformationTypeID
8635	}
8636	return json.Marshal(objectMap)
8637}
8638
8639// ServerBlobAuditingPolicy a server blob auditing policy.
8640type ServerBlobAuditingPolicy struct {
8641	autorest.Response `json:"-"`
8642	// ServerBlobAuditingPolicyProperties - Resource properties.
8643	*ServerBlobAuditingPolicyProperties `json:"properties,omitempty"`
8644	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
8645	ID *string `json:"id,omitempty"`
8646	// Name - READ-ONLY; The name of the resource
8647	Name *string `json:"name,omitempty"`
8648	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
8649	Type *string `json:"type,omitempty"`
8650}
8651
8652// MarshalJSON is the custom marshaler for ServerBlobAuditingPolicy.
8653func (sbap ServerBlobAuditingPolicy) MarshalJSON() ([]byte, error) {
8654	objectMap := make(map[string]interface{})
8655	if sbap.ServerBlobAuditingPolicyProperties != nil {
8656		objectMap["properties"] = sbap.ServerBlobAuditingPolicyProperties
8657	}
8658	return json.Marshal(objectMap)
8659}
8660
8661// UnmarshalJSON is the custom unmarshaler for ServerBlobAuditingPolicy struct.
8662func (sbap *ServerBlobAuditingPolicy) UnmarshalJSON(body []byte) error {
8663	var m map[string]*json.RawMessage
8664	err := json.Unmarshal(body, &m)
8665	if err != nil {
8666		return err
8667	}
8668	for k, v := range m {
8669		switch k {
8670		case "properties":
8671			if v != nil {
8672				var serverBlobAuditingPolicyProperties ServerBlobAuditingPolicyProperties
8673				err = json.Unmarshal(*v, &serverBlobAuditingPolicyProperties)
8674				if err != nil {
8675					return err
8676				}
8677				sbap.ServerBlobAuditingPolicyProperties = &serverBlobAuditingPolicyProperties
8678			}
8679		case "id":
8680			if v != nil {
8681				var ID string
8682				err = json.Unmarshal(*v, &ID)
8683				if err != nil {
8684					return err
8685				}
8686				sbap.ID = &ID
8687			}
8688		case "name":
8689			if v != nil {
8690				var name string
8691				err = json.Unmarshal(*v, &name)
8692				if err != nil {
8693					return err
8694				}
8695				sbap.Name = &name
8696			}
8697		case "type":
8698			if v != nil {
8699				var typeVar string
8700				err = json.Unmarshal(*v, &typeVar)
8701				if err != nil {
8702					return err
8703				}
8704				sbap.Type = &typeVar
8705			}
8706		}
8707	}
8708
8709	return nil
8710}
8711
8712// ServerBlobAuditingPolicyListResult a list of server auditing settings.
8713type ServerBlobAuditingPolicyListResult struct {
8714	autorest.Response `json:"-"`
8715	// Value - READ-ONLY; Array of results.
8716	Value *[]ServerBlobAuditingPolicy `json:"value,omitempty"`
8717	// NextLink - READ-ONLY; Link to retrieve next page of results.
8718	NextLink *string `json:"nextLink,omitempty"`
8719}
8720
8721// MarshalJSON is the custom marshaler for ServerBlobAuditingPolicyListResult.
8722func (sbaplr ServerBlobAuditingPolicyListResult) MarshalJSON() ([]byte, error) {
8723	objectMap := make(map[string]interface{})
8724	return json.Marshal(objectMap)
8725}
8726
8727// ServerBlobAuditingPolicyListResultIterator provides access to a complete listing of
8728// ServerBlobAuditingPolicy values.
8729type ServerBlobAuditingPolicyListResultIterator struct {
8730	i    int
8731	page ServerBlobAuditingPolicyListResultPage
8732}
8733
8734// NextWithContext advances to the next value.  If there was an error making
8735// the request the iterator does not advance and the error is returned.
8736func (iter *ServerBlobAuditingPolicyListResultIterator) NextWithContext(ctx context.Context) (err error) {
8737	if tracing.IsEnabled() {
8738		ctx = tracing.StartSpan(ctx, fqdn+"/ServerBlobAuditingPolicyListResultIterator.NextWithContext")
8739		defer func() {
8740			sc := -1
8741			if iter.Response().Response.Response != nil {
8742				sc = iter.Response().Response.Response.StatusCode
8743			}
8744			tracing.EndSpan(ctx, sc, err)
8745		}()
8746	}
8747	iter.i++
8748	if iter.i < len(iter.page.Values()) {
8749		return nil
8750	}
8751	err = iter.page.NextWithContext(ctx)
8752	if err != nil {
8753		iter.i--
8754		return err
8755	}
8756	iter.i = 0
8757	return nil
8758}
8759
8760// Next advances to the next value.  If there was an error making
8761// the request the iterator does not advance and the error is returned.
8762// Deprecated: Use NextWithContext() instead.
8763func (iter *ServerBlobAuditingPolicyListResultIterator) Next() error {
8764	return iter.NextWithContext(context.Background())
8765}
8766
8767// NotDone returns true if the enumeration should be started or is not yet complete.
8768func (iter ServerBlobAuditingPolicyListResultIterator) NotDone() bool {
8769	return iter.page.NotDone() && iter.i < len(iter.page.Values())
8770}
8771
8772// Response returns the raw server response from the last page request.
8773func (iter ServerBlobAuditingPolicyListResultIterator) Response() ServerBlobAuditingPolicyListResult {
8774	return iter.page.Response()
8775}
8776
8777// Value returns the current value or a zero-initialized value if the
8778// iterator has advanced beyond the end of the collection.
8779func (iter ServerBlobAuditingPolicyListResultIterator) Value() ServerBlobAuditingPolicy {
8780	if !iter.page.NotDone() {
8781		return ServerBlobAuditingPolicy{}
8782	}
8783	return iter.page.Values()[iter.i]
8784}
8785
8786// Creates a new instance of the ServerBlobAuditingPolicyListResultIterator type.
8787func NewServerBlobAuditingPolicyListResultIterator(page ServerBlobAuditingPolicyListResultPage) ServerBlobAuditingPolicyListResultIterator {
8788	return ServerBlobAuditingPolicyListResultIterator{page: page}
8789}
8790
8791// IsEmpty returns true if the ListResult contains no values.
8792func (sbaplr ServerBlobAuditingPolicyListResult) IsEmpty() bool {
8793	return sbaplr.Value == nil || len(*sbaplr.Value) == 0
8794}
8795
8796// hasNextLink returns true if the NextLink is not empty.
8797func (sbaplr ServerBlobAuditingPolicyListResult) hasNextLink() bool {
8798	return sbaplr.NextLink != nil && len(*sbaplr.NextLink) != 0
8799}
8800
8801// serverBlobAuditingPolicyListResultPreparer prepares a request to retrieve the next set of results.
8802// It returns nil if no more results exist.
8803func (sbaplr ServerBlobAuditingPolicyListResult) serverBlobAuditingPolicyListResultPreparer(ctx context.Context) (*http.Request, error) {
8804	if !sbaplr.hasNextLink() {
8805		return nil, nil
8806	}
8807	return autorest.Prepare((&http.Request{}).WithContext(ctx),
8808		autorest.AsJSON(),
8809		autorest.AsGet(),
8810		autorest.WithBaseURL(to.String(sbaplr.NextLink)))
8811}
8812
8813// ServerBlobAuditingPolicyListResultPage contains a page of ServerBlobAuditingPolicy values.
8814type ServerBlobAuditingPolicyListResultPage struct {
8815	fn     func(context.Context, ServerBlobAuditingPolicyListResult) (ServerBlobAuditingPolicyListResult, error)
8816	sbaplr ServerBlobAuditingPolicyListResult
8817}
8818
8819// NextWithContext advances to the next page of values.  If there was an error making
8820// the request the page does not advance and the error is returned.
8821func (page *ServerBlobAuditingPolicyListResultPage) NextWithContext(ctx context.Context) (err error) {
8822	if tracing.IsEnabled() {
8823		ctx = tracing.StartSpan(ctx, fqdn+"/ServerBlobAuditingPolicyListResultPage.NextWithContext")
8824		defer func() {
8825			sc := -1
8826			if page.Response().Response.Response != nil {
8827				sc = page.Response().Response.Response.StatusCode
8828			}
8829			tracing.EndSpan(ctx, sc, err)
8830		}()
8831	}
8832	for {
8833		next, err := page.fn(ctx, page.sbaplr)
8834		if err != nil {
8835			return err
8836		}
8837		page.sbaplr = next
8838		if !next.hasNextLink() || !next.IsEmpty() {
8839			break
8840		}
8841	}
8842	return nil
8843}
8844
8845// Next advances to the next page of values.  If there was an error making
8846// the request the page does not advance and the error is returned.
8847// Deprecated: Use NextWithContext() instead.
8848func (page *ServerBlobAuditingPolicyListResultPage) Next() error {
8849	return page.NextWithContext(context.Background())
8850}
8851
8852// NotDone returns true if the page enumeration should be started or is not yet complete.
8853func (page ServerBlobAuditingPolicyListResultPage) NotDone() bool {
8854	return !page.sbaplr.IsEmpty()
8855}
8856
8857// Response returns the raw server response from the last page request.
8858func (page ServerBlobAuditingPolicyListResultPage) Response() ServerBlobAuditingPolicyListResult {
8859	return page.sbaplr
8860}
8861
8862// Values returns the slice of values for the current page or nil if there are no values.
8863func (page ServerBlobAuditingPolicyListResultPage) Values() []ServerBlobAuditingPolicy {
8864	if page.sbaplr.IsEmpty() {
8865		return nil
8866	}
8867	return *page.sbaplr.Value
8868}
8869
8870// Creates a new instance of the ServerBlobAuditingPolicyListResultPage type.
8871func NewServerBlobAuditingPolicyListResultPage(cur ServerBlobAuditingPolicyListResult, getNextPage func(context.Context, ServerBlobAuditingPolicyListResult) (ServerBlobAuditingPolicyListResult, error)) ServerBlobAuditingPolicyListResultPage {
8872	return ServerBlobAuditingPolicyListResultPage{
8873		fn:     getNextPage,
8874		sbaplr: cur,
8875	}
8876}
8877
8878// ServerBlobAuditingPolicyProperties properties of a server blob auditing policy.
8879type ServerBlobAuditingPolicyProperties struct {
8880	// State - Specifies the state of the policy. If state is Enabled, storageEndpoint or isAzureMonitorTargetEnabled are required. Possible values include: 'BlobAuditingPolicyStateEnabled', 'BlobAuditingPolicyStateDisabled'
8881	State BlobAuditingPolicyState `json:"state,omitempty"`
8882	// StorageEndpoint - Specifies the blob storage endpoint (e.g. https://MyAccount.blob.core.windows.net). If state is Enabled, storageEndpoint or isAzureMonitorTargetEnabled is required.
8883	StorageEndpoint *string `json:"storageEndpoint,omitempty"`
8884	// StorageAccountAccessKey - Specifies the identifier key of the auditing storage account.
8885	// If state is Enabled and storageEndpoint is specified, not specifying the storageAccountAccessKey will use SQL server system-assigned managed identity to access the storage.
8886	// Prerequisites for using managed identity authentication:
8887	// 1. Assign SQL Server a system-assigned managed identity in Azure Active Directory (AAD).
8888	// 2. Grant SQL Server identity access to the storage account by adding 'Storage Blob Data Contributor' RBAC role to the server identity.
8889	// For more information, see [Auditing to storage using Managed Identity authentication](https://go.microsoft.com/fwlink/?linkid=2114355)
8890	StorageAccountAccessKey *string `json:"storageAccountAccessKey,omitempty"`
8891	// RetentionDays - Specifies the number of days to keep in the audit logs in the storage account.
8892	RetentionDays *int32 `json:"retentionDays,omitempty"`
8893	// AuditActionsAndGroups - Specifies the Actions-Groups and Actions to audit.
8894	//
8895	// The recommended set of action groups to use is the following combination - this will audit all the queries and stored procedures executed against the database, as well as successful and failed logins:
8896	//
8897	// BATCH_COMPLETED_GROUP,
8898	// SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP,
8899	// FAILED_DATABASE_AUTHENTICATION_GROUP.
8900	//
8901	// This above combination is also the set that is configured by default when enabling auditing from the Azure portal.
8902	//
8903	// The supported action groups to audit are (note: choose only specific groups that cover your auditing needs. Using unnecessary groups could lead to very large quantities of audit records):
8904	//
8905	// APPLICATION_ROLE_CHANGE_PASSWORD_GROUP
8906	// BACKUP_RESTORE_GROUP
8907	// DATABASE_LOGOUT_GROUP
8908	// DATABASE_OBJECT_CHANGE_GROUP
8909	// DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP
8910	// DATABASE_OBJECT_PERMISSION_CHANGE_GROUP
8911	// DATABASE_OPERATION_GROUP
8912	// DATABASE_PERMISSION_CHANGE_GROUP
8913	// DATABASE_PRINCIPAL_CHANGE_GROUP
8914	// DATABASE_PRINCIPAL_IMPERSONATION_GROUP
8915	// DATABASE_ROLE_MEMBER_CHANGE_GROUP
8916	// FAILED_DATABASE_AUTHENTICATION_GROUP
8917	// SCHEMA_OBJECT_ACCESS_GROUP
8918	// SCHEMA_OBJECT_CHANGE_GROUP
8919	// SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP
8920	// SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP
8921	// SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
8922	// USER_CHANGE_PASSWORD_GROUP
8923	// BATCH_STARTED_GROUP
8924	// BATCH_COMPLETED_GROUP
8925	//
8926	// These are groups that cover all sql statements and stored procedures executed against the database, and should not be used in combination with other groups as this will result in duplicate audit logs.
8927	//
8928	// For more information, see [Database-Level Audit Action Groups](https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-action-groups).
8929	//
8930	// For Database auditing policy, specific Actions can also be specified (note that Actions cannot be specified for Server auditing policy). The supported actions to audit are:
8931	// SELECT
8932	// UPDATE
8933	// INSERT
8934	// DELETE
8935	// EXECUTE
8936	// RECEIVE
8937	// REFERENCES
8938	//
8939	// The general form for defining an action to be audited is:
8940	// {action} ON {object} BY {principal}
8941	//
8942	// Note that <object> in the above format can refer to an object like a table, view, or stored procedure, or an entire database or schema. For the latter cases, the forms DATABASE::{db_name} and SCHEMA::{schema_name} are used, respectively.
8943	//
8944	// For example:
8945	// SELECT on dbo.myTable by public
8946	// SELECT on DATABASE::myDatabase by public
8947	// SELECT on SCHEMA::mySchema by public
8948	//
8949	// For more information, see [Database-Level Audit Actions](https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-actions)
8950	AuditActionsAndGroups *[]string `json:"auditActionsAndGroups,omitempty"`
8951	// StorageAccountSubscriptionID - Specifies the blob storage subscription Id.
8952	StorageAccountSubscriptionID *uuid.UUID `json:"storageAccountSubscriptionId,omitempty"`
8953	// IsStorageSecondaryKeyInUse - Specifies whether storageAccountAccessKey value is the storage's secondary key.
8954	IsStorageSecondaryKeyInUse *bool `json:"isStorageSecondaryKeyInUse,omitempty"`
8955	// IsAzureMonitorTargetEnabled - Specifies whether audit events are sent to Azure Monitor.
8956	// In order to send the events to Azure Monitor, specify 'state' as 'Enabled' and 'isAzureMonitorTargetEnabled' as true.
8957	//
8958	// When using REST API to configure auditing, Diagnostic Settings with 'SQLSecurityAuditEvents' diagnostic logs category on the database should be also created.
8959	// Note that for server level audit you should use the 'master' database as {databaseName}.
8960	//
8961	// Diagnostic Settings URI format:
8962	// PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/providers/microsoft.insights/diagnosticSettings/{settingsName}?api-version=2017-05-01-preview
8963	//
8964	// For more information, see [Diagnostic Settings REST API](https://go.microsoft.com/fwlink/?linkid=2033207)
8965	// or [Diagnostic Settings PowerShell](https://go.microsoft.com/fwlink/?linkid=2033043)
8966	IsAzureMonitorTargetEnabled *bool `json:"isAzureMonitorTargetEnabled,omitempty"`
8967	// QueueDelayMs - Specifies the amount of time in milliseconds that can elapse before audit actions are forced to be processed.
8968	// The default minimum value is 1000 (1 second). The maximum is 2,147,483,647.
8969	QueueDelayMs *int32 `json:"queueDelayMs,omitempty"`
8970}
8971
8972// ServerSecurityAlertPolicy workspace managed Sql server security alert policy.
8973type ServerSecurityAlertPolicy struct {
8974	autorest.Response `json:"-"`
8975	// ServerSecurityAlertPolicyProperties - Resource properties.
8976	*ServerSecurityAlertPolicyProperties `json:"properties,omitempty"`
8977	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
8978	ID *string `json:"id,omitempty"`
8979	// Name - READ-ONLY; The name of the resource
8980	Name *string `json:"name,omitempty"`
8981	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
8982	Type *string `json:"type,omitempty"`
8983}
8984
8985// MarshalJSON is the custom marshaler for ServerSecurityAlertPolicy.
8986func (ssap ServerSecurityAlertPolicy) MarshalJSON() ([]byte, error) {
8987	objectMap := make(map[string]interface{})
8988	if ssap.ServerSecurityAlertPolicyProperties != nil {
8989		objectMap["properties"] = ssap.ServerSecurityAlertPolicyProperties
8990	}
8991	return json.Marshal(objectMap)
8992}
8993
8994// UnmarshalJSON is the custom unmarshaler for ServerSecurityAlertPolicy struct.
8995func (ssap *ServerSecurityAlertPolicy) UnmarshalJSON(body []byte) error {
8996	var m map[string]*json.RawMessage
8997	err := json.Unmarshal(body, &m)
8998	if err != nil {
8999		return err
9000	}
9001	for k, v := range m {
9002		switch k {
9003		case "properties":
9004			if v != nil {
9005				var serverSecurityAlertPolicyProperties ServerSecurityAlertPolicyProperties
9006				err = json.Unmarshal(*v, &serverSecurityAlertPolicyProperties)
9007				if err != nil {
9008					return err
9009				}
9010				ssap.ServerSecurityAlertPolicyProperties = &serverSecurityAlertPolicyProperties
9011			}
9012		case "id":
9013			if v != nil {
9014				var ID string
9015				err = json.Unmarshal(*v, &ID)
9016				if err != nil {
9017					return err
9018				}
9019				ssap.ID = &ID
9020			}
9021		case "name":
9022			if v != nil {
9023				var name string
9024				err = json.Unmarshal(*v, &name)
9025				if err != nil {
9026					return err
9027				}
9028				ssap.Name = &name
9029			}
9030		case "type":
9031			if v != nil {
9032				var typeVar string
9033				err = json.Unmarshal(*v, &typeVar)
9034				if err != nil {
9035					return err
9036				}
9037				ssap.Type = &typeVar
9038			}
9039		}
9040	}
9041
9042	return nil
9043}
9044
9045// ServerSecurityAlertPolicyListResult a list of the workspace managed sql server's security alert
9046// policies.
9047type ServerSecurityAlertPolicyListResult struct {
9048	autorest.Response `json:"-"`
9049	// Value - READ-ONLY; Array of results.
9050	Value *[]ServerSecurityAlertPolicy `json:"value,omitempty"`
9051	// NextLink - READ-ONLY; Link to retrieve next page of results.
9052	NextLink *string `json:"nextLink,omitempty"`
9053}
9054
9055// MarshalJSON is the custom marshaler for ServerSecurityAlertPolicyListResult.
9056func (ssaplr ServerSecurityAlertPolicyListResult) MarshalJSON() ([]byte, error) {
9057	objectMap := make(map[string]interface{})
9058	return json.Marshal(objectMap)
9059}
9060
9061// ServerSecurityAlertPolicyListResultIterator provides access to a complete listing of
9062// ServerSecurityAlertPolicy values.
9063type ServerSecurityAlertPolicyListResultIterator struct {
9064	i    int
9065	page ServerSecurityAlertPolicyListResultPage
9066}
9067
9068// NextWithContext advances to the next value.  If there was an error making
9069// the request the iterator does not advance and the error is returned.
9070func (iter *ServerSecurityAlertPolicyListResultIterator) NextWithContext(ctx context.Context) (err error) {
9071	if tracing.IsEnabled() {
9072		ctx = tracing.StartSpan(ctx, fqdn+"/ServerSecurityAlertPolicyListResultIterator.NextWithContext")
9073		defer func() {
9074			sc := -1
9075			if iter.Response().Response.Response != nil {
9076				sc = iter.Response().Response.Response.StatusCode
9077			}
9078			tracing.EndSpan(ctx, sc, err)
9079		}()
9080	}
9081	iter.i++
9082	if iter.i < len(iter.page.Values()) {
9083		return nil
9084	}
9085	err = iter.page.NextWithContext(ctx)
9086	if err != nil {
9087		iter.i--
9088		return err
9089	}
9090	iter.i = 0
9091	return nil
9092}
9093
9094// Next advances to the next value.  If there was an error making
9095// the request the iterator does not advance and the error is returned.
9096// Deprecated: Use NextWithContext() instead.
9097func (iter *ServerSecurityAlertPolicyListResultIterator) Next() error {
9098	return iter.NextWithContext(context.Background())
9099}
9100
9101// NotDone returns true if the enumeration should be started or is not yet complete.
9102func (iter ServerSecurityAlertPolicyListResultIterator) NotDone() bool {
9103	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9104}
9105
9106// Response returns the raw server response from the last page request.
9107func (iter ServerSecurityAlertPolicyListResultIterator) Response() ServerSecurityAlertPolicyListResult {
9108	return iter.page.Response()
9109}
9110
9111// Value returns the current value or a zero-initialized value if the
9112// iterator has advanced beyond the end of the collection.
9113func (iter ServerSecurityAlertPolicyListResultIterator) Value() ServerSecurityAlertPolicy {
9114	if !iter.page.NotDone() {
9115		return ServerSecurityAlertPolicy{}
9116	}
9117	return iter.page.Values()[iter.i]
9118}
9119
9120// Creates a new instance of the ServerSecurityAlertPolicyListResultIterator type.
9121func NewServerSecurityAlertPolicyListResultIterator(page ServerSecurityAlertPolicyListResultPage) ServerSecurityAlertPolicyListResultIterator {
9122	return ServerSecurityAlertPolicyListResultIterator{page: page}
9123}
9124
9125// IsEmpty returns true if the ListResult contains no values.
9126func (ssaplr ServerSecurityAlertPolicyListResult) IsEmpty() bool {
9127	return ssaplr.Value == nil || len(*ssaplr.Value) == 0
9128}
9129
9130// hasNextLink returns true if the NextLink is not empty.
9131func (ssaplr ServerSecurityAlertPolicyListResult) hasNextLink() bool {
9132	return ssaplr.NextLink != nil && len(*ssaplr.NextLink) != 0
9133}
9134
9135// serverSecurityAlertPolicyListResultPreparer prepares a request to retrieve the next set of results.
9136// It returns nil if no more results exist.
9137func (ssaplr ServerSecurityAlertPolicyListResult) serverSecurityAlertPolicyListResultPreparer(ctx context.Context) (*http.Request, error) {
9138	if !ssaplr.hasNextLink() {
9139		return nil, nil
9140	}
9141	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9142		autorest.AsJSON(),
9143		autorest.AsGet(),
9144		autorest.WithBaseURL(to.String(ssaplr.NextLink)))
9145}
9146
9147// ServerSecurityAlertPolicyListResultPage contains a page of ServerSecurityAlertPolicy values.
9148type ServerSecurityAlertPolicyListResultPage struct {
9149	fn     func(context.Context, ServerSecurityAlertPolicyListResult) (ServerSecurityAlertPolicyListResult, error)
9150	ssaplr ServerSecurityAlertPolicyListResult
9151}
9152
9153// NextWithContext advances to the next page of values.  If there was an error making
9154// the request the page does not advance and the error is returned.
9155func (page *ServerSecurityAlertPolicyListResultPage) NextWithContext(ctx context.Context) (err error) {
9156	if tracing.IsEnabled() {
9157		ctx = tracing.StartSpan(ctx, fqdn+"/ServerSecurityAlertPolicyListResultPage.NextWithContext")
9158		defer func() {
9159			sc := -1
9160			if page.Response().Response.Response != nil {
9161				sc = page.Response().Response.Response.StatusCode
9162			}
9163			tracing.EndSpan(ctx, sc, err)
9164		}()
9165	}
9166	for {
9167		next, err := page.fn(ctx, page.ssaplr)
9168		if err != nil {
9169			return err
9170		}
9171		page.ssaplr = next
9172		if !next.hasNextLink() || !next.IsEmpty() {
9173			break
9174		}
9175	}
9176	return nil
9177}
9178
9179// Next advances to the next page of values.  If there was an error making
9180// the request the page does not advance and the error is returned.
9181// Deprecated: Use NextWithContext() instead.
9182func (page *ServerSecurityAlertPolicyListResultPage) Next() error {
9183	return page.NextWithContext(context.Background())
9184}
9185
9186// NotDone returns true if the page enumeration should be started or is not yet complete.
9187func (page ServerSecurityAlertPolicyListResultPage) NotDone() bool {
9188	return !page.ssaplr.IsEmpty()
9189}
9190
9191// Response returns the raw server response from the last page request.
9192func (page ServerSecurityAlertPolicyListResultPage) Response() ServerSecurityAlertPolicyListResult {
9193	return page.ssaplr
9194}
9195
9196// Values returns the slice of values for the current page or nil if there are no values.
9197func (page ServerSecurityAlertPolicyListResultPage) Values() []ServerSecurityAlertPolicy {
9198	if page.ssaplr.IsEmpty() {
9199		return nil
9200	}
9201	return *page.ssaplr.Value
9202}
9203
9204// Creates a new instance of the ServerSecurityAlertPolicyListResultPage type.
9205func NewServerSecurityAlertPolicyListResultPage(cur ServerSecurityAlertPolicyListResult, getNextPage func(context.Context, ServerSecurityAlertPolicyListResult) (ServerSecurityAlertPolicyListResult, error)) ServerSecurityAlertPolicyListResultPage {
9206	return ServerSecurityAlertPolicyListResultPage{
9207		fn:     getNextPage,
9208		ssaplr: cur,
9209	}
9210}
9211
9212// ServerSecurityAlertPolicyProperties properties of a security alert policy.
9213type ServerSecurityAlertPolicyProperties struct {
9214	// State - Specifies the state of the policy, whether it is enabled or disabled or a policy has not been applied yet on the specific server. Possible values include: 'SecurityAlertPolicyStateNew', 'SecurityAlertPolicyStateEnabled', 'SecurityAlertPolicyStateDisabled'
9215	State SecurityAlertPolicyState `json:"state,omitempty"`
9216	// DisabledAlerts - Specifies an array of alerts that are disabled. Allowed values are: Sql_Injection, Sql_Injection_Vulnerability, Access_Anomaly, Data_Exfiltration, Unsafe_Action
9217	DisabledAlerts *[]string `json:"disabledAlerts,omitempty"`
9218	// EmailAddresses - Specifies an array of e-mail addresses to which the alert is sent.
9219	EmailAddresses *[]string `json:"emailAddresses,omitempty"`
9220	// EmailAccountAdmins - Specifies that the alert is sent to the account administrators.
9221	EmailAccountAdmins *bool `json:"emailAccountAdmins,omitempty"`
9222	// StorageEndpoint - Specifies the blob storage endpoint (e.g. https://MyAccount.blob.core.windows.net). This blob storage will hold all Threat Detection audit logs.
9223	StorageEndpoint *string `json:"storageEndpoint,omitempty"`
9224	// StorageAccountAccessKey - Specifies the identifier key of the Threat Detection audit storage account.
9225	StorageAccountAccessKey *string `json:"storageAccountAccessKey,omitempty"`
9226	// RetentionDays - Specifies the number of days to keep in the Threat Detection audit logs.
9227	RetentionDays *int32 `json:"retentionDays,omitempty"`
9228	// CreationTime - READ-ONLY; Specifies the UTC creation time of the policy.
9229	CreationTime *date.Time `json:"creationTime,omitempty"`
9230}
9231
9232// MarshalJSON is the custom marshaler for ServerSecurityAlertPolicyProperties.
9233func (ssapp ServerSecurityAlertPolicyProperties) MarshalJSON() ([]byte, error) {
9234	objectMap := make(map[string]interface{})
9235	if ssapp.State != "" {
9236		objectMap["state"] = ssapp.State
9237	}
9238	if ssapp.DisabledAlerts != nil {
9239		objectMap["disabledAlerts"] = ssapp.DisabledAlerts
9240	}
9241	if ssapp.EmailAddresses != nil {
9242		objectMap["emailAddresses"] = ssapp.EmailAddresses
9243	}
9244	if ssapp.EmailAccountAdmins != nil {
9245		objectMap["emailAccountAdmins"] = ssapp.EmailAccountAdmins
9246	}
9247	if ssapp.StorageEndpoint != nil {
9248		objectMap["storageEndpoint"] = ssapp.StorageEndpoint
9249	}
9250	if ssapp.StorageAccountAccessKey != nil {
9251		objectMap["storageAccountAccessKey"] = ssapp.StorageAccountAccessKey
9252	}
9253	if ssapp.RetentionDays != nil {
9254		objectMap["retentionDays"] = ssapp.RetentionDays
9255	}
9256	return json.Marshal(objectMap)
9257}
9258
9259// ServerUsage represents server metrics.
9260type ServerUsage struct {
9261	// Name - READ-ONLY; Name of the server usage metric.
9262	Name *string `json:"name,omitempty"`
9263	// ResourceName - READ-ONLY; The name of the resource.
9264	ResourceName *string `json:"resourceName,omitempty"`
9265	// DisplayName - READ-ONLY; The metric display name.
9266	DisplayName *string `json:"displayName,omitempty"`
9267	// CurrentValue - READ-ONLY; The current value of the metric.
9268	CurrentValue *float64 `json:"currentValue,omitempty"`
9269	// Limit - READ-ONLY; The current limit of the metric.
9270	Limit *float64 `json:"limit,omitempty"`
9271	// Unit - READ-ONLY; The units of the metric.
9272	Unit *string `json:"unit,omitempty"`
9273	// NextResetTime - READ-ONLY; The next reset time for the metric (ISO8601 format).
9274	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
9275}
9276
9277// MarshalJSON is the custom marshaler for ServerUsage.
9278func (su ServerUsage) MarshalJSON() ([]byte, error) {
9279	objectMap := make(map[string]interface{})
9280	return json.Marshal(objectMap)
9281}
9282
9283// ServerUsageListResult represents the response to a list server metrics request.
9284type ServerUsageListResult struct {
9285	autorest.Response `json:"-"`
9286	// Value - The list of server metrics for the server.
9287	Value *[]ServerUsage `json:"value,omitempty"`
9288	// NextLink - READ-ONLY; Link to retrieve next page of results.
9289	NextLink *string `json:"nextLink,omitempty"`
9290}
9291
9292// MarshalJSON is the custom marshaler for ServerUsageListResult.
9293func (sulr ServerUsageListResult) MarshalJSON() ([]byte, error) {
9294	objectMap := make(map[string]interface{})
9295	if sulr.Value != nil {
9296		objectMap["value"] = sulr.Value
9297	}
9298	return json.Marshal(objectMap)
9299}
9300
9301// ServerUsageListResultIterator provides access to a complete listing of ServerUsage values.
9302type ServerUsageListResultIterator struct {
9303	i    int
9304	page ServerUsageListResultPage
9305}
9306
9307// NextWithContext advances to the next value.  If there was an error making
9308// the request the iterator does not advance and the error is returned.
9309func (iter *ServerUsageListResultIterator) NextWithContext(ctx context.Context) (err error) {
9310	if tracing.IsEnabled() {
9311		ctx = tracing.StartSpan(ctx, fqdn+"/ServerUsageListResultIterator.NextWithContext")
9312		defer func() {
9313			sc := -1
9314			if iter.Response().Response.Response != nil {
9315				sc = iter.Response().Response.Response.StatusCode
9316			}
9317			tracing.EndSpan(ctx, sc, err)
9318		}()
9319	}
9320	iter.i++
9321	if iter.i < len(iter.page.Values()) {
9322		return nil
9323	}
9324	err = iter.page.NextWithContext(ctx)
9325	if err != nil {
9326		iter.i--
9327		return err
9328	}
9329	iter.i = 0
9330	return nil
9331}
9332
9333// Next advances to the next value.  If there was an error making
9334// the request the iterator does not advance and the error is returned.
9335// Deprecated: Use NextWithContext() instead.
9336func (iter *ServerUsageListResultIterator) Next() error {
9337	return iter.NextWithContext(context.Background())
9338}
9339
9340// NotDone returns true if the enumeration should be started or is not yet complete.
9341func (iter ServerUsageListResultIterator) NotDone() bool {
9342	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9343}
9344
9345// Response returns the raw server response from the last page request.
9346func (iter ServerUsageListResultIterator) Response() ServerUsageListResult {
9347	return iter.page.Response()
9348}
9349
9350// Value returns the current value or a zero-initialized value if the
9351// iterator has advanced beyond the end of the collection.
9352func (iter ServerUsageListResultIterator) Value() ServerUsage {
9353	if !iter.page.NotDone() {
9354		return ServerUsage{}
9355	}
9356	return iter.page.Values()[iter.i]
9357}
9358
9359// Creates a new instance of the ServerUsageListResultIterator type.
9360func NewServerUsageListResultIterator(page ServerUsageListResultPage) ServerUsageListResultIterator {
9361	return ServerUsageListResultIterator{page: page}
9362}
9363
9364// IsEmpty returns true if the ListResult contains no values.
9365func (sulr ServerUsageListResult) IsEmpty() bool {
9366	return sulr.Value == nil || len(*sulr.Value) == 0
9367}
9368
9369// hasNextLink returns true if the NextLink is not empty.
9370func (sulr ServerUsageListResult) hasNextLink() bool {
9371	return sulr.NextLink != nil && len(*sulr.NextLink) != 0
9372}
9373
9374// serverUsageListResultPreparer prepares a request to retrieve the next set of results.
9375// It returns nil if no more results exist.
9376func (sulr ServerUsageListResult) serverUsageListResultPreparer(ctx context.Context) (*http.Request, error) {
9377	if !sulr.hasNextLink() {
9378		return nil, nil
9379	}
9380	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9381		autorest.AsJSON(),
9382		autorest.AsGet(),
9383		autorest.WithBaseURL(to.String(sulr.NextLink)))
9384}
9385
9386// ServerUsageListResultPage contains a page of ServerUsage values.
9387type ServerUsageListResultPage struct {
9388	fn   func(context.Context, ServerUsageListResult) (ServerUsageListResult, error)
9389	sulr ServerUsageListResult
9390}
9391
9392// NextWithContext advances to the next page of values.  If there was an error making
9393// the request the page does not advance and the error is returned.
9394func (page *ServerUsageListResultPage) NextWithContext(ctx context.Context) (err error) {
9395	if tracing.IsEnabled() {
9396		ctx = tracing.StartSpan(ctx, fqdn+"/ServerUsageListResultPage.NextWithContext")
9397		defer func() {
9398			sc := -1
9399			if page.Response().Response.Response != nil {
9400				sc = page.Response().Response.Response.StatusCode
9401			}
9402			tracing.EndSpan(ctx, sc, err)
9403		}()
9404	}
9405	for {
9406		next, err := page.fn(ctx, page.sulr)
9407		if err != nil {
9408			return err
9409		}
9410		page.sulr = next
9411		if !next.hasNextLink() || !next.IsEmpty() {
9412			break
9413		}
9414	}
9415	return nil
9416}
9417
9418// Next advances to the next page of values.  If there was an error making
9419// the request the page does not advance and the error is returned.
9420// Deprecated: Use NextWithContext() instead.
9421func (page *ServerUsageListResultPage) Next() error {
9422	return page.NextWithContext(context.Background())
9423}
9424
9425// NotDone returns true if the page enumeration should be started or is not yet complete.
9426func (page ServerUsageListResultPage) NotDone() bool {
9427	return !page.sulr.IsEmpty()
9428}
9429
9430// Response returns the raw server response from the last page request.
9431func (page ServerUsageListResultPage) Response() ServerUsageListResult {
9432	return page.sulr
9433}
9434
9435// Values returns the slice of values for the current page or nil if there are no values.
9436func (page ServerUsageListResultPage) Values() []ServerUsage {
9437	if page.sulr.IsEmpty() {
9438		return nil
9439	}
9440	return *page.sulr.Value
9441}
9442
9443// Creates a new instance of the ServerUsageListResultPage type.
9444func NewServerUsageListResultPage(cur ServerUsageListResult, getNextPage func(context.Context, ServerUsageListResult) (ServerUsageListResult, error)) ServerUsageListResultPage {
9445	return ServerUsageListResultPage{
9446		fn:   getNextPage,
9447		sulr: cur,
9448	}
9449}
9450
9451// ServerVulnerabilityAssessment a server vulnerability assessment.
9452type ServerVulnerabilityAssessment struct {
9453	autorest.Response `json:"-"`
9454	// ServerVulnerabilityAssessmentProperties - Resource properties.
9455	*ServerVulnerabilityAssessmentProperties `json:"properties,omitempty"`
9456	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
9457	ID *string `json:"id,omitempty"`
9458	// Name - READ-ONLY; The name of the resource
9459	Name *string `json:"name,omitempty"`
9460	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
9461	Type *string `json:"type,omitempty"`
9462}
9463
9464// MarshalJSON is the custom marshaler for ServerVulnerabilityAssessment.
9465func (sva ServerVulnerabilityAssessment) MarshalJSON() ([]byte, error) {
9466	objectMap := make(map[string]interface{})
9467	if sva.ServerVulnerabilityAssessmentProperties != nil {
9468		objectMap["properties"] = sva.ServerVulnerabilityAssessmentProperties
9469	}
9470	return json.Marshal(objectMap)
9471}
9472
9473// UnmarshalJSON is the custom unmarshaler for ServerVulnerabilityAssessment struct.
9474func (sva *ServerVulnerabilityAssessment) UnmarshalJSON(body []byte) error {
9475	var m map[string]*json.RawMessage
9476	err := json.Unmarshal(body, &m)
9477	if err != nil {
9478		return err
9479	}
9480	for k, v := range m {
9481		switch k {
9482		case "properties":
9483			if v != nil {
9484				var serverVulnerabilityAssessmentProperties ServerVulnerabilityAssessmentProperties
9485				err = json.Unmarshal(*v, &serverVulnerabilityAssessmentProperties)
9486				if err != nil {
9487					return err
9488				}
9489				sva.ServerVulnerabilityAssessmentProperties = &serverVulnerabilityAssessmentProperties
9490			}
9491		case "id":
9492			if v != nil {
9493				var ID string
9494				err = json.Unmarshal(*v, &ID)
9495				if err != nil {
9496					return err
9497				}
9498				sva.ID = &ID
9499			}
9500		case "name":
9501			if v != nil {
9502				var name string
9503				err = json.Unmarshal(*v, &name)
9504				if err != nil {
9505					return err
9506				}
9507				sva.Name = &name
9508			}
9509		case "type":
9510			if v != nil {
9511				var typeVar string
9512				err = json.Unmarshal(*v, &typeVar)
9513				if err != nil {
9514					return err
9515				}
9516				sva.Type = &typeVar
9517			}
9518		}
9519	}
9520
9521	return nil
9522}
9523
9524// ServerVulnerabilityAssessmentListResult a list of the server's vulnerability assessments.
9525type ServerVulnerabilityAssessmentListResult struct {
9526	autorest.Response `json:"-"`
9527	// Value - READ-ONLY; Array of results.
9528	Value *[]ServerVulnerabilityAssessment `json:"value,omitempty"`
9529	// NextLink - READ-ONLY; Link to retrieve next page of results.
9530	NextLink *string `json:"nextLink,omitempty"`
9531}
9532
9533// MarshalJSON is the custom marshaler for ServerVulnerabilityAssessmentListResult.
9534func (svalr ServerVulnerabilityAssessmentListResult) MarshalJSON() ([]byte, error) {
9535	objectMap := make(map[string]interface{})
9536	return json.Marshal(objectMap)
9537}
9538
9539// ServerVulnerabilityAssessmentListResultIterator provides access to a complete listing of
9540// ServerVulnerabilityAssessment values.
9541type ServerVulnerabilityAssessmentListResultIterator struct {
9542	i    int
9543	page ServerVulnerabilityAssessmentListResultPage
9544}
9545
9546// NextWithContext advances to the next value.  If there was an error making
9547// the request the iterator does not advance and the error is returned.
9548func (iter *ServerVulnerabilityAssessmentListResultIterator) NextWithContext(ctx context.Context) (err error) {
9549	if tracing.IsEnabled() {
9550		ctx = tracing.StartSpan(ctx, fqdn+"/ServerVulnerabilityAssessmentListResultIterator.NextWithContext")
9551		defer func() {
9552			sc := -1
9553			if iter.Response().Response.Response != nil {
9554				sc = iter.Response().Response.Response.StatusCode
9555			}
9556			tracing.EndSpan(ctx, sc, err)
9557		}()
9558	}
9559	iter.i++
9560	if iter.i < len(iter.page.Values()) {
9561		return nil
9562	}
9563	err = iter.page.NextWithContext(ctx)
9564	if err != nil {
9565		iter.i--
9566		return err
9567	}
9568	iter.i = 0
9569	return nil
9570}
9571
9572// Next advances to the next value.  If there was an error making
9573// the request the iterator does not advance and the error is returned.
9574// Deprecated: Use NextWithContext() instead.
9575func (iter *ServerVulnerabilityAssessmentListResultIterator) Next() error {
9576	return iter.NextWithContext(context.Background())
9577}
9578
9579// NotDone returns true if the enumeration should be started or is not yet complete.
9580func (iter ServerVulnerabilityAssessmentListResultIterator) NotDone() bool {
9581	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9582}
9583
9584// Response returns the raw server response from the last page request.
9585func (iter ServerVulnerabilityAssessmentListResultIterator) Response() ServerVulnerabilityAssessmentListResult {
9586	return iter.page.Response()
9587}
9588
9589// Value returns the current value or a zero-initialized value if the
9590// iterator has advanced beyond the end of the collection.
9591func (iter ServerVulnerabilityAssessmentListResultIterator) Value() ServerVulnerabilityAssessment {
9592	if !iter.page.NotDone() {
9593		return ServerVulnerabilityAssessment{}
9594	}
9595	return iter.page.Values()[iter.i]
9596}
9597
9598// Creates a new instance of the ServerVulnerabilityAssessmentListResultIterator type.
9599func NewServerVulnerabilityAssessmentListResultIterator(page ServerVulnerabilityAssessmentListResultPage) ServerVulnerabilityAssessmentListResultIterator {
9600	return ServerVulnerabilityAssessmentListResultIterator{page: page}
9601}
9602
9603// IsEmpty returns true if the ListResult contains no values.
9604func (svalr ServerVulnerabilityAssessmentListResult) IsEmpty() bool {
9605	return svalr.Value == nil || len(*svalr.Value) == 0
9606}
9607
9608// hasNextLink returns true if the NextLink is not empty.
9609func (svalr ServerVulnerabilityAssessmentListResult) hasNextLink() bool {
9610	return svalr.NextLink != nil && len(*svalr.NextLink) != 0
9611}
9612
9613// serverVulnerabilityAssessmentListResultPreparer prepares a request to retrieve the next set of results.
9614// It returns nil if no more results exist.
9615func (svalr ServerVulnerabilityAssessmentListResult) serverVulnerabilityAssessmentListResultPreparer(ctx context.Context) (*http.Request, error) {
9616	if !svalr.hasNextLink() {
9617		return nil, nil
9618	}
9619	return autorest.Prepare((&http.Request{}).WithContext(ctx),
9620		autorest.AsJSON(),
9621		autorest.AsGet(),
9622		autorest.WithBaseURL(to.String(svalr.NextLink)))
9623}
9624
9625// ServerVulnerabilityAssessmentListResultPage contains a page of ServerVulnerabilityAssessment values.
9626type ServerVulnerabilityAssessmentListResultPage struct {
9627	fn    func(context.Context, ServerVulnerabilityAssessmentListResult) (ServerVulnerabilityAssessmentListResult, error)
9628	svalr ServerVulnerabilityAssessmentListResult
9629}
9630
9631// NextWithContext advances to the next page of values.  If there was an error making
9632// the request the page does not advance and the error is returned.
9633func (page *ServerVulnerabilityAssessmentListResultPage) NextWithContext(ctx context.Context) (err error) {
9634	if tracing.IsEnabled() {
9635		ctx = tracing.StartSpan(ctx, fqdn+"/ServerVulnerabilityAssessmentListResultPage.NextWithContext")
9636		defer func() {
9637			sc := -1
9638			if page.Response().Response.Response != nil {
9639				sc = page.Response().Response.Response.StatusCode
9640			}
9641			tracing.EndSpan(ctx, sc, err)
9642		}()
9643	}
9644	for {
9645		next, err := page.fn(ctx, page.svalr)
9646		if err != nil {
9647			return err
9648		}
9649		page.svalr = next
9650		if !next.hasNextLink() || !next.IsEmpty() {
9651			break
9652		}
9653	}
9654	return nil
9655}
9656
9657// Next advances to the next page of values.  If there was an error making
9658// the request the page does not advance and the error is returned.
9659// Deprecated: Use NextWithContext() instead.
9660func (page *ServerVulnerabilityAssessmentListResultPage) Next() error {
9661	return page.NextWithContext(context.Background())
9662}
9663
9664// NotDone returns true if the page enumeration should be started or is not yet complete.
9665func (page ServerVulnerabilityAssessmentListResultPage) NotDone() bool {
9666	return !page.svalr.IsEmpty()
9667}
9668
9669// Response returns the raw server response from the last page request.
9670func (page ServerVulnerabilityAssessmentListResultPage) Response() ServerVulnerabilityAssessmentListResult {
9671	return page.svalr
9672}
9673
9674// Values returns the slice of values for the current page or nil if there are no values.
9675func (page ServerVulnerabilityAssessmentListResultPage) Values() []ServerVulnerabilityAssessment {
9676	if page.svalr.IsEmpty() {
9677		return nil
9678	}
9679	return *page.svalr.Value
9680}
9681
9682// Creates a new instance of the ServerVulnerabilityAssessmentListResultPage type.
9683func NewServerVulnerabilityAssessmentListResultPage(cur ServerVulnerabilityAssessmentListResult, getNextPage func(context.Context, ServerVulnerabilityAssessmentListResult) (ServerVulnerabilityAssessmentListResult, error)) ServerVulnerabilityAssessmentListResultPage {
9684	return ServerVulnerabilityAssessmentListResultPage{
9685		fn:    getNextPage,
9686		svalr: cur,
9687	}
9688}
9689
9690// ServerVulnerabilityAssessmentProperties properties of a server Vulnerability Assessment.
9691type ServerVulnerabilityAssessmentProperties struct {
9692	// StorageContainerPath - A blob storage container path to hold the scan results (e.g. https://myStorage.blob.core.windows.net/VaScans/).
9693	StorageContainerPath *string `json:"storageContainerPath,omitempty"`
9694	// StorageContainerSasKey - A shared access signature (SAS Key) that has read and write access to the blob container specified in 'storageContainerPath' parameter. If 'storageAccountAccessKey' isn't specified, StorageContainerSasKey is required.
9695	StorageContainerSasKey *string `json:"storageContainerSasKey,omitempty"`
9696	// StorageAccountAccessKey - Specifies the identifier key of the storage account for vulnerability assessment scan results. If 'StorageContainerSasKey' isn't specified, storageAccountAccessKey is required.
9697	StorageAccountAccessKey *string `json:"storageAccountAccessKey,omitempty"`
9698	// RecurringScans - The recurring scans settings
9699	RecurringScans *VulnerabilityAssessmentRecurringScansProperties `json:"recurringScans,omitempty"`
9700}
9701
9702// SetObject ...
9703type SetObject struct {
9704	autorest.Response `json:"-"`
9705	Value             interface{} `json:"value,omitempty"`
9706}
9707
9708// Sku SQL pool SKU
9709type Sku struct {
9710	// Tier - The service tier
9711	Tier *string `json:"tier,omitempty"`
9712	// Name - The SKU name
9713	Name *string `json:"name,omitempty"`
9714	// Capacity - If the SKU supports scale out/in then the capacity integer should be included. If scale out/in is not possible for the resource this may be omitted.
9715	Capacity *int32 `json:"capacity,omitempty"`
9716}
9717
9718// SQLPool a SQL Analytics pool
9719type SQLPool struct {
9720	autorest.Response `json:"-"`
9721	// Sku - SQL pool SKU
9722	Sku *Sku `json:"sku,omitempty"`
9723	// SQLPoolResourceProperties - SQL pool properties
9724	*SQLPoolResourceProperties `json:"properties,omitempty"`
9725	// Tags - Resource tags.
9726	Tags map[string]*string `json:"tags"`
9727	// Location - The geo-location where the resource lives
9728	Location *string `json:"location,omitempty"`
9729	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
9730	ID *string `json:"id,omitempty"`
9731	// Name - READ-ONLY; The name of the resource
9732	Name *string `json:"name,omitempty"`
9733	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
9734	Type *string `json:"type,omitempty"`
9735}
9736
9737// MarshalJSON is the custom marshaler for SQLPool.
9738func (sp SQLPool) MarshalJSON() ([]byte, error) {
9739	objectMap := make(map[string]interface{})
9740	if sp.Sku != nil {
9741		objectMap["sku"] = sp.Sku
9742	}
9743	if sp.SQLPoolResourceProperties != nil {
9744		objectMap["properties"] = sp.SQLPoolResourceProperties
9745	}
9746	if sp.Tags != nil {
9747		objectMap["tags"] = sp.Tags
9748	}
9749	if sp.Location != nil {
9750		objectMap["location"] = sp.Location
9751	}
9752	return json.Marshal(objectMap)
9753}
9754
9755// UnmarshalJSON is the custom unmarshaler for SQLPool struct.
9756func (sp *SQLPool) UnmarshalJSON(body []byte) error {
9757	var m map[string]*json.RawMessage
9758	err := json.Unmarshal(body, &m)
9759	if err != nil {
9760		return err
9761	}
9762	for k, v := range m {
9763		switch k {
9764		case "sku":
9765			if v != nil {
9766				var sku Sku
9767				err = json.Unmarshal(*v, &sku)
9768				if err != nil {
9769					return err
9770				}
9771				sp.Sku = &sku
9772			}
9773		case "properties":
9774			if v != nil {
9775				var SQLPoolResourceProperties SQLPoolResourceProperties
9776				err = json.Unmarshal(*v, &SQLPoolResourceProperties)
9777				if err != nil {
9778					return err
9779				}
9780				sp.SQLPoolResourceProperties = &SQLPoolResourceProperties
9781			}
9782		case "tags":
9783			if v != nil {
9784				var tags map[string]*string
9785				err = json.Unmarshal(*v, &tags)
9786				if err != nil {
9787					return err
9788				}
9789				sp.Tags = tags
9790			}
9791		case "location":
9792			if v != nil {
9793				var location string
9794				err = json.Unmarshal(*v, &location)
9795				if err != nil {
9796					return err
9797				}
9798				sp.Location = &location
9799			}
9800		case "id":
9801			if v != nil {
9802				var ID string
9803				err = json.Unmarshal(*v, &ID)
9804				if err != nil {
9805					return err
9806				}
9807				sp.ID = &ID
9808			}
9809		case "name":
9810			if v != nil {
9811				var name string
9812				err = json.Unmarshal(*v, &name)
9813				if err != nil {
9814					return err
9815				}
9816				sp.Name = &name
9817			}
9818		case "type":
9819			if v != nil {
9820				var typeVar string
9821				err = json.Unmarshal(*v, &typeVar)
9822				if err != nil {
9823					return err
9824				}
9825				sp.Type = &typeVar
9826			}
9827		}
9828	}
9829
9830	return nil
9831}
9832
9833// SQLPoolBlobAuditingPolicy a Sql pool blob auditing policy.
9834type SQLPoolBlobAuditingPolicy struct {
9835	autorest.Response `json:"-"`
9836	// Kind - READ-ONLY; Resource kind.
9837	Kind *string `json:"kind,omitempty"`
9838	// SQLPoolBlobAuditingPolicyProperties - Resource properties.
9839	*SQLPoolBlobAuditingPolicyProperties `json:"properties,omitempty"`
9840	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
9841	ID *string `json:"id,omitempty"`
9842	// Name - READ-ONLY; The name of the resource
9843	Name *string `json:"name,omitempty"`
9844	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
9845	Type *string `json:"type,omitempty"`
9846}
9847
9848// MarshalJSON is the custom marshaler for SQLPoolBlobAuditingPolicy.
9849func (spbap SQLPoolBlobAuditingPolicy) MarshalJSON() ([]byte, error) {
9850	objectMap := make(map[string]interface{})
9851	if spbap.SQLPoolBlobAuditingPolicyProperties != nil {
9852		objectMap["properties"] = spbap.SQLPoolBlobAuditingPolicyProperties
9853	}
9854	return json.Marshal(objectMap)
9855}
9856
9857// UnmarshalJSON is the custom unmarshaler for SQLPoolBlobAuditingPolicy struct.
9858func (spbap *SQLPoolBlobAuditingPolicy) UnmarshalJSON(body []byte) error {
9859	var m map[string]*json.RawMessage
9860	err := json.Unmarshal(body, &m)
9861	if err != nil {
9862		return err
9863	}
9864	for k, v := range m {
9865		switch k {
9866		case "kind":
9867			if v != nil {
9868				var kind string
9869				err = json.Unmarshal(*v, &kind)
9870				if err != nil {
9871					return err
9872				}
9873				spbap.Kind = &kind
9874			}
9875		case "properties":
9876			if v != nil {
9877				var SQLPoolBlobAuditingPolicyProperties SQLPoolBlobAuditingPolicyProperties
9878				err = json.Unmarshal(*v, &SQLPoolBlobAuditingPolicyProperties)
9879				if err != nil {
9880					return err
9881				}
9882				spbap.SQLPoolBlobAuditingPolicyProperties = &SQLPoolBlobAuditingPolicyProperties
9883			}
9884		case "id":
9885			if v != nil {
9886				var ID string
9887				err = json.Unmarshal(*v, &ID)
9888				if err != nil {
9889					return err
9890				}
9891				spbap.ID = &ID
9892			}
9893		case "name":
9894			if v != nil {
9895				var name string
9896				err = json.Unmarshal(*v, &name)
9897				if err != nil {
9898					return err
9899				}
9900				spbap.Name = &name
9901			}
9902		case "type":
9903			if v != nil {
9904				var typeVar string
9905				err = json.Unmarshal(*v, &typeVar)
9906				if err != nil {
9907					return err
9908				}
9909				spbap.Type = &typeVar
9910			}
9911		}
9912	}
9913
9914	return nil
9915}
9916
9917// SQLPoolBlobAuditingPolicyListResult a list of Sql pool auditing settings.
9918type SQLPoolBlobAuditingPolicyListResult struct {
9919	autorest.Response `json:"-"`
9920	// Value - READ-ONLY; Array of results.
9921	Value *[]SQLPoolBlobAuditingPolicy `json:"value,omitempty"`
9922	// NextLink - READ-ONLY; Link to retrieve next page of results.
9923	NextLink *string `json:"nextLink,omitempty"`
9924}
9925
9926// MarshalJSON is the custom marshaler for SQLPoolBlobAuditingPolicyListResult.
9927func (spbaplr SQLPoolBlobAuditingPolicyListResult) MarshalJSON() ([]byte, error) {
9928	objectMap := make(map[string]interface{})
9929	return json.Marshal(objectMap)
9930}
9931
9932// SQLPoolBlobAuditingPolicyListResultIterator provides access to a complete listing of
9933// SQLPoolBlobAuditingPolicy values.
9934type SQLPoolBlobAuditingPolicyListResultIterator struct {
9935	i    int
9936	page SQLPoolBlobAuditingPolicyListResultPage
9937}
9938
9939// NextWithContext advances to the next value.  If there was an error making
9940// the request the iterator does not advance and the error is returned.
9941func (iter *SQLPoolBlobAuditingPolicyListResultIterator) NextWithContext(ctx context.Context) (err error) {
9942	if tracing.IsEnabled() {
9943		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolBlobAuditingPolicyListResultIterator.NextWithContext")
9944		defer func() {
9945			sc := -1
9946			if iter.Response().Response.Response != nil {
9947				sc = iter.Response().Response.Response.StatusCode
9948			}
9949			tracing.EndSpan(ctx, sc, err)
9950		}()
9951	}
9952	iter.i++
9953	if iter.i < len(iter.page.Values()) {
9954		return nil
9955	}
9956	err = iter.page.NextWithContext(ctx)
9957	if err != nil {
9958		iter.i--
9959		return err
9960	}
9961	iter.i = 0
9962	return nil
9963}
9964
9965// Next advances to the next value.  If there was an error making
9966// the request the iterator does not advance and the error is returned.
9967// Deprecated: Use NextWithContext() instead.
9968func (iter *SQLPoolBlobAuditingPolicyListResultIterator) Next() error {
9969	return iter.NextWithContext(context.Background())
9970}
9971
9972// NotDone returns true if the enumeration should be started or is not yet complete.
9973func (iter SQLPoolBlobAuditingPolicyListResultIterator) NotDone() bool {
9974	return iter.page.NotDone() && iter.i < len(iter.page.Values())
9975}
9976
9977// Response returns the raw server response from the last page request.
9978func (iter SQLPoolBlobAuditingPolicyListResultIterator) Response() SQLPoolBlobAuditingPolicyListResult {
9979	return iter.page.Response()
9980}
9981
9982// Value returns the current value or a zero-initialized value if the
9983// iterator has advanced beyond the end of the collection.
9984func (iter SQLPoolBlobAuditingPolicyListResultIterator) Value() SQLPoolBlobAuditingPolicy {
9985	if !iter.page.NotDone() {
9986		return SQLPoolBlobAuditingPolicy{}
9987	}
9988	return iter.page.Values()[iter.i]
9989}
9990
9991// Creates a new instance of the SQLPoolBlobAuditingPolicyListResultIterator type.
9992func NewSQLPoolBlobAuditingPolicyListResultIterator(page SQLPoolBlobAuditingPolicyListResultPage) SQLPoolBlobAuditingPolicyListResultIterator {
9993	return SQLPoolBlobAuditingPolicyListResultIterator{page: page}
9994}
9995
9996// IsEmpty returns true if the ListResult contains no values.
9997func (spbaplr SQLPoolBlobAuditingPolicyListResult) IsEmpty() bool {
9998	return spbaplr.Value == nil || len(*spbaplr.Value) == 0
9999}
10000
10001// hasNextLink returns true if the NextLink is not empty.
10002func (spbaplr SQLPoolBlobAuditingPolicyListResult) hasNextLink() bool {
10003	return spbaplr.NextLink != nil && len(*spbaplr.NextLink) != 0
10004}
10005
10006// sQLPoolBlobAuditingPolicyListResultPreparer prepares a request to retrieve the next set of results.
10007// It returns nil if no more results exist.
10008func (spbaplr SQLPoolBlobAuditingPolicyListResult) sQLPoolBlobAuditingPolicyListResultPreparer(ctx context.Context) (*http.Request, error) {
10009	if !spbaplr.hasNextLink() {
10010		return nil, nil
10011	}
10012	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10013		autorest.AsJSON(),
10014		autorest.AsGet(),
10015		autorest.WithBaseURL(to.String(spbaplr.NextLink)))
10016}
10017
10018// SQLPoolBlobAuditingPolicyListResultPage contains a page of SQLPoolBlobAuditingPolicy values.
10019type SQLPoolBlobAuditingPolicyListResultPage struct {
10020	fn      func(context.Context, SQLPoolBlobAuditingPolicyListResult) (SQLPoolBlobAuditingPolicyListResult, error)
10021	spbaplr SQLPoolBlobAuditingPolicyListResult
10022}
10023
10024// NextWithContext advances to the next page of values.  If there was an error making
10025// the request the page does not advance and the error is returned.
10026func (page *SQLPoolBlobAuditingPolicyListResultPage) NextWithContext(ctx context.Context) (err error) {
10027	if tracing.IsEnabled() {
10028		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolBlobAuditingPolicyListResultPage.NextWithContext")
10029		defer func() {
10030			sc := -1
10031			if page.Response().Response.Response != nil {
10032				sc = page.Response().Response.Response.StatusCode
10033			}
10034			tracing.EndSpan(ctx, sc, err)
10035		}()
10036	}
10037	for {
10038		next, err := page.fn(ctx, page.spbaplr)
10039		if err != nil {
10040			return err
10041		}
10042		page.spbaplr = next
10043		if !next.hasNextLink() || !next.IsEmpty() {
10044			break
10045		}
10046	}
10047	return nil
10048}
10049
10050// Next advances to the next page of values.  If there was an error making
10051// the request the page does not advance and the error is returned.
10052// Deprecated: Use NextWithContext() instead.
10053func (page *SQLPoolBlobAuditingPolicyListResultPage) Next() error {
10054	return page.NextWithContext(context.Background())
10055}
10056
10057// NotDone returns true if the page enumeration should be started or is not yet complete.
10058func (page SQLPoolBlobAuditingPolicyListResultPage) NotDone() bool {
10059	return !page.spbaplr.IsEmpty()
10060}
10061
10062// Response returns the raw server response from the last page request.
10063func (page SQLPoolBlobAuditingPolicyListResultPage) Response() SQLPoolBlobAuditingPolicyListResult {
10064	return page.spbaplr
10065}
10066
10067// Values returns the slice of values for the current page or nil if there are no values.
10068func (page SQLPoolBlobAuditingPolicyListResultPage) Values() []SQLPoolBlobAuditingPolicy {
10069	if page.spbaplr.IsEmpty() {
10070		return nil
10071	}
10072	return *page.spbaplr.Value
10073}
10074
10075// Creates a new instance of the SQLPoolBlobAuditingPolicyListResultPage type.
10076func NewSQLPoolBlobAuditingPolicyListResultPage(cur SQLPoolBlobAuditingPolicyListResult, getNextPage func(context.Context, SQLPoolBlobAuditingPolicyListResult) (SQLPoolBlobAuditingPolicyListResult, error)) SQLPoolBlobAuditingPolicyListResultPage {
10077	return SQLPoolBlobAuditingPolicyListResultPage{
10078		fn:      getNextPage,
10079		spbaplr: cur,
10080	}
10081}
10082
10083// SQLPoolBlobAuditingPolicyProperties properties of a Sql pool blob auditing policy.
10084type SQLPoolBlobAuditingPolicyProperties struct {
10085	// State - Specifies the state of the policy. If state is Enabled, storageEndpoint or isAzureMonitorTargetEnabled are required. Possible values include: 'BlobAuditingPolicyStateEnabled', 'BlobAuditingPolicyStateDisabled'
10086	State BlobAuditingPolicyState `json:"state,omitempty"`
10087	// StorageEndpoint - Specifies the blob storage endpoint (e.g. https://MyAccount.blob.core.windows.net). If state is Enabled, storageEndpoint is required.
10088	StorageEndpoint *string `json:"storageEndpoint,omitempty"`
10089	// StorageAccountAccessKey - Specifies the identifier key of the auditing storage account. If state is Enabled and storageEndpoint is specified, storageAccountAccessKey is required.
10090	StorageAccountAccessKey *string `json:"storageAccountAccessKey,omitempty"`
10091	// RetentionDays - Specifies the number of days to keep in the audit logs in the storage account.
10092	RetentionDays *int32 `json:"retentionDays,omitempty"`
10093	// AuditActionsAndGroups - Specifies the Actions-Groups and Actions to audit.
10094	//
10095	// The recommended set of action groups to use is the following combination - this will audit all the queries and stored procedures executed against the database, as well as successful and failed logins:
10096	//
10097	// BATCH_COMPLETED_GROUP,
10098	// SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP,
10099	// FAILED_DATABASE_AUTHENTICATION_GROUP.
10100	//
10101	// This above combination is also the set that is configured by default when enabling auditing from the Azure portal.
10102	//
10103	// The supported action groups to audit are (note: choose only specific groups that cover your auditing needs. Using unnecessary groups could lead to very large quantities of audit records):
10104	//
10105	// APPLICATION_ROLE_CHANGE_PASSWORD_GROUP
10106	// BACKUP_RESTORE_GROUP
10107	// DATABASE_LOGOUT_GROUP
10108	// DATABASE_OBJECT_CHANGE_GROUP
10109	// DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP
10110	// DATABASE_OBJECT_PERMISSION_CHANGE_GROUP
10111	// DATABASE_OPERATION_GROUP
10112	// DATABASE_PERMISSION_CHANGE_GROUP
10113	// DATABASE_PRINCIPAL_CHANGE_GROUP
10114	// DATABASE_PRINCIPAL_IMPERSONATION_GROUP
10115	// DATABASE_ROLE_MEMBER_CHANGE_GROUP
10116	// FAILED_DATABASE_AUTHENTICATION_GROUP
10117	// SCHEMA_OBJECT_ACCESS_GROUP
10118	// SCHEMA_OBJECT_CHANGE_GROUP
10119	// SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP
10120	// SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP
10121	// SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
10122	// USER_CHANGE_PASSWORD_GROUP
10123	// BATCH_STARTED_GROUP
10124	// BATCH_COMPLETED_GROUP
10125	//
10126	// These are groups that cover all sql statements and stored procedures executed against the database, and should not be used in combination with other groups as this will result in duplicate audit logs.
10127	//
10128	// For more information, see [Database-Level Audit Action Groups](https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-action-groups).
10129	//
10130	// For Database auditing policy, specific Actions can also be specified (note that Actions cannot be specified for Server auditing policy). The supported actions to audit are:
10131	// SELECT
10132	// UPDATE
10133	// INSERT
10134	// DELETE
10135	// EXECUTE
10136	// RECEIVE
10137	// REFERENCES
10138	//
10139	// The general form for defining an action to be audited is:
10140	// {action} ON {object} BY {principal}
10141	//
10142	// Note that <object> in the above format can refer to an object like a table, view, or stored procedure, or an entire database or schema. For the latter cases, the forms DATABASE::{db_name} and SCHEMA::{schema_name} are used, respectively.
10143	//
10144	// For example:
10145	// SELECT on dbo.myTable by public
10146	// SELECT on DATABASE::myDatabase by public
10147	// SELECT on SCHEMA::mySchema by public
10148	//
10149	// For more information, see [Database-Level Audit Actions](https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions#database-level-audit-actions)
10150	AuditActionsAndGroups *[]string `json:"auditActionsAndGroups,omitempty"`
10151	// StorageAccountSubscriptionID - Specifies the blob storage subscription Id.
10152	StorageAccountSubscriptionID *uuid.UUID `json:"storageAccountSubscriptionId,omitempty"`
10153	// IsStorageSecondaryKeyInUse - Specifies whether storageAccountAccessKey value is the storage's secondary key.
10154	IsStorageSecondaryKeyInUse *bool `json:"isStorageSecondaryKeyInUse,omitempty"`
10155	// IsAzureMonitorTargetEnabled - Specifies whether audit events are sent to Azure Monitor.
10156	// In order to send the events to Azure Monitor, specify 'state' as 'Enabled' and 'isAzureMonitorTargetEnabled' as true.
10157	//
10158	// When using REST API to configure auditing, Diagnostic Settings with 'SQLSecurityAuditEvents' diagnostic logs category on the database should be also created.
10159	// Note that for server level audit you should use the 'master' database as {databaseName}.
10160	//
10161	// Diagnostic Settings URI format:
10162	// PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/providers/microsoft.insights/diagnosticSettings/{settingsName}?api-version=2017-05-01-preview
10163	//
10164	// For more information, see [Diagnostic Settings REST API](https://go.microsoft.com/fwlink/?linkid=2033207)
10165	// or [Diagnostic Settings PowerShell](https://go.microsoft.com/fwlink/?linkid=2033043)
10166	IsAzureMonitorTargetEnabled *bool `json:"isAzureMonitorTargetEnabled,omitempty"`
10167}
10168
10169// SQLPoolBlobAuditingPolicySQLPoolOperationListResult the response to a list Sql pool operations request
10170type SQLPoolBlobAuditingPolicySQLPoolOperationListResult struct {
10171	autorest.Response `json:"-"`
10172	// Value - READ-ONLY; Array of results.
10173	Value *[]SQLPoolOperation `json:"value,omitempty"`
10174	// NextLink - READ-ONLY; Link to retrieve next page of results.
10175	NextLink *string `json:"nextLink,omitempty"`
10176}
10177
10178// MarshalJSON is the custom marshaler for SQLPoolBlobAuditingPolicySQLPoolOperationListResult.
10179func (spbapspolr SQLPoolBlobAuditingPolicySQLPoolOperationListResult) MarshalJSON() ([]byte, error) {
10180	objectMap := make(map[string]interface{})
10181	return json.Marshal(objectMap)
10182}
10183
10184// SQLPoolBlobAuditingPolicySQLPoolOperationListResultIterator provides access to a complete listing of
10185// SQLPoolOperation values.
10186type SQLPoolBlobAuditingPolicySQLPoolOperationListResultIterator struct {
10187	i    int
10188	page SQLPoolBlobAuditingPolicySQLPoolOperationListResultPage
10189}
10190
10191// NextWithContext advances to the next value.  If there was an error making
10192// the request the iterator does not advance and the error is returned.
10193func (iter *SQLPoolBlobAuditingPolicySQLPoolOperationListResultIterator) NextWithContext(ctx context.Context) (err error) {
10194	if tracing.IsEnabled() {
10195		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolBlobAuditingPolicySQLPoolOperationListResultIterator.NextWithContext")
10196		defer func() {
10197			sc := -1
10198			if iter.Response().Response.Response != nil {
10199				sc = iter.Response().Response.Response.StatusCode
10200			}
10201			tracing.EndSpan(ctx, sc, err)
10202		}()
10203	}
10204	iter.i++
10205	if iter.i < len(iter.page.Values()) {
10206		return nil
10207	}
10208	err = iter.page.NextWithContext(ctx)
10209	if err != nil {
10210		iter.i--
10211		return err
10212	}
10213	iter.i = 0
10214	return nil
10215}
10216
10217// Next advances to the next value.  If there was an error making
10218// the request the iterator does not advance and the error is returned.
10219// Deprecated: Use NextWithContext() instead.
10220func (iter *SQLPoolBlobAuditingPolicySQLPoolOperationListResultIterator) Next() error {
10221	return iter.NextWithContext(context.Background())
10222}
10223
10224// NotDone returns true if the enumeration should be started or is not yet complete.
10225func (iter SQLPoolBlobAuditingPolicySQLPoolOperationListResultIterator) NotDone() bool {
10226	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10227}
10228
10229// Response returns the raw server response from the last page request.
10230func (iter SQLPoolBlobAuditingPolicySQLPoolOperationListResultIterator) Response() SQLPoolBlobAuditingPolicySQLPoolOperationListResult {
10231	return iter.page.Response()
10232}
10233
10234// Value returns the current value or a zero-initialized value if the
10235// iterator has advanced beyond the end of the collection.
10236func (iter SQLPoolBlobAuditingPolicySQLPoolOperationListResultIterator) Value() SQLPoolOperation {
10237	if !iter.page.NotDone() {
10238		return SQLPoolOperation{}
10239	}
10240	return iter.page.Values()[iter.i]
10241}
10242
10243// Creates a new instance of the SQLPoolBlobAuditingPolicySQLPoolOperationListResultIterator type.
10244func NewSQLPoolBlobAuditingPolicySQLPoolOperationListResultIterator(page SQLPoolBlobAuditingPolicySQLPoolOperationListResultPage) SQLPoolBlobAuditingPolicySQLPoolOperationListResultIterator {
10245	return SQLPoolBlobAuditingPolicySQLPoolOperationListResultIterator{page: page}
10246}
10247
10248// IsEmpty returns true if the ListResult contains no values.
10249func (spbapspolr SQLPoolBlobAuditingPolicySQLPoolOperationListResult) IsEmpty() bool {
10250	return spbapspolr.Value == nil || len(*spbapspolr.Value) == 0
10251}
10252
10253// hasNextLink returns true if the NextLink is not empty.
10254func (spbapspolr SQLPoolBlobAuditingPolicySQLPoolOperationListResult) hasNextLink() bool {
10255	return spbapspolr.NextLink != nil && len(*spbapspolr.NextLink) != 0
10256}
10257
10258// sQLPoolBlobAuditingPolicySQLPoolOperationListResultPreparer prepares a request to retrieve the next set of results.
10259// It returns nil if no more results exist.
10260func (spbapspolr SQLPoolBlobAuditingPolicySQLPoolOperationListResult) sQLPoolBlobAuditingPolicySQLPoolOperationListResultPreparer(ctx context.Context) (*http.Request, error) {
10261	if !spbapspolr.hasNextLink() {
10262		return nil, nil
10263	}
10264	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10265		autorest.AsJSON(),
10266		autorest.AsGet(),
10267		autorest.WithBaseURL(to.String(spbapspolr.NextLink)))
10268}
10269
10270// SQLPoolBlobAuditingPolicySQLPoolOperationListResultPage contains a page of SQLPoolOperation values.
10271type SQLPoolBlobAuditingPolicySQLPoolOperationListResultPage struct {
10272	fn         func(context.Context, SQLPoolBlobAuditingPolicySQLPoolOperationListResult) (SQLPoolBlobAuditingPolicySQLPoolOperationListResult, error)
10273	spbapspolr SQLPoolBlobAuditingPolicySQLPoolOperationListResult
10274}
10275
10276// NextWithContext advances to the next page of values.  If there was an error making
10277// the request the page does not advance and the error is returned.
10278func (page *SQLPoolBlobAuditingPolicySQLPoolOperationListResultPage) NextWithContext(ctx context.Context) (err error) {
10279	if tracing.IsEnabled() {
10280		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolBlobAuditingPolicySQLPoolOperationListResultPage.NextWithContext")
10281		defer func() {
10282			sc := -1
10283			if page.Response().Response.Response != nil {
10284				sc = page.Response().Response.Response.StatusCode
10285			}
10286			tracing.EndSpan(ctx, sc, err)
10287		}()
10288	}
10289	for {
10290		next, err := page.fn(ctx, page.spbapspolr)
10291		if err != nil {
10292			return err
10293		}
10294		page.spbapspolr = next
10295		if !next.hasNextLink() || !next.IsEmpty() {
10296			break
10297		}
10298	}
10299	return nil
10300}
10301
10302// Next advances to the next page of values.  If there was an error making
10303// the request the page does not advance and the error is returned.
10304// Deprecated: Use NextWithContext() instead.
10305func (page *SQLPoolBlobAuditingPolicySQLPoolOperationListResultPage) Next() error {
10306	return page.NextWithContext(context.Background())
10307}
10308
10309// NotDone returns true if the page enumeration should be started or is not yet complete.
10310func (page SQLPoolBlobAuditingPolicySQLPoolOperationListResultPage) NotDone() bool {
10311	return !page.spbapspolr.IsEmpty()
10312}
10313
10314// Response returns the raw server response from the last page request.
10315func (page SQLPoolBlobAuditingPolicySQLPoolOperationListResultPage) Response() SQLPoolBlobAuditingPolicySQLPoolOperationListResult {
10316	return page.spbapspolr
10317}
10318
10319// Values returns the slice of values for the current page or nil if there are no values.
10320func (page SQLPoolBlobAuditingPolicySQLPoolOperationListResultPage) Values() []SQLPoolOperation {
10321	if page.spbapspolr.IsEmpty() {
10322		return nil
10323	}
10324	return *page.spbapspolr.Value
10325}
10326
10327// Creates a new instance of the SQLPoolBlobAuditingPolicySQLPoolOperationListResultPage type.
10328func NewSQLPoolBlobAuditingPolicySQLPoolOperationListResultPage(cur SQLPoolBlobAuditingPolicySQLPoolOperationListResult, getNextPage func(context.Context, SQLPoolBlobAuditingPolicySQLPoolOperationListResult) (SQLPoolBlobAuditingPolicySQLPoolOperationListResult, error)) SQLPoolBlobAuditingPolicySQLPoolOperationListResultPage {
10329	return SQLPoolBlobAuditingPolicySQLPoolOperationListResultPage{
10330		fn:         getNextPage,
10331		spbapspolr: cur,
10332	}
10333}
10334
10335// SQLPoolColumn a Sql pool column resource.
10336type SQLPoolColumn struct {
10337	autorest.Response `json:"-"`
10338	// SQLPoolColumnProperties - Resource properties.
10339	*SQLPoolColumnProperties `json:"properties,omitempty"`
10340	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
10341	ID *string `json:"id,omitempty"`
10342	// Name - READ-ONLY; The name of the resource
10343	Name *string `json:"name,omitempty"`
10344	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
10345	Type *string `json:"type,omitempty"`
10346}
10347
10348// MarshalJSON is the custom marshaler for SQLPoolColumn.
10349func (spc SQLPoolColumn) MarshalJSON() ([]byte, error) {
10350	objectMap := make(map[string]interface{})
10351	if spc.SQLPoolColumnProperties != nil {
10352		objectMap["properties"] = spc.SQLPoolColumnProperties
10353	}
10354	return json.Marshal(objectMap)
10355}
10356
10357// UnmarshalJSON is the custom unmarshaler for SQLPoolColumn struct.
10358func (spc *SQLPoolColumn) UnmarshalJSON(body []byte) error {
10359	var m map[string]*json.RawMessage
10360	err := json.Unmarshal(body, &m)
10361	if err != nil {
10362		return err
10363	}
10364	for k, v := range m {
10365		switch k {
10366		case "properties":
10367			if v != nil {
10368				var SQLPoolColumnProperties SQLPoolColumnProperties
10369				err = json.Unmarshal(*v, &SQLPoolColumnProperties)
10370				if err != nil {
10371					return err
10372				}
10373				spc.SQLPoolColumnProperties = &SQLPoolColumnProperties
10374			}
10375		case "id":
10376			if v != nil {
10377				var ID string
10378				err = json.Unmarshal(*v, &ID)
10379				if err != nil {
10380					return err
10381				}
10382				spc.ID = &ID
10383			}
10384		case "name":
10385			if v != nil {
10386				var name string
10387				err = json.Unmarshal(*v, &name)
10388				if err != nil {
10389					return err
10390				}
10391				spc.Name = &name
10392			}
10393		case "type":
10394			if v != nil {
10395				var typeVar string
10396				err = json.Unmarshal(*v, &typeVar)
10397				if err != nil {
10398					return err
10399				}
10400				spc.Type = &typeVar
10401			}
10402		}
10403	}
10404
10405	return nil
10406}
10407
10408// SQLPoolColumnListResult a list of Sql pool columns.
10409type SQLPoolColumnListResult struct {
10410	autorest.Response `json:"-"`
10411	// Value - READ-ONLY; Array of results.
10412	Value *[]SQLPoolColumn `json:"value,omitempty"`
10413	// NextLink - READ-ONLY; Link to retrieve next page of results.
10414	NextLink *string `json:"nextLink,omitempty"`
10415}
10416
10417// MarshalJSON is the custom marshaler for SQLPoolColumnListResult.
10418func (spclr SQLPoolColumnListResult) MarshalJSON() ([]byte, error) {
10419	objectMap := make(map[string]interface{})
10420	return json.Marshal(objectMap)
10421}
10422
10423// SQLPoolColumnListResultIterator provides access to a complete listing of SQLPoolColumn values.
10424type SQLPoolColumnListResultIterator struct {
10425	i    int
10426	page SQLPoolColumnListResultPage
10427}
10428
10429// NextWithContext advances to the next value.  If there was an error making
10430// the request the iterator does not advance and the error is returned.
10431func (iter *SQLPoolColumnListResultIterator) NextWithContext(ctx context.Context) (err error) {
10432	if tracing.IsEnabled() {
10433		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolColumnListResultIterator.NextWithContext")
10434		defer func() {
10435			sc := -1
10436			if iter.Response().Response.Response != nil {
10437				sc = iter.Response().Response.Response.StatusCode
10438			}
10439			tracing.EndSpan(ctx, sc, err)
10440		}()
10441	}
10442	iter.i++
10443	if iter.i < len(iter.page.Values()) {
10444		return nil
10445	}
10446	err = iter.page.NextWithContext(ctx)
10447	if err != nil {
10448		iter.i--
10449		return err
10450	}
10451	iter.i = 0
10452	return nil
10453}
10454
10455// Next advances to the next value.  If there was an error making
10456// the request the iterator does not advance and the error is returned.
10457// Deprecated: Use NextWithContext() instead.
10458func (iter *SQLPoolColumnListResultIterator) Next() error {
10459	return iter.NextWithContext(context.Background())
10460}
10461
10462// NotDone returns true if the enumeration should be started or is not yet complete.
10463func (iter SQLPoolColumnListResultIterator) NotDone() bool {
10464	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10465}
10466
10467// Response returns the raw server response from the last page request.
10468func (iter SQLPoolColumnListResultIterator) Response() SQLPoolColumnListResult {
10469	return iter.page.Response()
10470}
10471
10472// Value returns the current value or a zero-initialized value if the
10473// iterator has advanced beyond the end of the collection.
10474func (iter SQLPoolColumnListResultIterator) Value() SQLPoolColumn {
10475	if !iter.page.NotDone() {
10476		return SQLPoolColumn{}
10477	}
10478	return iter.page.Values()[iter.i]
10479}
10480
10481// Creates a new instance of the SQLPoolColumnListResultIterator type.
10482func NewSQLPoolColumnListResultIterator(page SQLPoolColumnListResultPage) SQLPoolColumnListResultIterator {
10483	return SQLPoolColumnListResultIterator{page: page}
10484}
10485
10486// IsEmpty returns true if the ListResult contains no values.
10487func (spclr SQLPoolColumnListResult) IsEmpty() bool {
10488	return spclr.Value == nil || len(*spclr.Value) == 0
10489}
10490
10491// hasNextLink returns true if the NextLink is not empty.
10492func (spclr SQLPoolColumnListResult) hasNextLink() bool {
10493	return spclr.NextLink != nil && len(*spclr.NextLink) != 0
10494}
10495
10496// sQLPoolColumnListResultPreparer prepares a request to retrieve the next set of results.
10497// It returns nil if no more results exist.
10498func (spclr SQLPoolColumnListResult) sQLPoolColumnListResultPreparer(ctx context.Context) (*http.Request, error) {
10499	if !spclr.hasNextLink() {
10500		return nil, nil
10501	}
10502	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10503		autorest.AsJSON(),
10504		autorest.AsGet(),
10505		autorest.WithBaseURL(to.String(spclr.NextLink)))
10506}
10507
10508// SQLPoolColumnListResultPage contains a page of SQLPoolColumn values.
10509type SQLPoolColumnListResultPage struct {
10510	fn    func(context.Context, SQLPoolColumnListResult) (SQLPoolColumnListResult, error)
10511	spclr SQLPoolColumnListResult
10512}
10513
10514// NextWithContext advances to the next page of values.  If there was an error making
10515// the request the page does not advance and the error is returned.
10516func (page *SQLPoolColumnListResultPage) NextWithContext(ctx context.Context) (err error) {
10517	if tracing.IsEnabled() {
10518		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolColumnListResultPage.NextWithContext")
10519		defer func() {
10520			sc := -1
10521			if page.Response().Response.Response != nil {
10522				sc = page.Response().Response.Response.StatusCode
10523			}
10524			tracing.EndSpan(ctx, sc, err)
10525		}()
10526	}
10527	for {
10528		next, err := page.fn(ctx, page.spclr)
10529		if err != nil {
10530			return err
10531		}
10532		page.spclr = next
10533		if !next.hasNextLink() || !next.IsEmpty() {
10534			break
10535		}
10536	}
10537	return nil
10538}
10539
10540// Next advances to the next page of values.  If there was an error making
10541// the request the page does not advance and the error is returned.
10542// Deprecated: Use NextWithContext() instead.
10543func (page *SQLPoolColumnListResultPage) Next() error {
10544	return page.NextWithContext(context.Background())
10545}
10546
10547// NotDone returns true if the page enumeration should be started or is not yet complete.
10548func (page SQLPoolColumnListResultPage) NotDone() bool {
10549	return !page.spclr.IsEmpty()
10550}
10551
10552// Response returns the raw server response from the last page request.
10553func (page SQLPoolColumnListResultPage) Response() SQLPoolColumnListResult {
10554	return page.spclr
10555}
10556
10557// Values returns the slice of values for the current page or nil if there are no values.
10558func (page SQLPoolColumnListResultPage) Values() []SQLPoolColumn {
10559	if page.spclr.IsEmpty() {
10560		return nil
10561	}
10562	return *page.spclr.Value
10563}
10564
10565// Creates a new instance of the SQLPoolColumnListResultPage type.
10566func NewSQLPoolColumnListResultPage(cur SQLPoolColumnListResult, getNextPage func(context.Context, SQLPoolColumnListResult) (SQLPoolColumnListResult, error)) SQLPoolColumnListResultPage {
10567	return SQLPoolColumnListResultPage{
10568		fn:    getNextPage,
10569		spclr: cur,
10570	}
10571}
10572
10573// SQLPoolColumnProperties sql pool column properties.
10574type SQLPoolColumnProperties struct {
10575	// ColumnType - The column data type. Possible values include: 'Image', 'Text', 'Uniqueidentifier', 'Date', 'Time', 'Datetime2', 'Datetimeoffset', 'Tinyint', 'Smallint', 'Int', 'Smalldatetime', 'Real', 'Money', 'Datetime', 'Float', 'SQLVariant', 'Ntext', 'Bit', 'Decimal', 'Numeric', 'Smallmoney', 'Bigint', 'Hierarchyid', 'Geometry', 'Geography', 'Varbinary', 'Varchar', 'Binary', 'Char', 'Timestamp', 'Nvarchar', 'Nchar', 'XML', 'Sysname'
10576	ColumnType ColumnDataType `json:"columnType,omitempty"`
10577}
10578
10579// SQLPoolConnectionPolicy a Sql pool connection policy.
10580type SQLPoolConnectionPolicy struct {
10581	autorest.Response `json:"-"`
10582	// Kind - READ-ONLY; Resource kind.
10583	Kind *string `json:"kind,omitempty"`
10584	// Location - READ-ONLY; Resource location.
10585	Location *string `json:"location,omitempty"`
10586	// SQLPoolConnectionPolicyProperties - Resource properties.
10587	*SQLPoolConnectionPolicyProperties `json:"properties,omitempty"`
10588	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
10589	ID *string `json:"id,omitempty"`
10590	// Name - READ-ONLY; The name of the resource
10591	Name *string `json:"name,omitempty"`
10592	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
10593	Type *string `json:"type,omitempty"`
10594}
10595
10596// MarshalJSON is the custom marshaler for SQLPoolConnectionPolicy.
10597func (spcp SQLPoolConnectionPolicy) MarshalJSON() ([]byte, error) {
10598	objectMap := make(map[string]interface{})
10599	if spcp.SQLPoolConnectionPolicyProperties != nil {
10600		objectMap["properties"] = spcp.SQLPoolConnectionPolicyProperties
10601	}
10602	return json.Marshal(objectMap)
10603}
10604
10605// UnmarshalJSON is the custom unmarshaler for SQLPoolConnectionPolicy struct.
10606func (spcp *SQLPoolConnectionPolicy) UnmarshalJSON(body []byte) error {
10607	var m map[string]*json.RawMessage
10608	err := json.Unmarshal(body, &m)
10609	if err != nil {
10610		return err
10611	}
10612	for k, v := range m {
10613		switch k {
10614		case "kind":
10615			if v != nil {
10616				var kind string
10617				err = json.Unmarshal(*v, &kind)
10618				if err != nil {
10619					return err
10620				}
10621				spcp.Kind = &kind
10622			}
10623		case "location":
10624			if v != nil {
10625				var location string
10626				err = json.Unmarshal(*v, &location)
10627				if err != nil {
10628					return err
10629				}
10630				spcp.Location = &location
10631			}
10632		case "properties":
10633			if v != nil {
10634				var SQLPoolConnectionPolicyProperties SQLPoolConnectionPolicyProperties
10635				err = json.Unmarshal(*v, &SQLPoolConnectionPolicyProperties)
10636				if err != nil {
10637					return err
10638				}
10639				spcp.SQLPoolConnectionPolicyProperties = &SQLPoolConnectionPolicyProperties
10640			}
10641		case "id":
10642			if v != nil {
10643				var ID string
10644				err = json.Unmarshal(*v, &ID)
10645				if err != nil {
10646					return err
10647				}
10648				spcp.ID = &ID
10649			}
10650		case "name":
10651			if v != nil {
10652				var name string
10653				err = json.Unmarshal(*v, &name)
10654				if err != nil {
10655					return err
10656				}
10657				spcp.Name = &name
10658			}
10659		case "type":
10660			if v != nil {
10661				var typeVar string
10662				err = json.Unmarshal(*v, &typeVar)
10663				if err != nil {
10664					return err
10665				}
10666				spcp.Type = &typeVar
10667			}
10668		}
10669	}
10670
10671	return nil
10672}
10673
10674// SQLPoolConnectionPolicyProperties properties of a Sql pool connection policy.
10675type SQLPoolConnectionPolicyProperties struct {
10676	// SecurityEnabledAccess - The state of security access.
10677	SecurityEnabledAccess *string `json:"securityEnabledAccess,omitempty"`
10678	// ProxyDNSName - The fully qualified host name of the auditing proxy.
10679	ProxyDNSName *string `json:"proxyDnsName,omitempty"`
10680	// ProxyPort - The port number of the auditing proxy.
10681	ProxyPort *string `json:"proxyPort,omitempty"`
10682	// Visibility - The visibility of the auditing proxy.
10683	Visibility *string `json:"visibility,omitempty"`
10684	// UseServerDefault - Whether server default is enabled or disabled.
10685	UseServerDefault *string `json:"useServerDefault,omitempty"`
10686	// RedirectionState - The state of proxy redirection.
10687	RedirectionState *string `json:"redirectionState,omitempty"`
10688	// State - The connection policy state.
10689	State *string `json:"state,omitempty"`
10690}
10691
10692// SQLPoolInfoListResult list of SQL pools
10693type SQLPoolInfoListResult struct {
10694	autorest.Response `json:"-"`
10695	// NextLink - Link to the next page of results
10696	NextLink *string `json:"nextLink,omitempty"`
10697	// Value - List of SQL pools
10698	Value *[]SQLPool `json:"value,omitempty"`
10699}
10700
10701// SQLPoolInfoListResultIterator provides access to a complete listing of SQLPool values.
10702type SQLPoolInfoListResultIterator struct {
10703	i    int
10704	page SQLPoolInfoListResultPage
10705}
10706
10707// NextWithContext advances to the next value.  If there was an error making
10708// the request the iterator does not advance and the error is returned.
10709func (iter *SQLPoolInfoListResultIterator) NextWithContext(ctx context.Context) (err error) {
10710	if tracing.IsEnabled() {
10711		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolInfoListResultIterator.NextWithContext")
10712		defer func() {
10713			sc := -1
10714			if iter.Response().Response.Response != nil {
10715				sc = iter.Response().Response.Response.StatusCode
10716			}
10717			tracing.EndSpan(ctx, sc, err)
10718		}()
10719	}
10720	iter.i++
10721	if iter.i < len(iter.page.Values()) {
10722		return nil
10723	}
10724	err = iter.page.NextWithContext(ctx)
10725	if err != nil {
10726		iter.i--
10727		return err
10728	}
10729	iter.i = 0
10730	return nil
10731}
10732
10733// Next advances to the next value.  If there was an error making
10734// the request the iterator does not advance and the error is returned.
10735// Deprecated: Use NextWithContext() instead.
10736func (iter *SQLPoolInfoListResultIterator) Next() error {
10737	return iter.NextWithContext(context.Background())
10738}
10739
10740// NotDone returns true if the enumeration should be started or is not yet complete.
10741func (iter SQLPoolInfoListResultIterator) NotDone() bool {
10742	return iter.page.NotDone() && iter.i < len(iter.page.Values())
10743}
10744
10745// Response returns the raw server response from the last page request.
10746func (iter SQLPoolInfoListResultIterator) Response() SQLPoolInfoListResult {
10747	return iter.page.Response()
10748}
10749
10750// Value returns the current value or a zero-initialized value if the
10751// iterator has advanced beyond the end of the collection.
10752func (iter SQLPoolInfoListResultIterator) Value() SQLPool {
10753	if !iter.page.NotDone() {
10754		return SQLPool{}
10755	}
10756	return iter.page.Values()[iter.i]
10757}
10758
10759// Creates a new instance of the SQLPoolInfoListResultIterator type.
10760func NewSQLPoolInfoListResultIterator(page SQLPoolInfoListResultPage) SQLPoolInfoListResultIterator {
10761	return SQLPoolInfoListResultIterator{page: page}
10762}
10763
10764// IsEmpty returns true if the ListResult contains no values.
10765func (spilr SQLPoolInfoListResult) IsEmpty() bool {
10766	return spilr.Value == nil || len(*spilr.Value) == 0
10767}
10768
10769// hasNextLink returns true if the NextLink is not empty.
10770func (spilr SQLPoolInfoListResult) hasNextLink() bool {
10771	return spilr.NextLink != nil && len(*spilr.NextLink) != 0
10772}
10773
10774// sQLPoolInfoListResultPreparer prepares a request to retrieve the next set of results.
10775// It returns nil if no more results exist.
10776func (spilr SQLPoolInfoListResult) sQLPoolInfoListResultPreparer(ctx context.Context) (*http.Request, error) {
10777	if !spilr.hasNextLink() {
10778		return nil, nil
10779	}
10780	return autorest.Prepare((&http.Request{}).WithContext(ctx),
10781		autorest.AsJSON(),
10782		autorest.AsGet(),
10783		autorest.WithBaseURL(to.String(spilr.NextLink)))
10784}
10785
10786// SQLPoolInfoListResultPage contains a page of SQLPool values.
10787type SQLPoolInfoListResultPage struct {
10788	fn    func(context.Context, SQLPoolInfoListResult) (SQLPoolInfoListResult, error)
10789	spilr SQLPoolInfoListResult
10790}
10791
10792// NextWithContext advances to the next page of values.  If there was an error making
10793// the request the page does not advance and the error is returned.
10794func (page *SQLPoolInfoListResultPage) NextWithContext(ctx context.Context) (err error) {
10795	if tracing.IsEnabled() {
10796		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolInfoListResultPage.NextWithContext")
10797		defer func() {
10798			sc := -1
10799			if page.Response().Response.Response != nil {
10800				sc = page.Response().Response.Response.StatusCode
10801			}
10802			tracing.EndSpan(ctx, sc, err)
10803		}()
10804	}
10805	for {
10806		next, err := page.fn(ctx, page.spilr)
10807		if err != nil {
10808			return err
10809		}
10810		page.spilr = next
10811		if !next.hasNextLink() || !next.IsEmpty() {
10812			break
10813		}
10814	}
10815	return nil
10816}
10817
10818// Next advances to the next page of values.  If there was an error making
10819// the request the page does not advance and the error is returned.
10820// Deprecated: Use NextWithContext() instead.
10821func (page *SQLPoolInfoListResultPage) Next() error {
10822	return page.NextWithContext(context.Background())
10823}
10824
10825// NotDone returns true if the page enumeration should be started or is not yet complete.
10826func (page SQLPoolInfoListResultPage) NotDone() bool {
10827	return !page.spilr.IsEmpty()
10828}
10829
10830// Response returns the raw server response from the last page request.
10831func (page SQLPoolInfoListResultPage) Response() SQLPoolInfoListResult {
10832	return page.spilr
10833}
10834
10835// Values returns the slice of values for the current page or nil if there are no values.
10836func (page SQLPoolInfoListResultPage) Values() []SQLPool {
10837	if page.spilr.IsEmpty() {
10838		return nil
10839	}
10840	return *page.spilr.Value
10841}
10842
10843// Creates a new instance of the SQLPoolInfoListResultPage type.
10844func NewSQLPoolInfoListResultPage(cur SQLPoolInfoListResult, getNextPage func(context.Context, SQLPoolInfoListResult) (SQLPoolInfoListResult, error)) SQLPoolInfoListResultPage {
10845	return SQLPoolInfoListResultPage{
10846		fn:    getNextPage,
10847		spilr: cur,
10848	}
10849}
10850
10851// SQLPoolOperation a Sql pool operation.
10852type SQLPoolOperation struct {
10853	// SQLPoolOperationProperties - Resource properties.
10854	*SQLPoolOperationProperties `json:"properties,omitempty"`
10855	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
10856	ID *string `json:"id,omitempty"`
10857	// Name - READ-ONLY; The name of the resource
10858	Name *string `json:"name,omitempty"`
10859	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
10860	Type *string `json:"type,omitempty"`
10861}
10862
10863// MarshalJSON is the custom marshaler for SQLPoolOperation.
10864func (spo SQLPoolOperation) MarshalJSON() ([]byte, error) {
10865	objectMap := make(map[string]interface{})
10866	if spo.SQLPoolOperationProperties != nil {
10867		objectMap["properties"] = spo.SQLPoolOperationProperties
10868	}
10869	return json.Marshal(objectMap)
10870}
10871
10872// UnmarshalJSON is the custom unmarshaler for SQLPoolOperation struct.
10873func (spo *SQLPoolOperation) UnmarshalJSON(body []byte) error {
10874	var m map[string]*json.RawMessage
10875	err := json.Unmarshal(body, &m)
10876	if err != nil {
10877		return err
10878	}
10879	for k, v := range m {
10880		switch k {
10881		case "properties":
10882			if v != nil {
10883				var SQLPoolOperationProperties SQLPoolOperationProperties
10884				err = json.Unmarshal(*v, &SQLPoolOperationProperties)
10885				if err != nil {
10886					return err
10887				}
10888				spo.SQLPoolOperationProperties = &SQLPoolOperationProperties
10889			}
10890		case "id":
10891			if v != nil {
10892				var ID string
10893				err = json.Unmarshal(*v, &ID)
10894				if err != nil {
10895					return err
10896				}
10897				spo.ID = &ID
10898			}
10899		case "name":
10900			if v != nil {
10901				var name string
10902				err = json.Unmarshal(*v, &name)
10903				if err != nil {
10904					return err
10905				}
10906				spo.Name = &name
10907			}
10908		case "type":
10909			if v != nil {
10910				var typeVar string
10911				err = json.Unmarshal(*v, &typeVar)
10912				if err != nil {
10913					return err
10914				}
10915				spo.Type = &typeVar
10916			}
10917		}
10918	}
10919
10920	return nil
10921}
10922
10923// SQLPoolOperationProperties the properties of a Sql pool operation.
10924type SQLPoolOperationProperties struct {
10925	// DatabaseName - READ-ONLY; The name of the Sql pool the operation is being performed on.
10926	DatabaseName *string `json:"databaseName,omitempty"`
10927	// Operation - READ-ONLY; The name of operation.
10928	Operation *string `json:"operation,omitempty"`
10929	// OperationFriendlyName - READ-ONLY; The friendly name of operation.
10930	OperationFriendlyName *string `json:"operationFriendlyName,omitempty"`
10931	// PercentComplete - READ-ONLY; The percentage of the operation completed.
10932	PercentComplete *int32 `json:"percentComplete,omitempty"`
10933	// ServerName - READ-ONLY; The name of the server.
10934	ServerName *string `json:"serverName,omitempty"`
10935	// StartTime - READ-ONLY; The operation start time.
10936	StartTime *date.Time `json:"startTime,omitempty"`
10937	// State - READ-ONLY; The operation state. Possible values include: 'Pending', 'InProgress', 'Succeeded', 'Failed', 'CancelInProgress', 'Cancelled'
10938	State ManagementOperationState `json:"state,omitempty"`
10939	// ErrorCode - READ-ONLY; The operation error code.
10940	ErrorCode *int32 `json:"errorCode,omitempty"`
10941	// ErrorDescription - READ-ONLY; The operation error description.
10942	ErrorDescription *string `json:"errorDescription,omitempty"`
10943	// ErrorSeverity - READ-ONLY; The operation error severity.
10944	ErrorSeverity *int32 `json:"errorSeverity,omitempty"`
10945	// IsUserError - READ-ONLY; Whether or not the error is a user error.
10946	IsUserError *bool `json:"isUserError,omitempty"`
10947	// EstimatedCompletionTime - READ-ONLY; The estimated completion time of the operation.
10948	EstimatedCompletionTime *date.Time `json:"estimatedCompletionTime,omitempty"`
10949	// Description - READ-ONLY; The operation description.
10950	Description *string `json:"description,omitempty"`
10951	// IsCancellable - READ-ONLY; Whether the operation can be cancelled.
10952	IsCancellable *bool `json:"isCancellable,omitempty"`
10953}
10954
10955// MarshalJSON is the custom marshaler for SQLPoolOperationProperties.
10956func (spop SQLPoolOperationProperties) MarshalJSON() ([]byte, error) {
10957	objectMap := make(map[string]interface{})
10958	return json.Marshal(objectMap)
10959}
10960
10961// SQLPoolPatchInfo a SQL Analytics pool patch info
10962type SQLPoolPatchInfo struct {
10963	// Tags - Resource tags.
10964	Tags map[string]*string `json:"tags"`
10965	// Location - The geo-location where the resource lives
10966	Location *string `json:"location,omitempty"`
10967	// Sku - SQL pool SKU
10968	Sku *Sku `json:"sku,omitempty"`
10969	// SQLPoolResourceProperties - SQL pool properties
10970	*SQLPoolResourceProperties `json:"properties,omitempty"`
10971}
10972
10973// MarshalJSON is the custom marshaler for SQLPoolPatchInfo.
10974func (sppi SQLPoolPatchInfo) MarshalJSON() ([]byte, error) {
10975	objectMap := make(map[string]interface{})
10976	if sppi.Tags != nil {
10977		objectMap["tags"] = sppi.Tags
10978	}
10979	if sppi.Location != nil {
10980		objectMap["location"] = sppi.Location
10981	}
10982	if sppi.Sku != nil {
10983		objectMap["sku"] = sppi.Sku
10984	}
10985	if sppi.SQLPoolResourceProperties != nil {
10986		objectMap["properties"] = sppi.SQLPoolResourceProperties
10987	}
10988	return json.Marshal(objectMap)
10989}
10990
10991// UnmarshalJSON is the custom unmarshaler for SQLPoolPatchInfo struct.
10992func (sppi *SQLPoolPatchInfo) UnmarshalJSON(body []byte) error {
10993	var m map[string]*json.RawMessage
10994	err := json.Unmarshal(body, &m)
10995	if err != nil {
10996		return err
10997	}
10998	for k, v := range m {
10999		switch k {
11000		case "tags":
11001			if v != nil {
11002				var tags map[string]*string
11003				err = json.Unmarshal(*v, &tags)
11004				if err != nil {
11005					return err
11006				}
11007				sppi.Tags = tags
11008			}
11009		case "location":
11010			if v != nil {
11011				var location string
11012				err = json.Unmarshal(*v, &location)
11013				if err != nil {
11014					return err
11015				}
11016				sppi.Location = &location
11017			}
11018		case "sku":
11019			if v != nil {
11020				var sku Sku
11021				err = json.Unmarshal(*v, &sku)
11022				if err != nil {
11023					return err
11024				}
11025				sppi.Sku = &sku
11026			}
11027		case "properties":
11028			if v != nil {
11029				var SQLPoolResourceProperties SQLPoolResourceProperties
11030				err = json.Unmarshal(*v, &SQLPoolResourceProperties)
11031				if err != nil {
11032					return err
11033				}
11034				sppi.SQLPoolResourceProperties = &SQLPoolResourceProperties
11035			}
11036		}
11037	}
11038
11039	return nil
11040}
11041
11042// SQLPoolResourceProperties properties of a SQL Analytics pool
11043type SQLPoolResourceProperties struct {
11044	// MaxSizeBytes - Maximum size in bytes
11045	MaxSizeBytes *int64 `json:"maxSizeBytes,omitempty"`
11046	// Collation - Collation mode
11047	Collation *string `json:"collation,omitempty"`
11048	// SourceDatabaseID - Source database to create from
11049	SourceDatabaseID *string `json:"sourceDatabaseId,omitempty"`
11050	// RecoverableDatabaseID - Backup database to restore from
11051	RecoverableDatabaseID *string `json:"recoverableDatabaseId,omitempty"`
11052	// ProvisioningState - Resource state
11053	ProvisioningState *string `json:"provisioningState,omitempty"`
11054	// Status - Resource status
11055	Status *string `json:"status,omitempty"`
11056	// RestorePointInTime - Snapshot time to restore
11057	RestorePointInTime *string `json:"restorePointInTime,omitempty"`
11058	// CreateMode - What is this?
11059	CreateMode *string `json:"createMode,omitempty"`
11060	// CreationDate - Date the SQL pool was created
11061	CreationDate *date.Time `json:"creationDate,omitempty"`
11062}
11063
11064// SQLPoolRestorePointsCreateFuture an abstraction for monitoring and retrieving the results of a
11065// long-running operation.
11066type SQLPoolRestorePointsCreateFuture struct {
11067	azure.FutureAPI
11068	// Result returns the result of the asynchronous operation.
11069	// If the operation has not completed it will return an error.
11070	Result func(SQLPoolRestorePointsClient) (RestorePoint, error)
11071}
11072
11073// UnmarshalJSON is the custom unmarshaller for CreateFuture.
11074func (future *SQLPoolRestorePointsCreateFuture) UnmarshalJSON(body []byte) error {
11075	var azFuture azure.Future
11076	if err := json.Unmarshal(body, &azFuture); err != nil {
11077		return err
11078	}
11079	future.FutureAPI = &azFuture
11080	future.Result = future.result
11081	return nil
11082}
11083
11084// result is the default implementation for SQLPoolRestorePointsCreateFuture.Result.
11085func (future *SQLPoolRestorePointsCreateFuture) result(client SQLPoolRestorePointsClient) (rp RestorePoint, err error) {
11086	var done bool
11087	done, err = future.DoneWithContext(context.Background(), client)
11088	if err != nil {
11089		err = autorest.NewErrorWithError(err, "synapse.SQLPoolRestorePointsCreateFuture", "Result", future.Response(), "Polling failure")
11090		return
11091	}
11092	if !done {
11093		rp.Response.Response = future.Response()
11094		err = azure.NewAsyncOpIncompleteError("synapse.SQLPoolRestorePointsCreateFuture")
11095		return
11096	}
11097	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
11098	if rp.Response.Response, err = future.GetResult(sender); err == nil && rp.Response.Response.StatusCode != http.StatusNoContent {
11099		rp, err = client.CreateResponder(rp.Response.Response)
11100		if err != nil {
11101			err = autorest.NewErrorWithError(err, "synapse.SQLPoolRestorePointsCreateFuture", "Result", rp.Response.Response, "Failure responding to request")
11102		}
11103	}
11104	return
11105}
11106
11107// SQLPoolSchema a Sql pool schema resource.
11108type SQLPoolSchema struct {
11109	autorest.Response `json:"-"`
11110	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
11111	ID *string `json:"id,omitempty"`
11112	// Name - READ-ONLY; The name of the resource
11113	Name *string `json:"name,omitempty"`
11114	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
11115	Type *string `json:"type,omitempty"`
11116}
11117
11118// MarshalJSON is the custom marshaler for SQLPoolSchema.
11119func (sps SQLPoolSchema) MarshalJSON() ([]byte, error) {
11120	objectMap := make(map[string]interface{})
11121	return json.Marshal(objectMap)
11122}
11123
11124// SQLPoolSchemaListResult a list of Sql pool schemas.
11125type SQLPoolSchemaListResult struct {
11126	autorest.Response `json:"-"`
11127	// Value - READ-ONLY; Array of results.
11128	Value *[]SQLPoolSchema `json:"value,omitempty"`
11129	// NextLink - READ-ONLY; Link to retrieve next page of results.
11130	NextLink *string `json:"nextLink,omitempty"`
11131}
11132
11133// MarshalJSON is the custom marshaler for SQLPoolSchemaListResult.
11134func (spslr SQLPoolSchemaListResult) MarshalJSON() ([]byte, error) {
11135	objectMap := make(map[string]interface{})
11136	return json.Marshal(objectMap)
11137}
11138
11139// SQLPoolSchemaListResultIterator provides access to a complete listing of SQLPoolSchema values.
11140type SQLPoolSchemaListResultIterator struct {
11141	i    int
11142	page SQLPoolSchemaListResultPage
11143}
11144
11145// NextWithContext advances to the next value.  If there was an error making
11146// the request the iterator does not advance and the error is returned.
11147func (iter *SQLPoolSchemaListResultIterator) NextWithContext(ctx context.Context) (err error) {
11148	if tracing.IsEnabled() {
11149		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolSchemaListResultIterator.NextWithContext")
11150		defer func() {
11151			sc := -1
11152			if iter.Response().Response.Response != nil {
11153				sc = iter.Response().Response.Response.StatusCode
11154			}
11155			tracing.EndSpan(ctx, sc, err)
11156		}()
11157	}
11158	iter.i++
11159	if iter.i < len(iter.page.Values()) {
11160		return nil
11161	}
11162	err = iter.page.NextWithContext(ctx)
11163	if err != nil {
11164		iter.i--
11165		return err
11166	}
11167	iter.i = 0
11168	return nil
11169}
11170
11171// Next advances to the next value.  If there was an error making
11172// the request the iterator does not advance and the error is returned.
11173// Deprecated: Use NextWithContext() instead.
11174func (iter *SQLPoolSchemaListResultIterator) Next() error {
11175	return iter.NextWithContext(context.Background())
11176}
11177
11178// NotDone returns true if the enumeration should be started or is not yet complete.
11179func (iter SQLPoolSchemaListResultIterator) NotDone() bool {
11180	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11181}
11182
11183// Response returns the raw server response from the last page request.
11184func (iter SQLPoolSchemaListResultIterator) Response() SQLPoolSchemaListResult {
11185	return iter.page.Response()
11186}
11187
11188// Value returns the current value or a zero-initialized value if the
11189// iterator has advanced beyond the end of the collection.
11190func (iter SQLPoolSchemaListResultIterator) Value() SQLPoolSchema {
11191	if !iter.page.NotDone() {
11192		return SQLPoolSchema{}
11193	}
11194	return iter.page.Values()[iter.i]
11195}
11196
11197// Creates a new instance of the SQLPoolSchemaListResultIterator type.
11198func NewSQLPoolSchemaListResultIterator(page SQLPoolSchemaListResultPage) SQLPoolSchemaListResultIterator {
11199	return SQLPoolSchemaListResultIterator{page: page}
11200}
11201
11202// IsEmpty returns true if the ListResult contains no values.
11203func (spslr SQLPoolSchemaListResult) IsEmpty() bool {
11204	return spslr.Value == nil || len(*spslr.Value) == 0
11205}
11206
11207// hasNextLink returns true if the NextLink is not empty.
11208func (spslr SQLPoolSchemaListResult) hasNextLink() bool {
11209	return spslr.NextLink != nil && len(*spslr.NextLink) != 0
11210}
11211
11212// sQLPoolSchemaListResultPreparer prepares a request to retrieve the next set of results.
11213// It returns nil if no more results exist.
11214func (spslr SQLPoolSchemaListResult) sQLPoolSchemaListResultPreparer(ctx context.Context) (*http.Request, error) {
11215	if !spslr.hasNextLink() {
11216		return nil, nil
11217	}
11218	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11219		autorest.AsJSON(),
11220		autorest.AsGet(),
11221		autorest.WithBaseURL(to.String(spslr.NextLink)))
11222}
11223
11224// SQLPoolSchemaListResultPage contains a page of SQLPoolSchema values.
11225type SQLPoolSchemaListResultPage struct {
11226	fn    func(context.Context, SQLPoolSchemaListResult) (SQLPoolSchemaListResult, error)
11227	spslr SQLPoolSchemaListResult
11228}
11229
11230// NextWithContext advances to the next page of values.  If there was an error making
11231// the request the page does not advance and the error is returned.
11232func (page *SQLPoolSchemaListResultPage) NextWithContext(ctx context.Context) (err error) {
11233	if tracing.IsEnabled() {
11234		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolSchemaListResultPage.NextWithContext")
11235		defer func() {
11236			sc := -1
11237			if page.Response().Response.Response != nil {
11238				sc = page.Response().Response.Response.StatusCode
11239			}
11240			tracing.EndSpan(ctx, sc, err)
11241		}()
11242	}
11243	for {
11244		next, err := page.fn(ctx, page.spslr)
11245		if err != nil {
11246			return err
11247		}
11248		page.spslr = next
11249		if !next.hasNextLink() || !next.IsEmpty() {
11250			break
11251		}
11252	}
11253	return nil
11254}
11255
11256// Next advances to the next page of values.  If there was an error making
11257// the request the page does not advance and the error is returned.
11258// Deprecated: Use NextWithContext() instead.
11259func (page *SQLPoolSchemaListResultPage) Next() error {
11260	return page.NextWithContext(context.Background())
11261}
11262
11263// NotDone returns true if the page enumeration should be started or is not yet complete.
11264func (page SQLPoolSchemaListResultPage) NotDone() bool {
11265	return !page.spslr.IsEmpty()
11266}
11267
11268// Response returns the raw server response from the last page request.
11269func (page SQLPoolSchemaListResultPage) Response() SQLPoolSchemaListResult {
11270	return page.spslr
11271}
11272
11273// Values returns the slice of values for the current page or nil if there are no values.
11274func (page SQLPoolSchemaListResultPage) Values() []SQLPoolSchema {
11275	if page.spslr.IsEmpty() {
11276		return nil
11277	}
11278	return *page.spslr.Value
11279}
11280
11281// Creates a new instance of the SQLPoolSchemaListResultPage type.
11282func NewSQLPoolSchemaListResultPage(cur SQLPoolSchemaListResult, getNextPage func(context.Context, SQLPoolSchemaListResult) (SQLPoolSchemaListResult, error)) SQLPoolSchemaListResultPage {
11283	return SQLPoolSchemaListResultPage{
11284		fn:    getNextPage,
11285		spslr: cur,
11286	}
11287}
11288
11289// SQLPoolsCreateFuture an abstraction for monitoring and retrieving the results of a long-running
11290// operation.
11291type SQLPoolsCreateFuture struct {
11292	azure.FutureAPI
11293	// Result returns the result of the asynchronous operation.
11294	// If the operation has not completed it will return an error.
11295	Result func(SQLPoolsClient) (SQLPool, error)
11296}
11297
11298// UnmarshalJSON is the custom unmarshaller for CreateFuture.
11299func (future *SQLPoolsCreateFuture) UnmarshalJSON(body []byte) error {
11300	var azFuture azure.Future
11301	if err := json.Unmarshal(body, &azFuture); err != nil {
11302		return err
11303	}
11304	future.FutureAPI = &azFuture
11305	future.Result = future.result
11306	return nil
11307}
11308
11309// result is the default implementation for SQLPoolsCreateFuture.Result.
11310func (future *SQLPoolsCreateFuture) result(client SQLPoolsClient) (sp SQLPool, err error) {
11311	var done bool
11312	done, err = future.DoneWithContext(context.Background(), client)
11313	if err != nil {
11314		err = autorest.NewErrorWithError(err, "synapse.SQLPoolsCreateFuture", "Result", future.Response(), "Polling failure")
11315		return
11316	}
11317	if !done {
11318		sp.Response.Response = future.Response()
11319		err = azure.NewAsyncOpIncompleteError("synapse.SQLPoolsCreateFuture")
11320		return
11321	}
11322	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
11323	if sp.Response.Response, err = future.GetResult(sender); err == nil && sp.Response.Response.StatusCode != http.StatusNoContent {
11324		sp, err = client.CreateResponder(sp.Response.Response)
11325		if err != nil {
11326			err = autorest.NewErrorWithError(err, "synapse.SQLPoolsCreateFuture", "Result", sp.Response.Response, "Failure responding to request")
11327		}
11328	}
11329	return
11330}
11331
11332// SQLPoolsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
11333// operation.
11334type SQLPoolsDeleteFuture struct {
11335	azure.FutureAPI
11336	// Result returns the result of the asynchronous operation.
11337	// If the operation has not completed it will return an error.
11338	Result func(SQLPoolsClient) (SetObject, error)
11339}
11340
11341// UnmarshalJSON is the custom unmarshaller for CreateFuture.
11342func (future *SQLPoolsDeleteFuture) UnmarshalJSON(body []byte) error {
11343	var azFuture azure.Future
11344	if err := json.Unmarshal(body, &azFuture); err != nil {
11345		return err
11346	}
11347	future.FutureAPI = &azFuture
11348	future.Result = future.result
11349	return nil
11350}
11351
11352// result is the default implementation for SQLPoolsDeleteFuture.Result.
11353func (future *SQLPoolsDeleteFuture) result(client SQLPoolsClient) (so SetObject, err error) {
11354	var done bool
11355	done, err = future.DoneWithContext(context.Background(), client)
11356	if err != nil {
11357		err = autorest.NewErrorWithError(err, "synapse.SQLPoolsDeleteFuture", "Result", future.Response(), "Polling failure")
11358		return
11359	}
11360	if !done {
11361		so.Response.Response = future.Response()
11362		err = azure.NewAsyncOpIncompleteError("synapse.SQLPoolsDeleteFuture")
11363		return
11364	}
11365	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
11366	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
11367		so, err = client.DeleteResponder(so.Response.Response)
11368		if err != nil {
11369			err = autorest.NewErrorWithError(err, "synapse.SQLPoolsDeleteFuture", "Result", so.Response.Response, "Failure responding to request")
11370		}
11371	}
11372	return
11373}
11374
11375// SQLPoolSecurityAlertPolicy a Sql pool security alert policy.
11376type SQLPoolSecurityAlertPolicy struct {
11377	autorest.Response `json:"-"`
11378	// SecurityAlertPolicyProperties - Resource properties.
11379	*SecurityAlertPolicyProperties `json:"properties,omitempty"`
11380	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
11381	ID *string `json:"id,omitempty"`
11382	// Name - READ-ONLY; The name of the resource
11383	Name *string `json:"name,omitempty"`
11384	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
11385	Type *string `json:"type,omitempty"`
11386}
11387
11388// MarshalJSON is the custom marshaler for SQLPoolSecurityAlertPolicy.
11389func (spsap SQLPoolSecurityAlertPolicy) MarshalJSON() ([]byte, error) {
11390	objectMap := make(map[string]interface{})
11391	if spsap.SecurityAlertPolicyProperties != nil {
11392		objectMap["properties"] = spsap.SecurityAlertPolicyProperties
11393	}
11394	return json.Marshal(objectMap)
11395}
11396
11397// UnmarshalJSON is the custom unmarshaler for SQLPoolSecurityAlertPolicy struct.
11398func (spsap *SQLPoolSecurityAlertPolicy) UnmarshalJSON(body []byte) error {
11399	var m map[string]*json.RawMessage
11400	err := json.Unmarshal(body, &m)
11401	if err != nil {
11402		return err
11403	}
11404	for k, v := range m {
11405		switch k {
11406		case "properties":
11407			if v != nil {
11408				var securityAlertPolicyProperties SecurityAlertPolicyProperties
11409				err = json.Unmarshal(*v, &securityAlertPolicyProperties)
11410				if err != nil {
11411					return err
11412				}
11413				spsap.SecurityAlertPolicyProperties = &securityAlertPolicyProperties
11414			}
11415		case "id":
11416			if v != nil {
11417				var ID string
11418				err = json.Unmarshal(*v, &ID)
11419				if err != nil {
11420					return err
11421				}
11422				spsap.ID = &ID
11423			}
11424		case "name":
11425			if v != nil {
11426				var name string
11427				err = json.Unmarshal(*v, &name)
11428				if err != nil {
11429					return err
11430				}
11431				spsap.Name = &name
11432			}
11433		case "type":
11434			if v != nil {
11435				var typeVar string
11436				err = json.Unmarshal(*v, &typeVar)
11437				if err != nil {
11438					return err
11439				}
11440				spsap.Type = &typeVar
11441			}
11442		}
11443	}
11444
11445	return nil
11446}
11447
11448// SQLPoolsPauseFuture an abstraction for monitoring and retrieving the results of a long-running
11449// operation.
11450type SQLPoolsPauseFuture struct {
11451	azure.FutureAPI
11452	// Result returns the result of the asynchronous operation.
11453	// If the operation has not completed it will return an error.
11454	Result func(SQLPoolsClient) (SetObject, error)
11455}
11456
11457// UnmarshalJSON is the custom unmarshaller for CreateFuture.
11458func (future *SQLPoolsPauseFuture) UnmarshalJSON(body []byte) error {
11459	var azFuture azure.Future
11460	if err := json.Unmarshal(body, &azFuture); err != nil {
11461		return err
11462	}
11463	future.FutureAPI = &azFuture
11464	future.Result = future.result
11465	return nil
11466}
11467
11468// result is the default implementation for SQLPoolsPauseFuture.Result.
11469func (future *SQLPoolsPauseFuture) result(client SQLPoolsClient) (so SetObject, err error) {
11470	var done bool
11471	done, err = future.DoneWithContext(context.Background(), client)
11472	if err != nil {
11473		err = autorest.NewErrorWithError(err, "synapse.SQLPoolsPauseFuture", "Result", future.Response(), "Polling failure")
11474		return
11475	}
11476	if !done {
11477		so.Response.Response = future.Response()
11478		err = azure.NewAsyncOpIncompleteError("synapse.SQLPoolsPauseFuture")
11479		return
11480	}
11481	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
11482	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
11483		so, err = client.PauseResponder(so.Response.Response)
11484		if err != nil {
11485			err = autorest.NewErrorWithError(err, "synapse.SQLPoolsPauseFuture", "Result", so.Response.Response, "Failure responding to request")
11486		}
11487	}
11488	return
11489}
11490
11491// SQLPoolsResumeFuture an abstraction for monitoring and retrieving the results of a long-running
11492// operation.
11493type SQLPoolsResumeFuture struct {
11494	azure.FutureAPI
11495	// Result returns the result of the asynchronous operation.
11496	// If the operation has not completed it will return an error.
11497	Result func(SQLPoolsClient) (SetObject, error)
11498}
11499
11500// UnmarshalJSON is the custom unmarshaller for CreateFuture.
11501func (future *SQLPoolsResumeFuture) UnmarshalJSON(body []byte) error {
11502	var azFuture azure.Future
11503	if err := json.Unmarshal(body, &azFuture); err != nil {
11504		return err
11505	}
11506	future.FutureAPI = &azFuture
11507	future.Result = future.result
11508	return nil
11509}
11510
11511// result is the default implementation for SQLPoolsResumeFuture.Result.
11512func (future *SQLPoolsResumeFuture) result(client SQLPoolsClient) (so SetObject, err error) {
11513	var done bool
11514	done, err = future.DoneWithContext(context.Background(), client)
11515	if err != nil {
11516		err = autorest.NewErrorWithError(err, "synapse.SQLPoolsResumeFuture", "Result", future.Response(), "Polling failure")
11517		return
11518	}
11519	if !done {
11520		so.Response.Response = future.Response()
11521		err = azure.NewAsyncOpIncompleteError("synapse.SQLPoolsResumeFuture")
11522		return
11523	}
11524	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
11525	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
11526		so, err = client.ResumeResponder(so.Response.Response)
11527		if err != nil {
11528			err = autorest.NewErrorWithError(err, "synapse.SQLPoolsResumeFuture", "Result", so.Response.Response, "Failure responding to request")
11529		}
11530	}
11531	return
11532}
11533
11534// SQLPoolTable a Sql pool table resource.
11535type SQLPoolTable struct {
11536	autorest.Response `json:"-"`
11537	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
11538	ID *string `json:"id,omitempty"`
11539	// Name - READ-ONLY; The name of the resource
11540	Name *string `json:"name,omitempty"`
11541	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
11542	Type *string `json:"type,omitempty"`
11543}
11544
11545// MarshalJSON is the custom marshaler for SQLPoolTable.
11546func (spt SQLPoolTable) MarshalJSON() ([]byte, error) {
11547	objectMap := make(map[string]interface{})
11548	return json.Marshal(objectMap)
11549}
11550
11551// SQLPoolTableListResult a list of Sql pool tables.
11552type SQLPoolTableListResult struct {
11553	autorest.Response `json:"-"`
11554	// Value - READ-ONLY; Array of results.
11555	Value *[]SQLPoolTable `json:"value,omitempty"`
11556	// NextLink - READ-ONLY; Link to retrieve next page of results.
11557	NextLink *string `json:"nextLink,omitempty"`
11558}
11559
11560// MarshalJSON is the custom marshaler for SQLPoolTableListResult.
11561func (sptlr SQLPoolTableListResult) MarshalJSON() ([]byte, error) {
11562	objectMap := make(map[string]interface{})
11563	return json.Marshal(objectMap)
11564}
11565
11566// SQLPoolTableListResultIterator provides access to a complete listing of SQLPoolTable values.
11567type SQLPoolTableListResultIterator struct {
11568	i    int
11569	page SQLPoolTableListResultPage
11570}
11571
11572// NextWithContext advances to the next value.  If there was an error making
11573// the request the iterator does not advance and the error is returned.
11574func (iter *SQLPoolTableListResultIterator) NextWithContext(ctx context.Context) (err error) {
11575	if tracing.IsEnabled() {
11576		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolTableListResultIterator.NextWithContext")
11577		defer func() {
11578			sc := -1
11579			if iter.Response().Response.Response != nil {
11580				sc = iter.Response().Response.Response.StatusCode
11581			}
11582			tracing.EndSpan(ctx, sc, err)
11583		}()
11584	}
11585	iter.i++
11586	if iter.i < len(iter.page.Values()) {
11587		return nil
11588	}
11589	err = iter.page.NextWithContext(ctx)
11590	if err != nil {
11591		iter.i--
11592		return err
11593	}
11594	iter.i = 0
11595	return nil
11596}
11597
11598// Next advances to the next value.  If there was an error making
11599// the request the iterator does not advance and the error is returned.
11600// Deprecated: Use NextWithContext() instead.
11601func (iter *SQLPoolTableListResultIterator) Next() error {
11602	return iter.NextWithContext(context.Background())
11603}
11604
11605// NotDone returns true if the enumeration should be started or is not yet complete.
11606func (iter SQLPoolTableListResultIterator) NotDone() bool {
11607	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11608}
11609
11610// Response returns the raw server response from the last page request.
11611func (iter SQLPoolTableListResultIterator) Response() SQLPoolTableListResult {
11612	return iter.page.Response()
11613}
11614
11615// Value returns the current value or a zero-initialized value if the
11616// iterator has advanced beyond the end of the collection.
11617func (iter SQLPoolTableListResultIterator) Value() SQLPoolTable {
11618	if !iter.page.NotDone() {
11619		return SQLPoolTable{}
11620	}
11621	return iter.page.Values()[iter.i]
11622}
11623
11624// Creates a new instance of the SQLPoolTableListResultIterator type.
11625func NewSQLPoolTableListResultIterator(page SQLPoolTableListResultPage) SQLPoolTableListResultIterator {
11626	return SQLPoolTableListResultIterator{page: page}
11627}
11628
11629// IsEmpty returns true if the ListResult contains no values.
11630func (sptlr SQLPoolTableListResult) IsEmpty() bool {
11631	return sptlr.Value == nil || len(*sptlr.Value) == 0
11632}
11633
11634// hasNextLink returns true if the NextLink is not empty.
11635func (sptlr SQLPoolTableListResult) hasNextLink() bool {
11636	return sptlr.NextLink != nil && len(*sptlr.NextLink) != 0
11637}
11638
11639// sQLPoolTableListResultPreparer prepares a request to retrieve the next set of results.
11640// It returns nil if no more results exist.
11641func (sptlr SQLPoolTableListResult) sQLPoolTableListResultPreparer(ctx context.Context) (*http.Request, error) {
11642	if !sptlr.hasNextLink() {
11643		return nil, nil
11644	}
11645	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11646		autorest.AsJSON(),
11647		autorest.AsGet(),
11648		autorest.WithBaseURL(to.String(sptlr.NextLink)))
11649}
11650
11651// SQLPoolTableListResultPage contains a page of SQLPoolTable values.
11652type SQLPoolTableListResultPage struct {
11653	fn    func(context.Context, SQLPoolTableListResult) (SQLPoolTableListResult, error)
11654	sptlr SQLPoolTableListResult
11655}
11656
11657// NextWithContext advances to the next page of values.  If there was an error making
11658// the request the page does not advance and the error is returned.
11659func (page *SQLPoolTableListResultPage) NextWithContext(ctx context.Context) (err error) {
11660	if tracing.IsEnabled() {
11661		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolTableListResultPage.NextWithContext")
11662		defer func() {
11663			sc := -1
11664			if page.Response().Response.Response != nil {
11665				sc = page.Response().Response.Response.StatusCode
11666			}
11667			tracing.EndSpan(ctx, sc, err)
11668		}()
11669	}
11670	for {
11671		next, err := page.fn(ctx, page.sptlr)
11672		if err != nil {
11673			return err
11674		}
11675		page.sptlr = next
11676		if !next.hasNextLink() || !next.IsEmpty() {
11677			break
11678		}
11679	}
11680	return nil
11681}
11682
11683// Next advances to the next page of values.  If there was an error making
11684// the request the page does not advance and the error is returned.
11685// Deprecated: Use NextWithContext() instead.
11686func (page *SQLPoolTableListResultPage) Next() error {
11687	return page.NextWithContext(context.Background())
11688}
11689
11690// NotDone returns true if the page enumeration should be started or is not yet complete.
11691func (page SQLPoolTableListResultPage) NotDone() bool {
11692	return !page.sptlr.IsEmpty()
11693}
11694
11695// Response returns the raw server response from the last page request.
11696func (page SQLPoolTableListResultPage) Response() SQLPoolTableListResult {
11697	return page.sptlr
11698}
11699
11700// Values returns the slice of values for the current page or nil if there are no values.
11701func (page SQLPoolTableListResultPage) Values() []SQLPoolTable {
11702	if page.sptlr.IsEmpty() {
11703		return nil
11704	}
11705	return *page.sptlr.Value
11706}
11707
11708// Creates a new instance of the SQLPoolTableListResultPage type.
11709func NewSQLPoolTableListResultPage(cur SQLPoolTableListResult, getNextPage func(context.Context, SQLPoolTableListResult) (SQLPoolTableListResult, error)) SQLPoolTableListResultPage {
11710	return SQLPoolTableListResultPage{
11711		fn:    getNextPage,
11712		sptlr: cur,
11713	}
11714}
11715
11716// SQLPoolUsage the Sql pool usages.
11717type SQLPoolUsage struct {
11718	// Name - READ-ONLY; The name of the usage metric.
11719	Name *string `json:"name,omitempty"`
11720	// ResourceName - READ-ONLY; The name of the resource.
11721	ResourceName *string `json:"resourceName,omitempty"`
11722	// DisplayName - READ-ONLY; The usage metric display name.
11723	DisplayName *string `json:"displayName,omitempty"`
11724	// CurrentValue - READ-ONLY; The current value of the usage metric.
11725	CurrentValue *float64 `json:"currentValue,omitempty"`
11726	// Limit - READ-ONLY; The current limit of the usage metric.
11727	Limit *float64 `json:"limit,omitempty"`
11728	// Unit - READ-ONLY; The units of the usage metric.
11729	Unit *string `json:"unit,omitempty"`
11730	// NextResetTime - READ-ONLY; The next reset time for the usage metric (ISO8601 format).
11731	NextResetTime *date.Time `json:"nextResetTime,omitempty"`
11732}
11733
11734// MarshalJSON is the custom marshaler for SQLPoolUsage.
11735func (spu SQLPoolUsage) MarshalJSON() ([]byte, error) {
11736	objectMap := make(map[string]interface{})
11737	return json.Marshal(objectMap)
11738}
11739
11740// SQLPoolUsageListResult the response to a list Sql pool usages request.
11741type SQLPoolUsageListResult struct {
11742	autorest.Response `json:"-"`
11743	// Value - The list of usages for the Sql pool.
11744	Value *[]SQLPoolUsage `json:"value,omitempty"`
11745	// NextLink - READ-ONLY; Link to retrieve next page of results.
11746	NextLink *string `json:"nextLink,omitempty"`
11747}
11748
11749// MarshalJSON is the custom marshaler for SQLPoolUsageListResult.
11750func (spulr SQLPoolUsageListResult) MarshalJSON() ([]byte, error) {
11751	objectMap := make(map[string]interface{})
11752	if spulr.Value != nil {
11753		objectMap["value"] = spulr.Value
11754	}
11755	return json.Marshal(objectMap)
11756}
11757
11758// SQLPoolUsageListResultIterator provides access to a complete listing of SQLPoolUsage values.
11759type SQLPoolUsageListResultIterator struct {
11760	i    int
11761	page SQLPoolUsageListResultPage
11762}
11763
11764// NextWithContext advances to the next value.  If there was an error making
11765// the request the iterator does not advance and the error is returned.
11766func (iter *SQLPoolUsageListResultIterator) NextWithContext(ctx context.Context) (err error) {
11767	if tracing.IsEnabled() {
11768		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolUsageListResultIterator.NextWithContext")
11769		defer func() {
11770			sc := -1
11771			if iter.Response().Response.Response != nil {
11772				sc = iter.Response().Response.Response.StatusCode
11773			}
11774			tracing.EndSpan(ctx, sc, err)
11775		}()
11776	}
11777	iter.i++
11778	if iter.i < len(iter.page.Values()) {
11779		return nil
11780	}
11781	err = iter.page.NextWithContext(ctx)
11782	if err != nil {
11783		iter.i--
11784		return err
11785	}
11786	iter.i = 0
11787	return nil
11788}
11789
11790// Next advances to the next value.  If there was an error making
11791// the request the iterator does not advance and the error is returned.
11792// Deprecated: Use NextWithContext() instead.
11793func (iter *SQLPoolUsageListResultIterator) Next() error {
11794	return iter.NextWithContext(context.Background())
11795}
11796
11797// NotDone returns true if the enumeration should be started or is not yet complete.
11798func (iter SQLPoolUsageListResultIterator) NotDone() bool {
11799	return iter.page.NotDone() && iter.i < len(iter.page.Values())
11800}
11801
11802// Response returns the raw server response from the last page request.
11803func (iter SQLPoolUsageListResultIterator) Response() SQLPoolUsageListResult {
11804	return iter.page.Response()
11805}
11806
11807// Value returns the current value or a zero-initialized value if the
11808// iterator has advanced beyond the end of the collection.
11809func (iter SQLPoolUsageListResultIterator) Value() SQLPoolUsage {
11810	if !iter.page.NotDone() {
11811		return SQLPoolUsage{}
11812	}
11813	return iter.page.Values()[iter.i]
11814}
11815
11816// Creates a new instance of the SQLPoolUsageListResultIterator type.
11817func NewSQLPoolUsageListResultIterator(page SQLPoolUsageListResultPage) SQLPoolUsageListResultIterator {
11818	return SQLPoolUsageListResultIterator{page: page}
11819}
11820
11821// IsEmpty returns true if the ListResult contains no values.
11822func (spulr SQLPoolUsageListResult) IsEmpty() bool {
11823	return spulr.Value == nil || len(*spulr.Value) == 0
11824}
11825
11826// hasNextLink returns true if the NextLink is not empty.
11827func (spulr SQLPoolUsageListResult) hasNextLink() bool {
11828	return spulr.NextLink != nil && len(*spulr.NextLink) != 0
11829}
11830
11831// sQLPoolUsageListResultPreparer prepares a request to retrieve the next set of results.
11832// It returns nil if no more results exist.
11833func (spulr SQLPoolUsageListResult) sQLPoolUsageListResultPreparer(ctx context.Context) (*http.Request, error) {
11834	if !spulr.hasNextLink() {
11835		return nil, nil
11836	}
11837	return autorest.Prepare((&http.Request{}).WithContext(ctx),
11838		autorest.AsJSON(),
11839		autorest.AsGet(),
11840		autorest.WithBaseURL(to.String(spulr.NextLink)))
11841}
11842
11843// SQLPoolUsageListResultPage contains a page of SQLPoolUsage values.
11844type SQLPoolUsageListResultPage struct {
11845	fn    func(context.Context, SQLPoolUsageListResult) (SQLPoolUsageListResult, error)
11846	spulr SQLPoolUsageListResult
11847}
11848
11849// NextWithContext advances to the next page of values.  If there was an error making
11850// the request the page does not advance and the error is returned.
11851func (page *SQLPoolUsageListResultPage) NextWithContext(ctx context.Context) (err error) {
11852	if tracing.IsEnabled() {
11853		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolUsageListResultPage.NextWithContext")
11854		defer func() {
11855			sc := -1
11856			if page.Response().Response.Response != nil {
11857				sc = page.Response().Response.Response.StatusCode
11858			}
11859			tracing.EndSpan(ctx, sc, err)
11860		}()
11861	}
11862	for {
11863		next, err := page.fn(ctx, page.spulr)
11864		if err != nil {
11865			return err
11866		}
11867		page.spulr = next
11868		if !next.hasNextLink() || !next.IsEmpty() {
11869			break
11870		}
11871	}
11872	return nil
11873}
11874
11875// Next advances to the next page of values.  If there was an error making
11876// the request the page does not advance and the error is returned.
11877// Deprecated: Use NextWithContext() instead.
11878func (page *SQLPoolUsageListResultPage) Next() error {
11879	return page.NextWithContext(context.Background())
11880}
11881
11882// NotDone returns true if the page enumeration should be started or is not yet complete.
11883func (page SQLPoolUsageListResultPage) NotDone() bool {
11884	return !page.spulr.IsEmpty()
11885}
11886
11887// Response returns the raw server response from the last page request.
11888func (page SQLPoolUsageListResultPage) Response() SQLPoolUsageListResult {
11889	return page.spulr
11890}
11891
11892// Values returns the slice of values for the current page or nil if there are no values.
11893func (page SQLPoolUsageListResultPage) Values() []SQLPoolUsage {
11894	if page.spulr.IsEmpty() {
11895		return nil
11896	}
11897	return *page.spulr.Value
11898}
11899
11900// Creates a new instance of the SQLPoolUsageListResultPage type.
11901func NewSQLPoolUsageListResultPage(cur SQLPoolUsageListResult, getNextPage func(context.Context, SQLPoolUsageListResult) (SQLPoolUsageListResult, error)) SQLPoolUsageListResultPage {
11902	return SQLPoolUsageListResultPage{
11903		fn:    getNextPage,
11904		spulr: cur,
11905	}
11906}
11907
11908// SQLPoolVulnerabilityAssessment a Sql pool vulnerability assessment.
11909type SQLPoolVulnerabilityAssessment struct {
11910	autorest.Response `json:"-"`
11911	// SQLPoolVulnerabilityAssessmentProperties - Resource properties.
11912	*SQLPoolVulnerabilityAssessmentProperties `json:"properties,omitempty"`
11913	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
11914	ID *string `json:"id,omitempty"`
11915	// Name - READ-ONLY; The name of the resource
11916	Name *string `json:"name,omitempty"`
11917	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
11918	Type *string `json:"type,omitempty"`
11919}
11920
11921// MarshalJSON is the custom marshaler for SQLPoolVulnerabilityAssessment.
11922func (spva SQLPoolVulnerabilityAssessment) MarshalJSON() ([]byte, error) {
11923	objectMap := make(map[string]interface{})
11924	if spva.SQLPoolVulnerabilityAssessmentProperties != nil {
11925		objectMap["properties"] = spva.SQLPoolVulnerabilityAssessmentProperties
11926	}
11927	return json.Marshal(objectMap)
11928}
11929
11930// UnmarshalJSON is the custom unmarshaler for SQLPoolVulnerabilityAssessment struct.
11931func (spva *SQLPoolVulnerabilityAssessment) UnmarshalJSON(body []byte) error {
11932	var m map[string]*json.RawMessage
11933	err := json.Unmarshal(body, &m)
11934	if err != nil {
11935		return err
11936	}
11937	for k, v := range m {
11938		switch k {
11939		case "properties":
11940			if v != nil {
11941				var SQLPoolVulnerabilityAssessmentProperties SQLPoolVulnerabilityAssessmentProperties
11942				err = json.Unmarshal(*v, &SQLPoolVulnerabilityAssessmentProperties)
11943				if err != nil {
11944					return err
11945				}
11946				spva.SQLPoolVulnerabilityAssessmentProperties = &SQLPoolVulnerabilityAssessmentProperties
11947			}
11948		case "id":
11949			if v != nil {
11950				var ID string
11951				err = json.Unmarshal(*v, &ID)
11952				if err != nil {
11953					return err
11954				}
11955				spva.ID = &ID
11956			}
11957		case "name":
11958			if v != nil {
11959				var name string
11960				err = json.Unmarshal(*v, &name)
11961				if err != nil {
11962					return err
11963				}
11964				spva.Name = &name
11965			}
11966		case "type":
11967			if v != nil {
11968				var typeVar string
11969				err = json.Unmarshal(*v, &typeVar)
11970				if err != nil {
11971					return err
11972				}
11973				spva.Type = &typeVar
11974			}
11975		}
11976	}
11977
11978	return nil
11979}
11980
11981// SQLPoolVulnerabilityAssessmentListResult a list of the Sql pool's vulnerability assessments.
11982type SQLPoolVulnerabilityAssessmentListResult struct {
11983	autorest.Response `json:"-"`
11984	// Value - READ-ONLY; Array of results.
11985	Value *[]SQLPoolVulnerabilityAssessment `json:"value,omitempty"`
11986	// NextLink - READ-ONLY; Link to retrieve next page of results.
11987	NextLink *string `json:"nextLink,omitempty"`
11988}
11989
11990// MarshalJSON is the custom marshaler for SQLPoolVulnerabilityAssessmentListResult.
11991func (spvalr SQLPoolVulnerabilityAssessmentListResult) MarshalJSON() ([]byte, error) {
11992	objectMap := make(map[string]interface{})
11993	return json.Marshal(objectMap)
11994}
11995
11996// SQLPoolVulnerabilityAssessmentListResultIterator provides access to a complete listing of
11997// SQLPoolVulnerabilityAssessment values.
11998type SQLPoolVulnerabilityAssessmentListResultIterator struct {
11999	i    int
12000	page SQLPoolVulnerabilityAssessmentListResultPage
12001}
12002
12003// NextWithContext advances to the next value.  If there was an error making
12004// the request the iterator does not advance and the error is returned.
12005func (iter *SQLPoolVulnerabilityAssessmentListResultIterator) NextWithContext(ctx context.Context) (err error) {
12006	if tracing.IsEnabled() {
12007		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolVulnerabilityAssessmentListResultIterator.NextWithContext")
12008		defer func() {
12009			sc := -1
12010			if iter.Response().Response.Response != nil {
12011				sc = iter.Response().Response.Response.StatusCode
12012			}
12013			tracing.EndSpan(ctx, sc, err)
12014		}()
12015	}
12016	iter.i++
12017	if iter.i < len(iter.page.Values()) {
12018		return nil
12019	}
12020	err = iter.page.NextWithContext(ctx)
12021	if err != nil {
12022		iter.i--
12023		return err
12024	}
12025	iter.i = 0
12026	return nil
12027}
12028
12029// Next advances to the next value.  If there was an error making
12030// the request the iterator does not advance and the error is returned.
12031// Deprecated: Use NextWithContext() instead.
12032func (iter *SQLPoolVulnerabilityAssessmentListResultIterator) Next() error {
12033	return iter.NextWithContext(context.Background())
12034}
12035
12036// NotDone returns true if the enumeration should be started or is not yet complete.
12037func (iter SQLPoolVulnerabilityAssessmentListResultIterator) NotDone() bool {
12038	return iter.page.NotDone() && iter.i < len(iter.page.Values())
12039}
12040
12041// Response returns the raw server response from the last page request.
12042func (iter SQLPoolVulnerabilityAssessmentListResultIterator) Response() SQLPoolVulnerabilityAssessmentListResult {
12043	return iter.page.Response()
12044}
12045
12046// Value returns the current value or a zero-initialized value if the
12047// iterator has advanced beyond the end of the collection.
12048func (iter SQLPoolVulnerabilityAssessmentListResultIterator) Value() SQLPoolVulnerabilityAssessment {
12049	if !iter.page.NotDone() {
12050		return SQLPoolVulnerabilityAssessment{}
12051	}
12052	return iter.page.Values()[iter.i]
12053}
12054
12055// Creates a new instance of the SQLPoolVulnerabilityAssessmentListResultIterator type.
12056func NewSQLPoolVulnerabilityAssessmentListResultIterator(page SQLPoolVulnerabilityAssessmentListResultPage) SQLPoolVulnerabilityAssessmentListResultIterator {
12057	return SQLPoolVulnerabilityAssessmentListResultIterator{page: page}
12058}
12059
12060// IsEmpty returns true if the ListResult contains no values.
12061func (spvalr SQLPoolVulnerabilityAssessmentListResult) IsEmpty() bool {
12062	return spvalr.Value == nil || len(*spvalr.Value) == 0
12063}
12064
12065// hasNextLink returns true if the NextLink is not empty.
12066func (spvalr SQLPoolVulnerabilityAssessmentListResult) hasNextLink() bool {
12067	return spvalr.NextLink != nil && len(*spvalr.NextLink) != 0
12068}
12069
12070// sQLPoolVulnerabilityAssessmentListResultPreparer prepares a request to retrieve the next set of results.
12071// It returns nil if no more results exist.
12072func (spvalr SQLPoolVulnerabilityAssessmentListResult) sQLPoolVulnerabilityAssessmentListResultPreparer(ctx context.Context) (*http.Request, error) {
12073	if !spvalr.hasNextLink() {
12074		return nil, nil
12075	}
12076	return autorest.Prepare((&http.Request{}).WithContext(ctx),
12077		autorest.AsJSON(),
12078		autorest.AsGet(),
12079		autorest.WithBaseURL(to.String(spvalr.NextLink)))
12080}
12081
12082// SQLPoolVulnerabilityAssessmentListResultPage contains a page of SQLPoolVulnerabilityAssessment values.
12083type SQLPoolVulnerabilityAssessmentListResultPage struct {
12084	fn     func(context.Context, SQLPoolVulnerabilityAssessmentListResult) (SQLPoolVulnerabilityAssessmentListResult, error)
12085	spvalr SQLPoolVulnerabilityAssessmentListResult
12086}
12087
12088// NextWithContext advances to the next page of values.  If there was an error making
12089// the request the page does not advance and the error is returned.
12090func (page *SQLPoolVulnerabilityAssessmentListResultPage) NextWithContext(ctx context.Context) (err error) {
12091	if tracing.IsEnabled() {
12092		ctx = tracing.StartSpan(ctx, fqdn+"/SQLPoolVulnerabilityAssessmentListResultPage.NextWithContext")
12093		defer func() {
12094			sc := -1
12095			if page.Response().Response.Response != nil {
12096				sc = page.Response().Response.Response.StatusCode
12097			}
12098			tracing.EndSpan(ctx, sc, err)
12099		}()
12100	}
12101	for {
12102		next, err := page.fn(ctx, page.spvalr)
12103		if err != nil {
12104			return err
12105		}
12106		page.spvalr = next
12107		if !next.hasNextLink() || !next.IsEmpty() {
12108			break
12109		}
12110	}
12111	return nil
12112}
12113
12114// Next advances to the next page of values.  If there was an error making
12115// the request the page does not advance and the error is returned.
12116// Deprecated: Use NextWithContext() instead.
12117func (page *SQLPoolVulnerabilityAssessmentListResultPage) Next() error {
12118	return page.NextWithContext(context.Background())
12119}
12120
12121// NotDone returns true if the page enumeration should be started or is not yet complete.
12122func (page SQLPoolVulnerabilityAssessmentListResultPage) NotDone() bool {
12123	return !page.spvalr.IsEmpty()
12124}
12125
12126// Response returns the raw server response from the last page request.
12127func (page SQLPoolVulnerabilityAssessmentListResultPage) Response() SQLPoolVulnerabilityAssessmentListResult {
12128	return page.spvalr
12129}
12130
12131// Values returns the slice of values for the current page or nil if there are no values.
12132func (page SQLPoolVulnerabilityAssessmentListResultPage) Values() []SQLPoolVulnerabilityAssessment {
12133	if page.spvalr.IsEmpty() {
12134		return nil
12135	}
12136	return *page.spvalr.Value
12137}
12138
12139// Creates a new instance of the SQLPoolVulnerabilityAssessmentListResultPage type.
12140func NewSQLPoolVulnerabilityAssessmentListResultPage(cur SQLPoolVulnerabilityAssessmentListResult, getNextPage func(context.Context, SQLPoolVulnerabilityAssessmentListResult) (SQLPoolVulnerabilityAssessmentListResult, error)) SQLPoolVulnerabilityAssessmentListResultPage {
12141	return SQLPoolVulnerabilityAssessmentListResultPage{
12142		fn:     getNextPage,
12143		spvalr: cur,
12144	}
12145}
12146
12147// SQLPoolVulnerabilityAssessmentProperties properties of a Sql pool Vulnerability Assessment.
12148type SQLPoolVulnerabilityAssessmentProperties struct {
12149	// StorageContainerPath - A blob storage container path to hold the scan results (e.g. https://myStorage.blob.core.windows.net/VaScans/).  It is required if server level vulnerability assessment policy doesn't set
12150	StorageContainerPath *string `json:"storageContainerPath,omitempty"`
12151	// StorageContainerSasKey - A shared access signature (SAS Key) that has write access to the blob container specified in 'storageContainerPath' parameter. If 'storageAccountAccessKey' isn't specified, StorageContainerSasKey is required.
12152	StorageContainerSasKey *string `json:"storageContainerSasKey,omitempty"`
12153	// StorageAccountAccessKey - Specifies the identifier key of the storage account for vulnerability assessment scan results. If 'StorageContainerSasKey' isn't specified, storageAccountAccessKey is required.
12154	StorageAccountAccessKey *string `json:"storageAccountAccessKey,omitempty"`
12155	// RecurringScans - The recurring scans settings
12156	RecurringScans *VulnerabilityAssessmentRecurringScansProperties `json:"recurringScans,omitempty"`
12157}
12158
12159// SQLPoolVulnerabilityAssessmentRuleBaseline a Sql pool vulnerability assessment rule baseline.
12160type SQLPoolVulnerabilityAssessmentRuleBaseline struct {
12161	autorest.Response `json:"-"`
12162	// SQLPoolVulnerabilityAssessmentRuleBaselineProperties - Resource properties.
12163	*SQLPoolVulnerabilityAssessmentRuleBaselineProperties `json:"properties,omitempty"`
12164	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
12165	ID *string `json:"id,omitempty"`
12166	// Name - READ-ONLY; The name of the resource
12167	Name *string `json:"name,omitempty"`
12168	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
12169	Type *string `json:"type,omitempty"`
12170}
12171
12172// MarshalJSON is the custom marshaler for SQLPoolVulnerabilityAssessmentRuleBaseline.
12173func (spvarb SQLPoolVulnerabilityAssessmentRuleBaseline) MarshalJSON() ([]byte, error) {
12174	objectMap := make(map[string]interface{})
12175	if spvarb.SQLPoolVulnerabilityAssessmentRuleBaselineProperties != nil {
12176		objectMap["properties"] = spvarb.SQLPoolVulnerabilityAssessmentRuleBaselineProperties
12177	}
12178	return json.Marshal(objectMap)
12179}
12180
12181// UnmarshalJSON is the custom unmarshaler for SQLPoolVulnerabilityAssessmentRuleBaseline struct.
12182func (spvarb *SQLPoolVulnerabilityAssessmentRuleBaseline) UnmarshalJSON(body []byte) error {
12183	var m map[string]*json.RawMessage
12184	err := json.Unmarshal(body, &m)
12185	if err != nil {
12186		return err
12187	}
12188	for k, v := range m {
12189		switch k {
12190		case "properties":
12191			if v != nil {
12192				var SQLPoolVulnerabilityAssessmentRuleBaselineProperties SQLPoolVulnerabilityAssessmentRuleBaselineProperties
12193				err = json.Unmarshal(*v, &SQLPoolVulnerabilityAssessmentRuleBaselineProperties)
12194				if err != nil {
12195					return err
12196				}
12197				spvarb.SQLPoolVulnerabilityAssessmentRuleBaselineProperties = &SQLPoolVulnerabilityAssessmentRuleBaselineProperties
12198			}
12199		case "id":
12200			if v != nil {
12201				var ID string
12202				err = json.Unmarshal(*v, &ID)
12203				if err != nil {
12204					return err
12205				}
12206				spvarb.ID = &ID
12207			}
12208		case "name":
12209			if v != nil {
12210				var name string
12211				err = json.Unmarshal(*v, &name)
12212				if err != nil {
12213					return err
12214				}
12215				spvarb.Name = &name
12216			}
12217		case "type":
12218			if v != nil {
12219				var typeVar string
12220				err = json.Unmarshal(*v, &typeVar)
12221				if err != nil {
12222					return err
12223				}
12224				spvarb.Type = &typeVar
12225			}
12226		}
12227	}
12228
12229	return nil
12230}
12231
12232// SQLPoolVulnerabilityAssessmentRuleBaselineItem properties for an Sql pool vulnerability assessment rule
12233// baseline's result.
12234type SQLPoolVulnerabilityAssessmentRuleBaselineItem struct {
12235	// Result - The rule baseline result
12236	Result *[]string `json:"result,omitempty"`
12237}
12238
12239// SQLPoolVulnerabilityAssessmentRuleBaselineProperties properties of a Sql pool vulnerability assessment
12240// rule baseline.
12241type SQLPoolVulnerabilityAssessmentRuleBaselineProperties struct {
12242	// BaselineResults - The rule baseline result
12243	BaselineResults *[]SQLPoolVulnerabilityAssessmentRuleBaselineItem `json:"baselineResults,omitempty"`
12244}
12245
12246// SQLPoolVulnerabilityAssessmentScanExportProperties properties of the export operation's result.
12247type SQLPoolVulnerabilityAssessmentScanExportProperties struct {
12248	// ExportedReportLocation - READ-ONLY; Location of the exported report (e.g. https://myStorage.blob.core.windows.net/VaScans/scans/serverName/databaseName/scan_scanId.xlsx).
12249	ExportedReportLocation *string `json:"exportedReportLocation,omitempty"`
12250}
12251
12252// MarshalJSON is the custom marshaler for SQLPoolVulnerabilityAssessmentScanExportProperties.
12253func (spvasep SQLPoolVulnerabilityAssessmentScanExportProperties) MarshalJSON() ([]byte, error) {
12254	objectMap := make(map[string]interface{})
12255	return json.Marshal(objectMap)
12256}
12257
12258// SQLPoolVulnerabilityAssessmentScansExport a Sql pool Vulnerability Assessment scan export resource.
12259type SQLPoolVulnerabilityAssessmentScansExport struct {
12260	autorest.Response `json:"-"`
12261	// SQLPoolVulnerabilityAssessmentScanExportProperties - Resource properties.
12262	*SQLPoolVulnerabilityAssessmentScanExportProperties `json:"properties,omitempty"`
12263	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
12264	ID *string `json:"id,omitempty"`
12265	// Name - READ-ONLY; The name of the resource
12266	Name *string `json:"name,omitempty"`
12267	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
12268	Type *string `json:"type,omitempty"`
12269}
12270
12271// MarshalJSON is the custom marshaler for SQLPoolVulnerabilityAssessmentScansExport.
12272func (spvase SQLPoolVulnerabilityAssessmentScansExport) MarshalJSON() ([]byte, error) {
12273	objectMap := make(map[string]interface{})
12274	if spvase.SQLPoolVulnerabilityAssessmentScanExportProperties != nil {
12275		objectMap["properties"] = spvase.SQLPoolVulnerabilityAssessmentScanExportProperties
12276	}
12277	return json.Marshal(objectMap)
12278}
12279
12280// UnmarshalJSON is the custom unmarshaler for SQLPoolVulnerabilityAssessmentScansExport struct.
12281func (spvase *SQLPoolVulnerabilityAssessmentScansExport) UnmarshalJSON(body []byte) error {
12282	var m map[string]*json.RawMessage
12283	err := json.Unmarshal(body, &m)
12284	if err != nil {
12285		return err
12286	}
12287	for k, v := range m {
12288		switch k {
12289		case "properties":
12290			if v != nil {
12291				var SQLPoolVulnerabilityAssessmentScanExportProperties SQLPoolVulnerabilityAssessmentScanExportProperties
12292				err = json.Unmarshal(*v, &SQLPoolVulnerabilityAssessmentScanExportProperties)
12293				if err != nil {
12294					return err
12295				}
12296				spvase.SQLPoolVulnerabilityAssessmentScanExportProperties = &SQLPoolVulnerabilityAssessmentScanExportProperties
12297			}
12298		case "id":
12299			if v != nil {
12300				var ID string
12301				err = json.Unmarshal(*v, &ID)
12302				if err != nil {
12303					return err
12304				}
12305				spvase.ID = &ID
12306			}
12307		case "name":
12308			if v != nil {
12309				var name string
12310				err = json.Unmarshal(*v, &name)
12311				if err != nil {
12312					return err
12313				}
12314				spvase.Name = &name
12315			}
12316		case "type":
12317			if v != nil {
12318				var typeVar string
12319				err = json.Unmarshal(*v, &typeVar)
12320				if err != nil {
12321					return err
12322				}
12323				spvase.Type = &typeVar
12324			}
12325		}
12326	}
12327
12328	return nil
12329}
12330
12331// SQLPoolVulnerabilityAssessmentScansInitiateScanFuture an abstraction for monitoring and retrieving the
12332// results of a long-running operation.
12333type SQLPoolVulnerabilityAssessmentScansInitiateScanFuture struct {
12334	azure.FutureAPI
12335	// Result returns the result of the asynchronous operation.
12336	// If the operation has not completed it will return an error.
12337	Result func(SQLPoolVulnerabilityAssessmentScansClient) (autorest.Response, error)
12338}
12339
12340// UnmarshalJSON is the custom unmarshaller for CreateFuture.
12341func (future *SQLPoolVulnerabilityAssessmentScansInitiateScanFuture) UnmarshalJSON(body []byte) error {
12342	var azFuture azure.Future
12343	if err := json.Unmarshal(body, &azFuture); err != nil {
12344		return err
12345	}
12346	future.FutureAPI = &azFuture
12347	future.Result = future.result
12348	return nil
12349}
12350
12351// result is the default implementation for SQLPoolVulnerabilityAssessmentScansInitiateScanFuture.Result.
12352func (future *SQLPoolVulnerabilityAssessmentScansInitiateScanFuture) result(client SQLPoolVulnerabilityAssessmentScansClient) (ar autorest.Response, err error) {
12353	var done bool
12354	done, err = future.DoneWithContext(context.Background(), client)
12355	if err != nil {
12356		err = autorest.NewErrorWithError(err, "synapse.SQLPoolVulnerabilityAssessmentScansInitiateScanFuture", "Result", future.Response(), "Polling failure")
12357		return
12358	}
12359	if !done {
12360		ar.Response = future.Response()
12361		err = azure.NewAsyncOpIncompleteError("synapse.SQLPoolVulnerabilityAssessmentScansInitiateScanFuture")
12362		return
12363	}
12364	ar.Response = future.Response()
12365	return
12366}
12367
12368// SQLPoolWorkloadClassifierCreateOrUpdateFuture an abstraction for monitoring and retrieving the results
12369// of a long-running operation.
12370type SQLPoolWorkloadClassifierCreateOrUpdateFuture struct {
12371	azure.FutureAPI
12372	// Result returns the result of the asynchronous operation.
12373	// If the operation has not completed it will return an error.
12374	Result func(SQLPoolWorkloadClassifierClient) (WorkloadClassifier, error)
12375}
12376
12377// UnmarshalJSON is the custom unmarshaller for CreateFuture.
12378func (future *SQLPoolWorkloadClassifierCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
12379	var azFuture azure.Future
12380	if err := json.Unmarshal(body, &azFuture); err != nil {
12381		return err
12382	}
12383	future.FutureAPI = &azFuture
12384	future.Result = future.result
12385	return nil
12386}
12387
12388// result is the default implementation for SQLPoolWorkloadClassifierCreateOrUpdateFuture.Result.
12389func (future *SQLPoolWorkloadClassifierCreateOrUpdateFuture) result(client SQLPoolWorkloadClassifierClient) (wc WorkloadClassifier, err error) {
12390	var done bool
12391	done, err = future.DoneWithContext(context.Background(), client)
12392	if err != nil {
12393		err = autorest.NewErrorWithError(err, "synapse.SQLPoolWorkloadClassifierCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
12394		return
12395	}
12396	if !done {
12397		wc.Response.Response = future.Response()
12398		err = azure.NewAsyncOpIncompleteError("synapse.SQLPoolWorkloadClassifierCreateOrUpdateFuture")
12399		return
12400	}
12401	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
12402	if wc.Response.Response, err = future.GetResult(sender); err == nil && wc.Response.Response.StatusCode != http.StatusNoContent {
12403		wc, err = client.CreateOrUpdateResponder(wc.Response.Response)
12404		if err != nil {
12405			err = autorest.NewErrorWithError(err, "synapse.SQLPoolWorkloadClassifierCreateOrUpdateFuture", "Result", wc.Response.Response, "Failure responding to request")
12406		}
12407	}
12408	return
12409}
12410
12411// SQLPoolWorkloadClassifierDeleteFuture an abstraction for monitoring and retrieving the results of a
12412// long-running operation.
12413type SQLPoolWorkloadClassifierDeleteFuture struct {
12414	azure.FutureAPI
12415	// Result returns the result of the asynchronous operation.
12416	// If the operation has not completed it will return an error.
12417	Result func(SQLPoolWorkloadClassifierClient) (autorest.Response, error)
12418}
12419
12420// UnmarshalJSON is the custom unmarshaller for CreateFuture.
12421func (future *SQLPoolWorkloadClassifierDeleteFuture) UnmarshalJSON(body []byte) error {
12422	var azFuture azure.Future
12423	if err := json.Unmarshal(body, &azFuture); err != nil {
12424		return err
12425	}
12426	future.FutureAPI = &azFuture
12427	future.Result = future.result
12428	return nil
12429}
12430
12431// result is the default implementation for SQLPoolWorkloadClassifierDeleteFuture.Result.
12432func (future *SQLPoolWorkloadClassifierDeleteFuture) result(client SQLPoolWorkloadClassifierClient) (ar autorest.Response, err error) {
12433	var done bool
12434	done, err = future.DoneWithContext(context.Background(), client)
12435	if err != nil {
12436		err = autorest.NewErrorWithError(err, "synapse.SQLPoolWorkloadClassifierDeleteFuture", "Result", future.Response(), "Polling failure")
12437		return
12438	}
12439	if !done {
12440		ar.Response = future.Response()
12441		err = azure.NewAsyncOpIncompleteError("synapse.SQLPoolWorkloadClassifierDeleteFuture")
12442		return
12443	}
12444	ar.Response = future.Response()
12445	return
12446}
12447
12448// SQLPoolWorkloadGroupCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
12449// long-running operation.
12450type SQLPoolWorkloadGroupCreateOrUpdateFuture struct {
12451	azure.FutureAPI
12452	// Result returns the result of the asynchronous operation.
12453	// If the operation has not completed it will return an error.
12454	Result func(SQLPoolWorkloadGroupClient) (WorkloadGroup, error)
12455}
12456
12457// UnmarshalJSON is the custom unmarshaller for CreateFuture.
12458func (future *SQLPoolWorkloadGroupCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
12459	var azFuture azure.Future
12460	if err := json.Unmarshal(body, &azFuture); err != nil {
12461		return err
12462	}
12463	future.FutureAPI = &azFuture
12464	future.Result = future.result
12465	return nil
12466}
12467
12468// result is the default implementation for SQLPoolWorkloadGroupCreateOrUpdateFuture.Result.
12469func (future *SQLPoolWorkloadGroupCreateOrUpdateFuture) result(client SQLPoolWorkloadGroupClient) (wg WorkloadGroup, err error) {
12470	var done bool
12471	done, err = future.DoneWithContext(context.Background(), client)
12472	if err != nil {
12473		err = autorest.NewErrorWithError(err, "synapse.SQLPoolWorkloadGroupCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
12474		return
12475	}
12476	if !done {
12477		wg.Response.Response = future.Response()
12478		err = azure.NewAsyncOpIncompleteError("synapse.SQLPoolWorkloadGroupCreateOrUpdateFuture")
12479		return
12480	}
12481	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
12482	if wg.Response.Response, err = future.GetResult(sender); err == nil && wg.Response.Response.StatusCode != http.StatusNoContent {
12483		wg, err = client.CreateOrUpdateResponder(wg.Response.Response)
12484		if err != nil {
12485			err = autorest.NewErrorWithError(err, "synapse.SQLPoolWorkloadGroupCreateOrUpdateFuture", "Result", wg.Response.Response, "Failure responding to request")
12486		}
12487	}
12488	return
12489}
12490
12491// SQLPoolWorkloadGroupDeleteFuture an abstraction for monitoring and retrieving the results of a
12492// long-running operation.
12493type SQLPoolWorkloadGroupDeleteFuture struct {
12494	azure.FutureAPI
12495	// Result returns the result of the asynchronous operation.
12496	// If the operation has not completed it will return an error.
12497	Result func(SQLPoolWorkloadGroupClient) (autorest.Response, error)
12498}
12499
12500// UnmarshalJSON is the custom unmarshaller for CreateFuture.
12501func (future *SQLPoolWorkloadGroupDeleteFuture) UnmarshalJSON(body []byte) error {
12502	var azFuture azure.Future
12503	if err := json.Unmarshal(body, &azFuture); err != nil {
12504		return err
12505	}
12506	future.FutureAPI = &azFuture
12507	future.Result = future.result
12508	return nil
12509}
12510
12511// result is the default implementation for SQLPoolWorkloadGroupDeleteFuture.Result.
12512func (future *SQLPoolWorkloadGroupDeleteFuture) result(client SQLPoolWorkloadGroupClient) (ar autorest.Response, err error) {
12513	var done bool
12514	done, err = future.DoneWithContext(context.Background(), client)
12515	if err != nil {
12516		err = autorest.NewErrorWithError(err, "synapse.SQLPoolWorkloadGroupDeleteFuture", "Result", future.Response(), "Polling failure")
12517		return
12518	}
12519	if !done {
12520		ar.Response = future.Response()
12521		err = azure.NewAsyncOpIncompleteError("synapse.SQLPoolWorkloadGroupDeleteFuture")
12522		return
12523	}
12524	ar.Response = future.Response()
12525	return
12526}
12527
12528// SsisEnvironment ssis environment.
12529type SsisEnvironment struct {
12530	// FolderID - Folder id which contains environment.
12531	FolderID *int64 `json:"folderId,omitempty"`
12532	// Variables - Variable in environment
12533	Variables *[]SsisVariable `json:"variables,omitempty"`
12534	// ID - Metadata id.
12535	ID *int64 `json:"id,omitempty"`
12536	// Name - Metadata name.
12537	Name *string `json:"name,omitempty"`
12538	// Description - Metadata description.
12539	Description *string `json:"description,omitempty"`
12540	// Type - Possible values include: 'TypeSsisObjectMetadata', 'TypeFolder', 'TypeProject', 'TypePackage', 'TypeEnvironment'
12541	Type TypeBasicSsisObjectMetadata `json:"type,omitempty"`
12542}
12543
12544// MarshalJSON is the custom marshaler for SsisEnvironment.
12545func (se SsisEnvironment) MarshalJSON() ([]byte, error) {
12546	se.Type = TypeEnvironment
12547	objectMap := make(map[string]interface{})
12548	if se.FolderID != nil {
12549		objectMap["folderId"] = se.FolderID
12550	}
12551	if se.Variables != nil {
12552		objectMap["variables"] = se.Variables
12553	}
12554	if se.ID != nil {
12555		objectMap["id"] = se.ID
12556	}
12557	if se.Name != nil {
12558		objectMap["name"] = se.Name
12559	}
12560	if se.Description != nil {
12561		objectMap["description"] = se.Description
12562	}
12563	if se.Type != "" {
12564		objectMap["type"] = se.Type
12565	}
12566	return json.Marshal(objectMap)
12567}
12568
12569// AsSsisFolder is the BasicSsisObjectMetadata implementation for SsisEnvironment.
12570func (se SsisEnvironment) AsSsisFolder() (*SsisFolder, bool) {
12571	return nil, false
12572}
12573
12574// AsSsisProject is the BasicSsisObjectMetadata implementation for SsisEnvironment.
12575func (se SsisEnvironment) AsSsisProject() (*SsisProject, bool) {
12576	return nil, false
12577}
12578
12579// AsSsisPackage is the BasicSsisObjectMetadata implementation for SsisEnvironment.
12580func (se SsisEnvironment) AsSsisPackage() (*SsisPackage, bool) {
12581	return nil, false
12582}
12583
12584// AsSsisEnvironment is the BasicSsisObjectMetadata implementation for SsisEnvironment.
12585func (se SsisEnvironment) AsSsisEnvironment() (*SsisEnvironment, bool) {
12586	return &se, true
12587}
12588
12589// AsSsisObjectMetadata is the BasicSsisObjectMetadata implementation for SsisEnvironment.
12590func (se SsisEnvironment) AsSsisObjectMetadata() (*SsisObjectMetadata, bool) {
12591	return nil, false
12592}
12593
12594// AsBasicSsisObjectMetadata is the BasicSsisObjectMetadata implementation for SsisEnvironment.
12595func (se SsisEnvironment) AsBasicSsisObjectMetadata() (BasicSsisObjectMetadata, bool) {
12596	return &se, true
12597}
12598
12599// SsisEnvironmentReference ssis environment reference.
12600type SsisEnvironmentReference struct {
12601	// ID - Environment reference id.
12602	ID *int64 `json:"id,omitempty"`
12603	// EnvironmentFolderName - Environment folder name.
12604	EnvironmentFolderName *string `json:"environmentFolderName,omitempty"`
12605	// EnvironmentName - Environment name.
12606	EnvironmentName *string `json:"environmentName,omitempty"`
12607	// ReferenceType - Reference type
12608	ReferenceType *string `json:"referenceType,omitempty"`
12609}
12610
12611// SsisFolder ssis folder.
12612type SsisFolder struct {
12613	// ID - Metadata id.
12614	ID *int64 `json:"id,omitempty"`
12615	// Name - Metadata name.
12616	Name *string `json:"name,omitempty"`
12617	// Description - Metadata description.
12618	Description *string `json:"description,omitempty"`
12619	// Type - Possible values include: 'TypeSsisObjectMetadata', 'TypeFolder', 'TypeProject', 'TypePackage', 'TypeEnvironment'
12620	Type TypeBasicSsisObjectMetadata `json:"type,omitempty"`
12621}
12622
12623// MarshalJSON is the custom marshaler for SsisFolder.
12624func (sf SsisFolder) MarshalJSON() ([]byte, error) {
12625	sf.Type = TypeFolder
12626	objectMap := make(map[string]interface{})
12627	if sf.ID != nil {
12628		objectMap["id"] = sf.ID
12629	}
12630	if sf.Name != nil {
12631		objectMap["name"] = sf.Name
12632	}
12633	if sf.Description != nil {
12634		objectMap["description"] = sf.Description
12635	}
12636	if sf.Type != "" {
12637		objectMap["type"] = sf.Type
12638	}
12639	return json.Marshal(objectMap)
12640}
12641
12642// AsSsisFolder is the BasicSsisObjectMetadata implementation for SsisFolder.
12643func (sf SsisFolder) AsSsisFolder() (*SsisFolder, bool) {
12644	return &sf, true
12645}
12646
12647// AsSsisProject is the BasicSsisObjectMetadata implementation for SsisFolder.
12648func (sf SsisFolder) AsSsisProject() (*SsisProject, bool) {
12649	return nil, false
12650}
12651
12652// AsSsisPackage is the BasicSsisObjectMetadata implementation for SsisFolder.
12653func (sf SsisFolder) AsSsisPackage() (*SsisPackage, bool) {
12654	return nil, false
12655}
12656
12657// AsSsisEnvironment is the BasicSsisObjectMetadata implementation for SsisFolder.
12658func (sf SsisFolder) AsSsisEnvironment() (*SsisEnvironment, bool) {
12659	return nil, false
12660}
12661
12662// AsSsisObjectMetadata is the BasicSsisObjectMetadata implementation for SsisFolder.
12663func (sf SsisFolder) AsSsisObjectMetadata() (*SsisObjectMetadata, bool) {
12664	return nil, false
12665}
12666
12667// AsBasicSsisObjectMetadata is the BasicSsisObjectMetadata implementation for SsisFolder.
12668func (sf SsisFolder) AsBasicSsisObjectMetadata() (BasicSsisObjectMetadata, bool) {
12669	return &sf, true
12670}
12671
12672// BasicSsisObjectMetadata SSIS object metadata.
12673type BasicSsisObjectMetadata interface {
12674	AsSsisFolder() (*SsisFolder, bool)
12675	AsSsisProject() (*SsisProject, bool)
12676	AsSsisPackage() (*SsisPackage, bool)
12677	AsSsisEnvironment() (*SsisEnvironment, bool)
12678	AsSsisObjectMetadata() (*SsisObjectMetadata, bool)
12679}
12680
12681// SsisObjectMetadata SSIS object metadata.
12682type SsisObjectMetadata struct {
12683	// ID - Metadata id.
12684	ID *int64 `json:"id,omitempty"`
12685	// Name - Metadata name.
12686	Name *string `json:"name,omitempty"`
12687	// Description - Metadata description.
12688	Description *string `json:"description,omitempty"`
12689	// Type - Possible values include: 'TypeSsisObjectMetadata', 'TypeFolder', 'TypeProject', 'TypePackage', 'TypeEnvironment'
12690	Type TypeBasicSsisObjectMetadata `json:"type,omitempty"`
12691}
12692
12693func unmarshalBasicSsisObjectMetadata(body []byte) (BasicSsisObjectMetadata, error) {
12694	var m map[string]interface{}
12695	err := json.Unmarshal(body, &m)
12696	if err != nil {
12697		return nil, err
12698	}
12699
12700	switch m["type"] {
12701	case string(TypeFolder):
12702		var sf SsisFolder
12703		err := json.Unmarshal(body, &sf)
12704		return sf, err
12705	case string(TypeProject):
12706		var sp SsisProject
12707		err := json.Unmarshal(body, &sp)
12708		return sp, err
12709	case string(TypePackage):
12710		var sp SsisPackage
12711		err := json.Unmarshal(body, &sp)
12712		return sp, err
12713	case string(TypeEnvironment):
12714		var se SsisEnvironment
12715		err := json.Unmarshal(body, &se)
12716		return se, err
12717	default:
12718		var som SsisObjectMetadata
12719		err := json.Unmarshal(body, &som)
12720		return som, err
12721	}
12722}
12723func unmarshalBasicSsisObjectMetadataArray(body []byte) ([]BasicSsisObjectMetadata, error) {
12724	var rawMessages []*json.RawMessage
12725	err := json.Unmarshal(body, &rawMessages)
12726	if err != nil {
12727		return nil, err
12728	}
12729
12730	somArray := make([]BasicSsisObjectMetadata, len(rawMessages))
12731
12732	for index, rawMessage := range rawMessages {
12733		som, err := unmarshalBasicSsisObjectMetadata(*rawMessage)
12734		if err != nil {
12735			return nil, err
12736		}
12737		somArray[index] = som
12738	}
12739	return somArray, nil
12740}
12741
12742// MarshalJSON is the custom marshaler for SsisObjectMetadata.
12743func (som SsisObjectMetadata) MarshalJSON() ([]byte, error) {
12744	som.Type = TypeSsisObjectMetadata
12745	objectMap := make(map[string]interface{})
12746	if som.ID != nil {
12747		objectMap["id"] = som.ID
12748	}
12749	if som.Name != nil {
12750		objectMap["name"] = som.Name
12751	}
12752	if som.Description != nil {
12753		objectMap["description"] = som.Description
12754	}
12755	if som.Type != "" {
12756		objectMap["type"] = som.Type
12757	}
12758	return json.Marshal(objectMap)
12759}
12760
12761// AsSsisFolder is the BasicSsisObjectMetadata implementation for SsisObjectMetadata.
12762func (som SsisObjectMetadata) AsSsisFolder() (*SsisFolder, bool) {
12763	return nil, false
12764}
12765
12766// AsSsisProject is the BasicSsisObjectMetadata implementation for SsisObjectMetadata.
12767func (som SsisObjectMetadata) AsSsisProject() (*SsisProject, bool) {
12768	return nil, false
12769}
12770
12771// AsSsisPackage is the BasicSsisObjectMetadata implementation for SsisObjectMetadata.
12772func (som SsisObjectMetadata) AsSsisPackage() (*SsisPackage, bool) {
12773	return nil, false
12774}
12775
12776// AsSsisEnvironment is the BasicSsisObjectMetadata implementation for SsisObjectMetadata.
12777func (som SsisObjectMetadata) AsSsisEnvironment() (*SsisEnvironment, bool) {
12778	return nil, false
12779}
12780
12781// AsSsisObjectMetadata is the BasicSsisObjectMetadata implementation for SsisObjectMetadata.
12782func (som SsisObjectMetadata) AsSsisObjectMetadata() (*SsisObjectMetadata, bool) {
12783	return &som, true
12784}
12785
12786// AsBasicSsisObjectMetadata is the BasicSsisObjectMetadata implementation for SsisObjectMetadata.
12787func (som SsisObjectMetadata) AsBasicSsisObjectMetadata() (BasicSsisObjectMetadata, bool) {
12788	return &som, true
12789}
12790
12791// SsisObjectMetadataListResponse a list of SSIS object metadata.
12792type SsisObjectMetadataListResponse struct {
12793	autorest.Response `json:"-"`
12794	// Value - List of SSIS object metadata.
12795	Value *[]BasicSsisObjectMetadata `json:"value,omitempty"`
12796	// NextLink - The link to the next page of results, if any remaining results exist.
12797	NextLink *string `json:"nextLink,omitempty"`
12798}
12799
12800// UnmarshalJSON is the custom unmarshaler for SsisObjectMetadataListResponse struct.
12801func (somlr *SsisObjectMetadataListResponse) UnmarshalJSON(body []byte) error {
12802	var m map[string]*json.RawMessage
12803	err := json.Unmarshal(body, &m)
12804	if err != nil {
12805		return err
12806	}
12807	for k, v := range m {
12808		switch k {
12809		case "value":
12810			if v != nil {
12811				value, err := unmarshalBasicSsisObjectMetadataArray(*v)
12812				if err != nil {
12813					return err
12814				}
12815				somlr.Value = &value
12816			}
12817		case "nextLink":
12818			if v != nil {
12819				var nextLink string
12820				err = json.Unmarshal(*v, &nextLink)
12821				if err != nil {
12822					return err
12823				}
12824				somlr.NextLink = &nextLink
12825			}
12826		}
12827	}
12828
12829	return nil
12830}
12831
12832// SsisObjectMetadataStatusResponse the status of the operation.
12833type SsisObjectMetadataStatusResponse struct {
12834	autorest.Response `json:"-"`
12835	// Status - The status of the operation.
12836	Status *string `json:"status,omitempty"`
12837	// Name - The operation name.
12838	Name *string `json:"name,omitempty"`
12839	// Properties - The operation properties.
12840	Properties *string `json:"properties,omitempty"`
12841	// Error - The operation error message.
12842	Error *string `json:"error,omitempty"`
12843}
12844
12845// SsisPackage ssis Package.
12846type SsisPackage struct {
12847	// FolderID - Folder id which contains package.
12848	FolderID *int64 `json:"folderId,omitempty"`
12849	// ProjectVersion - Project version which contains package.
12850	ProjectVersion *int64 `json:"projectVersion,omitempty"`
12851	// ProjectID - Project id which contains package.
12852	ProjectID *int64 `json:"projectId,omitempty"`
12853	// Parameters - Parameters in package
12854	Parameters *[]SsisParameter `json:"parameters,omitempty"`
12855	// ID - Metadata id.
12856	ID *int64 `json:"id,omitempty"`
12857	// Name - Metadata name.
12858	Name *string `json:"name,omitempty"`
12859	// Description - Metadata description.
12860	Description *string `json:"description,omitempty"`
12861	// Type - Possible values include: 'TypeSsisObjectMetadata', 'TypeFolder', 'TypeProject', 'TypePackage', 'TypeEnvironment'
12862	Type TypeBasicSsisObjectMetadata `json:"type,omitempty"`
12863}
12864
12865// MarshalJSON is the custom marshaler for SsisPackage.
12866func (sp SsisPackage) MarshalJSON() ([]byte, error) {
12867	sp.Type = TypePackage
12868	objectMap := make(map[string]interface{})
12869	if sp.FolderID != nil {
12870		objectMap["folderId"] = sp.FolderID
12871	}
12872	if sp.ProjectVersion != nil {
12873		objectMap["projectVersion"] = sp.ProjectVersion
12874	}
12875	if sp.ProjectID != nil {
12876		objectMap["projectId"] = sp.ProjectID
12877	}
12878	if sp.Parameters != nil {
12879		objectMap["parameters"] = sp.Parameters
12880	}
12881	if sp.ID != nil {
12882		objectMap["id"] = sp.ID
12883	}
12884	if sp.Name != nil {
12885		objectMap["name"] = sp.Name
12886	}
12887	if sp.Description != nil {
12888		objectMap["description"] = sp.Description
12889	}
12890	if sp.Type != "" {
12891		objectMap["type"] = sp.Type
12892	}
12893	return json.Marshal(objectMap)
12894}
12895
12896// AsSsisFolder is the BasicSsisObjectMetadata implementation for SsisPackage.
12897func (sp SsisPackage) AsSsisFolder() (*SsisFolder, bool) {
12898	return nil, false
12899}
12900
12901// AsSsisProject is the BasicSsisObjectMetadata implementation for SsisPackage.
12902func (sp SsisPackage) AsSsisProject() (*SsisProject, bool) {
12903	return nil, false
12904}
12905
12906// AsSsisPackage is the BasicSsisObjectMetadata implementation for SsisPackage.
12907func (sp SsisPackage) AsSsisPackage() (*SsisPackage, bool) {
12908	return &sp, true
12909}
12910
12911// AsSsisEnvironment is the BasicSsisObjectMetadata implementation for SsisPackage.
12912func (sp SsisPackage) AsSsisEnvironment() (*SsisEnvironment, bool) {
12913	return nil, false
12914}
12915
12916// AsSsisObjectMetadata is the BasicSsisObjectMetadata implementation for SsisPackage.
12917func (sp SsisPackage) AsSsisObjectMetadata() (*SsisObjectMetadata, bool) {
12918	return nil, false
12919}
12920
12921// AsBasicSsisObjectMetadata is the BasicSsisObjectMetadata implementation for SsisPackage.
12922func (sp SsisPackage) AsBasicSsisObjectMetadata() (BasicSsisObjectMetadata, bool) {
12923	return &sp, true
12924}
12925
12926// SsisParameter ssis parameter.
12927type SsisParameter struct {
12928	// ID - Parameter id.
12929	ID *int64 `json:"id,omitempty"`
12930	// Name - Parameter name.
12931	Name *string `json:"name,omitempty"`
12932	// Description - Parameter description.
12933	Description *string `json:"description,omitempty"`
12934	// DataType - Parameter type.
12935	DataType *string `json:"dataType,omitempty"`
12936	// Required - Whether parameter is required.
12937	Required *bool `json:"required,omitempty"`
12938	// Sensitive - Whether parameter is sensitive.
12939	Sensitive *bool `json:"sensitive,omitempty"`
12940	// DesignDefaultValue - Design default value of parameter.
12941	DesignDefaultValue *string `json:"designDefaultValue,omitempty"`
12942	// DefaultValue - Default value of parameter.
12943	DefaultValue *string `json:"defaultValue,omitempty"`
12944	// SensitiveDefaultValue - Default sensitive value of parameter.
12945	SensitiveDefaultValue *string `json:"sensitiveDefaultValue,omitempty"`
12946	// ValueType - Parameter value type.
12947	ValueType *string `json:"valueType,omitempty"`
12948	// ValueSet - Parameter value set.
12949	ValueSet *bool `json:"valueSet,omitempty"`
12950	// Variable - Parameter reference variable.
12951	Variable *string `json:"variable,omitempty"`
12952}
12953
12954// SsisProject ssis project.
12955type SsisProject struct {
12956	// FolderID - Folder id which contains project.
12957	FolderID *int64 `json:"folderId,omitempty"`
12958	// Version - Project version.
12959	Version *int64 `json:"version,omitempty"`
12960	// EnvironmentRefs - Environment reference in project
12961	EnvironmentRefs *[]SsisEnvironmentReference `json:"environmentRefs,omitempty"`
12962	// Parameters - Parameters in project
12963	Parameters *[]SsisParameter `json:"parameters,omitempty"`
12964	// ID - Metadata id.
12965	ID *int64 `json:"id,omitempty"`
12966	// Name - Metadata name.
12967	Name *string `json:"name,omitempty"`
12968	// Description - Metadata description.
12969	Description *string `json:"description,omitempty"`
12970	// Type - Possible values include: 'TypeSsisObjectMetadata', 'TypeFolder', 'TypeProject', 'TypePackage', 'TypeEnvironment'
12971	Type TypeBasicSsisObjectMetadata `json:"type,omitempty"`
12972}
12973
12974// MarshalJSON is the custom marshaler for SsisProject.
12975func (sp SsisProject) MarshalJSON() ([]byte, error) {
12976	sp.Type = TypeProject
12977	objectMap := make(map[string]interface{})
12978	if sp.FolderID != nil {
12979		objectMap["folderId"] = sp.FolderID
12980	}
12981	if sp.Version != nil {
12982		objectMap["version"] = sp.Version
12983	}
12984	if sp.EnvironmentRefs != nil {
12985		objectMap["environmentRefs"] = sp.EnvironmentRefs
12986	}
12987	if sp.Parameters != nil {
12988		objectMap["parameters"] = sp.Parameters
12989	}
12990	if sp.ID != nil {
12991		objectMap["id"] = sp.ID
12992	}
12993	if sp.Name != nil {
12994		objectMap["name"] = sp.Name
12995	}
12996	if sp.Description != nil {
12997		objectMap["description"] = sp.Description
12998	}
12999	if sp.Type != "" {
13000		objectMap["type"] = sp.Type
13001	}
13002	return json.Marshal(objectMap)
13003}
13004
13005// AsSsisFolder is the BasicSsisObjectMetadata implementation for SsisProject.
13006func (sp SsisProject) AsSsisFolder() (*SsisFolder, bool) {
13007	return nil, false
13008}
13009
13010// AsSsisProject is the BasicSsisObjectMetadata implementation for SsisProject.
13011func (sp SsisProject) AsSsisProject() (*SsisProject, bool) {
13012	return &sp, true
13013}
13014
13015// AsSsisPackage is the BasicSsisObjectMetadata implementation for SsisProject.
13016func (sp SsisProject) AsSsisPackage() (*SsisPackage, bool) {
13017	return nil, false
13018}
13019
13020// AsSsisEnvironment is the BasicSsisObjectMetadata implementation for SsisProject.
13021func (sp SsisProject) AsSsisEnvironment() (*SsisEnvironment, bool) {
13022	return nil, false
13023}
13024
13025// AsSsisObjectMetadata is the BasicSsisObjectMetadata implementation for SsisProject.
13026func (sp SsisProject) AsSsisObjectMetadata() (*SsisObjectMetadata, bool) {
13027	return nil, false
13028}
13029
13030// AsBasicSsisObjectMetadata is the BasicSsisObjectMetadata implementation for SsisProject.
13031func (sp SsisProject) AsBasicSsisObjectMetadata() (BasicSsisObjectMetadata, bool) {
13032	return &sp, true
13033}
13034
13035// SsisVariable ssis variable.
13036type SsisVariable struct {
13037	// ID - Variable id.
13038	ID *int64 `json:"id,omitempty"`
13039	// Name - Variable name.
13040	Name *string `json:"name,omitempty"`
13041	// Description - Variable description.
13042	Description *string `json:"description,omitempty"`
13043	// DataType - Variable type.
13044	DataType *string `json:"dataType,omitempty"`
13045	// Sensitive - Whether variable is sensitive.
13046	Sensitive *bool `json:"sensitive,omitempty"`
13047	// Value - Variable value.
13048	Value *string `json:"value,omitempty"`
13049	// SensitiveValue - Variable sensitive value.
13050	SensitiveValue *string `json:"sensitiveValue,omitempty"`
13051}
13052
13053// SubResource azure Synapse nested resource, which belongs to a workspace.
13054type SubResource struct {
13055	// Etag - READ-ONLY; Resource Etag.
13056	Etag *string `json:"etag,omitempty"`
13057	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
13058	ID *string `json:"id,omitempty"`
13059	// Name - READ-ONLY; The name of the resource
13060	Name *string `json:"name,omitempty"`
13061	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
13062	Type *string `json:"type,omitempty"`
13063}
13064
13065// MarshalJSON is the custom marshaler for SubResource.
13066func (sr SubResource) MarshalJSON() ([]byte, error) {
13067	objectMap := make(map[string]interface{})
13068	return json.Marshal(objectMap)
13069}
13070
13071// TopQueries a database query.
13072type TopQueries struct {
13073	// AggregationFunction - READ-ONLY; The function that is used to aggregate each query's metrics. Possible values include: 'Min', 'Max', 'Avg', 'Sum'
13074	AggregationFunction QueryAggregationFunction `json:"aggregationFunction,omitempty"`
13075	// ExecutionType - READ-ONLY; The execution type that is used to filter the query instances that are returned. Possible values include: 'Any', 'Regular', 'Irregular', 'Aborted', 'Exception'
13076	ExecutionType QueryExecutionType `json:"executionType,omitempty"`
13077	// IntervalType - READ-ONLY; The duration of the interval (ISO8601 duration format).
13078	IntervalType *string `json:"intervalType,omitempty"`
13079	// NumberOfTopQueries - READ-ONLY; The number of requested queries.
13080	NumberOfTopQueries *float64 `json:"numberOfTopQueries,omitempty"`
13081	// ObservationStartTime - READ-ONLY; The start time for queries that are returned (ISO8601 format)
13082	ObservationStartTime *date.Time `json:"observationStartTime,omitempty"`
13083	// ObservationEndTime - READ-ONLY; The end time for queries that are returned (ISO8601 format)
13084	ObservationEndTime *date.Time `json:"observationEndTime,omitempty"`
13085	// ObservedMetric - READ-ONLY; The type of metric to use for ordering the top metrics. Possible values include: 'CPU', 'Io', 'Logio', 'Duration', 'ExecutionCount'
13086	ObservedMetric QueryObservedMetricType `json:"observedMetric,omitempty"`
13087	// Queries - READ-ONLY; The list of queries.
13088	Queries *[]QueryStatistic `json:"queries,omitempty"`
13089}
13090
13091// MarshalJSON is the custom marshaler for TopQueries.
13092func (tq TopQueries) MarshalJSON() ([]byte, error) {
13093	objectMap := make(map[string]interface{})
13094	return json.Marshal(objectMap)
13095}
13096
13097// TopQueriesListResult represents the response to a get top queries request.
13098type TopQueriesListResult struct {
13099	// Value - The list of top queries.
13100	Value *[]TopQueries `json:"value,omitempty"`
13101}
13102
13103// TrackedResource the resource model definition for an Azure Resource Manager tracked top level resource
13104// which has 'tags' and a 'location'
13105type TrackedResource struct {
13106	// Tags - Resource tags.
13107	Tags map[string]*string `json:"tags"`
13108	// Location - The geo-location where the resource lives
13109	Location *string `json:"location,omitempty"`
13110	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
13111	ID *string `json:"id,omitempty"`
13112	// Name - READ-ONLY; The name of the resource
13113	Name *string `json:"name,omitempty"`
13114	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
13115	Type *string `json:"type,omitempty"`
13116}
13117
13118// MarshalJSON is the custom marshaler for TrackedResource.
13119func (tr TrackedResource) MarshalJSON() ([]byte, error) {
13120	objectMap := make(map[string]interface{})
13121	if tr.Tags != nil {
13122		objectMap["tags"] = tr.Tags
13123	}
13124	if tr.Location != nil {
13125		objectMap["location"] = tr.Location
13126	}
13127	return json.Marshal(objectMap)
13128}
13129
13130// TransparentDataEncryption represents a Sql pool transparent data encryption configuration.
13131type TransparentDataEncryption struct {
13132	autorest.Response `json:"-"`
13133	// Location - READ-ONLY; Resource location.
13134	Location *string `json:"location,omitempty"`
13135	// TransparentDataEncryptionProperties - Represents the properties of the resource.
13136	*TransparentDataEncryptionProperties `json:"properties,omitempty"`
13137	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
13138	ID *string `json:"id,omitempty"`
13139	// Name - READ-ONLY; The name of the resource
13140	Name *string `json:"name,omitempty"`
13141	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
13142	Type *string `json:"type,omitempty"`
13143}
13144
13145// MarshalJSON is the custom marshaler for TransparentDataEncryption.
13146func (tde TransparentDataEncryption) MarshalJSON() ([]byte, error) {
13147	objectMap := make(map[string]interface{})
13148	if tde.TransparentDataEncryptionProperties != nil {
13149		objectMap["properties"] = tde.TransparentDataEncryptionProperties
13150	}
13151	return json.Marshal(objectMap)
13152}
13153
13154// UnmarshalJSON is the custom unmarshaler for TransparentDataEncryption struct.
13155func (tde *TransparentDataEncryption) UnmarshalJSON(body []byte) error {
13156	var m map[string]*json.RawMessage
13157	err := json.Unmarshal(body, &m)
13158	if err != nil {
13159		return err
13160	}
13161	for k, v := range m {
13162		switch k {
13163		case "location":
13164			if v != nil {
13165				var location string
13166				err = json.Unmarshal(*v, &location)
13167				if err != nil {
13168					return err
13169				}
13170				tde.Location = &location
13171			}
13172		case "properties":
13173			if v != nil {
13174				var transparentDataEncryptionProperties TransparentDataEncryptionProperties
13175				err = json.Unmarshal(*v, &transparentDataEncryptionProperties)
13176				if err != nil {
13177					return err
13178				}
13179				tde.TransparentDataEncryptionProperties = &transparentDataEncryptionProperties
13180			}
13181		case "id":
13182			if v != nil {
13183				var ID string
13184				err = json.Unmarshal(*v, &ID)
13185				if err != nil {
13186					return err
13187				}
13188				tde.ID = &ID
13189			}
13190		case "name":
13191			if v != nil {
13192				var name string
13193				err = json.Unmarshal(*v, &name)
13194				if err != nil {
13195					return err
13196				}
13197				tde.Name = &name
13198			}
13199		case "type":
13200			if v != nil {
13201				var typeVar string
13202				err = json.Unmarshal(*v, &typeVar)
13203				if err != nil {
13204					return err
13205				}
13206				tde.Type = &typeVar
13207			}
13208		}
13209	}
13210
13211	return nil
13212}
13213
13214// TransparentDataEncryptionListResult a list of transparent data encryption configurations.
13215type TransparentDataEncryptionListResult struct {
13216	autorest.Response `json:"-"`
13217	// Value - READ-ONLY; Array of results.
13218	Value *[]TransparentDataEncryption `json:"value,omitempty"`
13219	// NextLink - READ-ONLY; Link to retrieve next page of results.
13220	NextLink *string `json:"nextLink,omitempty"`
13221}
13222
13223// MarshalJSON is the custom marshaler for TransparentDataEncryptionListResult.
13224func (tdelr TransparentDataEncryptionListResult) MarshalJSON() ([]byte, error) {
13225	objectMap := make(map[string]interface{})
13226	return json.Marshal(objectMap)
13227}
13228
13229// TransparentDataEncryptionListResultIterator provides access to a complete listing of
13230// TransparentDataEncryption values.
13231type TransparentDataEncryptionListResultIterator struct {
13232	i    int
13233	page TransparentDataEncryptionListResultPage
13234}
13235
13236// NextWithContext advances to the next value.  If there was an error making
13237// the request the iterator does not advance and the error is returned.
13238func (iter *TransparentDataEncryptionListResultIterator) NextWithContext(ctx context.Context) (err error) {
13239	if tracing.IsEnabled() {
13240		ctx = tracing.StartSpan(ctx, fqdn+"/TransparentDataEncryptionListResultIterator.NextWithContext")
13241		defer func() {
13242			sc := -1
13243			if iter.Response().Response.Response != nil {
13244				sc = iter.Response().Response.Response.StatusCode
13245			}
13246			tracing.EndSpan(ctx, sc, err)
13247		}()
13248	}
13249	iter.i++
13250	if iter.i < len(iter.page.Values()) {
13251		return nil
13252	}
13253	err = iter.page.NextWithContext(ctx)
13254	if err != nil {
13255		iter.i--
13256		return err
13257	}
13258	iter.i = 0
13259	return nil
13260}
13261
13262// Next advances to the next value.  If there was an error making
13263// the request the iterator does not advance and the error is returned.
13264// Deprecated: Use NextWithContext() instead.
13265func (iter *TransparentDataEncryptionListResultIterator) Next() error {
13266	return iter.NextWithContext(context.Background())
13267}
13268
13269// NotDone returns true if the enumeration should be started or is not yet complete.
13270func (iter TransparentDataEncryptionListResultIterator) NotDone() bool {
13271	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13272}
13273
13274// Response returns the raw server response from the last page request.
13275func (iter TransparentDataEncryptionListResultIterator) Response() TransparentDataEncryptionListResult {
13276	return iter.page.Response()
13277}
13278
13279// Value returns the current value or a zero-initialized value if the
13280// iterator has advanced beyond the end of the collection.
13281func (iter TransparentDataEncryptionListResultIterator) Value() TransparentDataEncryption {
13282	if !iter.page.NotDone() {
13283		return TransparentDataEncryption{}
13284	}
13285	return iter.page.Values()[iter.i]
13286}
13287
13288// Creates a new instance of the TransparentDataEncryptionListResultIterator type.
13289func NewTransparentDataEncryptionListResultIterator(page TransparentDataEncryptionListResultPage) TransparentDataEncryptionListResultIterator {
13290	return TransparentDataEncryptionListResultIterator{page: page}
13291}
13292
13293// IsEmpty returns true if the ListResult contains no values.
13294func (tdelr TransparentDataEncryptionListResult) IsEmpty() bool {
13295	return tdelr.Value == nil || len(*tdelr.Value) == 0
13296}
13297
13298// hasNextLink returns true if the NextLink is not empty.
13299func (tdelr TransparentDataEncryptionListResult) hasNextLink() bool {
13300	return tdelr.NextLink != nil && len(*tdelr.NextLink) != 0
13301}
13302
13303// transparentDataEncryptionListResultPreparer prepares a request to retrieve the next set of results.
13304// It returns nil if no more results exist.
13305func (tdelr TransparentDataEncryptionListResult) transparentDataEncryptionListResultPreparer(ctx context.Context) (*http.Request, error) {
13306	if !tdelr.hasNextLink() {
13307		return nil, nil
13308	}
13309	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13310		autorest.AsJSON(),
13311		autorest.AsGet(),
13312		autorest.WithBaseURL(to.String(tdelr.NextLink)))
13313}
13314
13315// TransparentDataEncryptionListResultPage contains a page of TransparentDataEncryption values.
13316type TransparentDataEncryptionListResultPage struct {
13317	fn    func(context.Context, TransparentDataEncryptionListResult) (TransparentDataEncryptionListResult, error)
13318	tdelr TransparentDataEncryptionListResult
13319}
13320
13321// NextWithContext advances to the next page of values.  If there was an error making
13322// the request the page does not advance and the error is returned.
13323func (page *TransparentDataEncryptionListResultPage) NextWithContext(ctx context.Context) (err error) {
13324	if tracing.IsEnabled() {
13325		ctx = tracing.StartSpan(ctx, fqdn+"/TransparentDataEncryptionListResultPage.NextWithContext")
13326		defer func() {
13327			sc := -1
13328			if page.Response().Response.Response != nil {
13329				sc = page.Response().Response.Response.StatusCode
13330			}
13331			tracing.EndSpan(ctx, sc, err)
13332		}()
13333	}
13334	for {
13335		next, err := page.fn(ctx, page.tdelr)
13336		if err != nil {
13337			return err
13338		}
13339		page.tdelr = next
13340		if !next.hasNextLink() || !next.IsEmpty() {
13341			break
13342		}
13343	}
13344	return nil
13345}
13346
13347// Next advances to the next page of values.  If there was an error making
13348// the request the page does not advance and the error is returned.
13349// Deprecated: Use NextWithContext() instead.
13350func (page *TransparentDataEncryptionListResultPage) Next() error {
13351	return page.NextWithContext(context.Background())
13352}
13353
13354// NotDone returns true if the page enumeration should be started or is not yet complete.
13355func (page TransparentDataEncryptionListResultPage) NotDone() bool {
13356	return !page.tdelr.IsEmpty()
13357}
13358
13359// Response returns the raw server response from the last page request.
13360func (page TransparentDataEncryptionListResultPage) Response() TransparentDataEncryptionListResult {
13361	return page.tdelr
13362}
13363
13364// Values returns the slice of values for the current page or nil if there are no values.
13365func (page TransparentDataEncryptionListResultPage) Values() []TransparentDataEncryption {
13366	if page.tdelr.IsEmpty() {
13367		return nil
13368	}
13369	return *page.tdelr.Value
13370}
13371
13372// Creates a new instance of the TransparentDataEncryptionListResultPage type.
13373func NewTransparentDataEncryptionListResultPage(cur TransparentDataEncryptionListResult, getNextPage func(context.Context, TransparentDataEncryptionListResult) (TransparentDataEncryptionListResult, error)) TransparentDataEncryptionListResultPage {
13374	return TransparentDataEncryptionListResultPage{
13375		fn:    getNextPage,
13376		tdelr: cur,
13377	}
13378}
13379
13380// TransparentDataEncryptionProperties represents the properties of a database transparent data encryption.
13381type TransparentDataEncryptionProperties struct {
13382	// Status - The status of the database transparent data encryption. Possible values include: 'TransparentDataEncryptionStatusEnabled', 'TransparentDataEncryptionStatusDisabled'
13383	Status TransparentDataEncryptionStatus `json:"status,omitempty"`
13384}
13385
13386// UpdateIntegrationRuntimeNodeRequest update integration runtime node request.
13387type UpdateIntegrationRuntimeNodeRequest struct {
13388	// ConcurrentJobsLimit - The number of concurrent jobs permitted to run on the integration runtime node. Values between 1 and maxConcurrentJobs(inclusive) are allowed.
13389	ConcurrentJobsLimit *int32 `json:"concurrentJobsLimit,omitempty"`
13390}
13391
13392// UpdateIntegrationRuntimeRequest update integration runtime request.
13393type UpdateIntegrationRuntimeRequest struct {
13394	// AutoUpdate - Enables or disables the auto-update feature of the self-hosted integration runtime. See https://go.microsoft.com/fwlink/?linkid=854189. Possible values include: 'On', 'Off'
13395	AutoUpdate IntegrationRuntimeAutoUpdate `json:"autoUpdate,omitempty"`
13396	// UpdateDelayOffset - The time offset (in hours) in the day, e.g., PT03H is 3 hours. The integration runtime auto update will happen on that time.
13397	UpdateDelayOffset *string `json:"updateDelayOffset,omitempty"`
13398}
13399
13400// VirtualNetworkProfile virtual Network Profile
13401type VirtualNetworkProfile struct {
13402	// ComputeSubnetID - Subnet ID used for computes in workspace
13403	ComputeSubnetID *string `json:"computeSubnetId,omitempty"`
13404}
13405
13406// VulnerabilityAssessmentRecurringScansProperties properties of a Vulnerability Assessment recurring
13407// scans.
13408type VulnerabilityAssessmentRecurringScansProperties struct {
13409	// IsEnabled - Recurring scans state.
13410	IsEnabled *bool `json:"isEnabled,omitempty"`
13411	// EmailSubscriptionAdmins - Specifies that the schedule scan notification will be is sent to the subscription administrators.
13412	EmailSubscriptionAdmins *bool `json:"emailSubscriptionAdmins,omitempty"`
13413	// Emails - Specifies an array of e-mail addresses to which the scan notification is sent.
13414	Emails *[]string `json:"emails,omitempty"`
13415}
13416
13417// VulnerabilityAssessmentScanError properties of a vulnerability assessment scan error.
13418type VulnerabilityAssessmentScanError struct {
13419	// Code - READ-ONLY; The error code.
13420	Code *string `json:"code,omitempty"`
13421	// Message - READ-ONLY; The error message.
13422	Message *string `json:"message,omitempty"`
13423}
13424
13425// MarshalJSON is the custom marshaler for VulnerabilityAssessmentScanError.
13426func (vase VulnerabilityAssessmentScanError) MarshalJSON() ([]byte, error) {
13427	objectMap := make(map[string]interface{})
13428	return json.Marshal(objectMap)
13429}
13430
13431// VulnerabilityAssessmentScanRecord a vulnerability assessment scan record.
13432type VulnerabilityAssessmentScanRecord struct {
13433	autorest.Response `json:"-"`
13434	// VulnerabilityAssessmentScanRecordProperties - Resource properties.
13435	*VulnerabilityAssessmentScanRecordProperties `json:"properties,omitempty"`
13436	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
13437	ID *string `json:"id,omitempty"`
13438	// Name - READ-ONLY; The name of the resource
13439	Name *string `json:"name,omitempty"`
13440	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
13441	Type *string `json:"type,omitempty"`
13442}
13443
13444// MarshalJSON is the custom marshaler for VulnerabilityAssessmentScanRecord.
13445func (vasr VulnerabilityAssessmentScanRecord) MarshalJSON() ([]byte, error) {
13446	objectMap := make(map[string]interface{})
13447	if vasr.VulnerabilityAssessmentScanRecordProperties != nil {
13448		objectMap["properties"] = vasr.VulnerabilityAssessmentScanRecordProperties
13449	}
13450	return json.Marshal(objectMap)
13451}
13452
13453// UnmarshalJSON is the custom unmarshaler for VulnerabilityAssessmentScanRecord struct.
13454func (vasr *VulnerabilityAssessmentScanRecord) UnmarshalJSON(body []byte) error {
13455	var m map[string]*json.RawMessage
13456	err := json.Unmarshal(body, &m)
13457	if err != nil {
13458		return err
13459	}
13460	for k, v := range m {
13461		switch k {
13462		case "properties":
13463			if v != nil {
13464				var vulnerabilityAssessmentScanRecordProperties VulnerabilityAssessmentScanRecordProperties
13465				err = json.Unmarshal(*v, &vulnerabilityAssessmentScanRecordProperties)
13466				if err != nil {
13467					return err
13468				}
13469				vasr.VulnerabilityAssessmentScanRecordProperties = &vulnerabilityAssessmentScanRecordProperties
13470			}
13471		case "id":
13472			if v != nil {
13473				var ID string
13474				err = json.Unmarshal(*v, &ID)
13475				if err != nil {
13476					return err
13477				}
13478				vasr.ID = &ID
13479			}
13480		case "name":
13481			if v != nil {
13482				var name string
13483				err = json.Unmarshal(*v, &name)
13484				if err != nil {
13485					return err
13486				}
13487				vasr.Name = &name
13488			}
13489		case "type":
13490			if v != nil {
13491				var typeVar string
13492				err = json.Unmarshal(*v, &typeVar)
13493				if err != nil {
13494					return err
13495				}
13496				vasr.Type = &typeVar
13497			}
13498		}
13499	}
13500
13501	return nil
13502}
13503
13504// VulnerabilityAssessmentScanRecordListResult a list of vulnerability assessment scan records.
13505type VulnerabilityAssessmentScanRecordListResult struct {
13506	autorest.Response `json:"-"`
13507	// Value - READ-ONLY; Array of results.
13508	Value *[]VulnerabilityAssessmentScanRecord `json:"value,omitempty"`
13509	// NextLink - READ-ONLY; Link to retrieve next page of results.
13510	NextLink *string `json:"nextLink,omitempty"`
13511}
13512
13513// MarshalJSON is the custom marshaler for VulnerabilityAssessmentScanRecordListResult.
13514func (vasrlr VulnerabilityAssessmentScanRecordListResult) MarshalJSON() ([]byte, error) {
13515	objectMap := make(map[string]interface{})
13516	return json.Marshal(objectMap)
13517}
13518
13519// VulnerabilityAssessmentScanRecordListResultIterator provides access to a complete listing of
13520// VulnerabilityAssessmentScanRecord values.
13521type VulnerabilityAssessmentScanRecordListResultIterator struct {
13522	i    int
13523	page VulnerabilityAssessmentScanRecordListResultPage
13524}
13525
13526// NextWithContext advances to the next value.  If there was an error making
13527// the request the iterator does not advance and the error is returned.
13528func (iter *VulnerabilityAssessmentScanRecordListResultIterator) NextWithContext(ctx context.Context) (err error) {
13529	if tracing.IsEnabled() {
13530		ctx = tracing.StartSpan(ctx, fqdn+"/VulnerabilityAssessmentScanRecordListResultIterator.NextWithContext")
13531		defer func() {
13532			sc := -1
13533			if iter.Response().Response.Response != nil {
13534				sc = iter.Response().Response.Response.StatusCode
13535			}
13536			tracing.EndSpan(ctx, sc, err)
13537		}()
13538	}
13539	iter.i++
13540	if iter.i < len(iter.page.Values()) {
13541		return nil
13542	}
13543	err = iter.page.NextWithContext(ctx)
13544	if err != nil {
13545		iter.i--
13546		return err
13547	}
13548	iter.i = 0
13549	return nil
13550}
13551
13552// Next advances to the next value.  If there was an error making
13553// the request the iterator does not advance and the error is returned.
13554// Deprecated: Use NextWithContext() instead.
13555func (iter *VulnerabilityAssessmentScanRecordListResultIterator) Next() error {
13556	return iter.NextWithContext(context.Background())
13557}
13558
13559// NotDone returns true if the enumeration should be started or is not yet complete.
13560func (iter VulnerabilityAssessmentScanRecordListResultIterator) NotDone() bool {
13561	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13562}
13563
13564// Response returns the raw server response from the last page request.
13565func (iter VulnerabilityAssessmentScanRecordListResultIterator) Response() VulnerabilityAssessmentScanRecordListResult {
13566	return iter.page.Response()
13567}
13568
13569// Value returns the current value or a zero-initialized value if the
13570// iterator has advanced beyond the end of the collection.
13571func (iter VulnerabilityAssessmentScanRecordListResultIterator) Value() VulnerabilityAssessmentScanRecord {
13572	if !iter.page.NotDone() {
13573		return VulnerabilityAssessmentScanRecord{}
13574	}
13575	return iter.page.Values()[iter.i]
13576}
13577
13578// Creates a new instance of the VulnerabilityAssessmentScanRecordListResultIterator type.
13579func NewVulnerabilityAssessmentScanRecordListResultIterator(page VulnerabilityAssessmentScanRecordListResultPage) VulnerabilityAssessmentScanRecordListResultIterator {
13580	return VulnerabilityAssessmentScanRecordListResultIterator{page: page}
13581}
13582
13583// IsEmpty returns true if the ListResult contains no values.
13584func (vasrlr VulnerabilityAssessmentScanRecordListResult) IsEmpty() bool {
13585	return vasrlr.Value == nil || len(*vasrlr.Value) == 0
13586}
13587
13588// hasNextLink returns true if the NextLink is not empty.
13589func (vasrlr VulnerabilityAssessmentScanRecordListResult) hasNextLink() bool {
13590	return vasrlr.NextLink != nil && len(*vasrlr.NextLink) != 0
13591}
13592
13593// vulnerabilityAssessmentScanRecordListResultPreparer prepares a request to retrieve the next set of results.
13594// It returns nil if no more results exist.
13595func (vasrlr VulnerabilityAssessmentScanRecordListResult) vulnerabilityAssessmentScanRecordListResultPreparer(ctx context.Context) (*http.Request, error) {
13596	if !vasrlr.hasNextLink() {
13597		return nil, nil
13598	}
13599	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13600		autorest.AsJSON(),
13601		autorest.AsGet(),
13602		autorest.WithBaseURL(to.String(vasrlr.NextLink)))
13603}
13604
13605// VulnerabilityAssessmentScanRecordListResultPage contains a page of VulnerabilityAssessmentScanRecord
13606// values.
13607type VulnerabilityAssessmentScanRecordListResultPage struct {
13608	fn     func(context.Context, VulnerabilityAssessmentScanRecordListResult) (VulnerabilityAssessmentScanRecordListResult, error)
13609	vasrlr VulnerabilityAssessmentScanRecordListResult
13610}
13611
13612// NextWithContext advances to the next page of values.  If there was an error making
13613// the request the page does not advance and the error is returned.
13614func (page *VulnerabilityAssessmentScanRecordListResultPage) NextWithContext(ctx context.Context) (err error) {
13615	if tracing.IsEnabled() {
13616		ctx = tracing.StartSpan(ctx, fqdn+"/VulnerabilityAssessmentScanRecordListResultPage.NextWithContext")
13617		defer func() {
13618			sc := -1
13619			if page.Response().Response.Response != nil {
13620				sc = page.Response().Response.Response.StatusCode
13621			}
13622			tracing.EndSpan(ctx, sc, err)
13623		}()
13624	}
13625	for {
13626		next, err := page.fn(ctx, page.vasrlr)
13627		if err != nil {
13628			return err
13629		}
13630		page.vasrlr = next
13631		if !next.hasNextLink() || !next.IsEmpty() {
13632			break
13633		}
13634	}
13635	return nil
13636}
13637
13638// Next advances to the next page of values.  If there was an error making
13639// the request the page does not advance and the error is returned.
13640// Deprecated: Use NextWithContext() instead.
13641func (page *VulnerabilityAssessmentScanRecordListResultPage) Next() error {
13642	return page.NextWithContext(context.Background())
13643}
13644
13645// NotDone returns true if the page enumeration should be started or is not yet complete.
13646func (page VulnerabilityAssessmentScanRecordListResultPage) NotDone() bool {
13647	return !page.vasrlr.IsEmpty()
13648}
13649
13650// Response returns the raw server response from the last page request.
13651func (page VulnerabilityAssessmentScanRecordListResultPage) Response() VulnerabilityAssessmentScanRecordListResult {
13652	return page.vasrlr
13653}
13654
13655// Values returns the slice of values for the current page or nil if there are no values.
13656func (page VulnerabilityAssessmentScanRecordListResultPage) Values() []VulnerabilityAssessmentScanRecord {
13657	if page.vasrlr.IsEmpty() {
13658		return nil
13659	}
13660	return *page.vasrlr.Value
13661}
13662
13663// Creates a new instance of the VulnerabilityAssessmentScanRecordListResultPage type.
13664func NewVulnerabilityAssessmentScanRecordListResultPage(cur VulnerabilityAssessmentScanRecordListResult, getNextPage func(context.Context, VulnerabilityAssessmentScanRecordListResult) (VulnerabilityAssessmentScanRecordListResult, error)) VulnerabilityAssessmentScanRecordListResultPage {
13665	return VulnerabilityAssessmentScanRecordListResultPage{
13666		fn:     getNextPage,
13667		vasrlr: cur,
13668	}
13669}
13670
13671// VulnerabilityAssessmentScanRecordProperties properties of a vulnerability assessment scan record.
13672type VulnerabilityAssessmentScanRecordProperties struct {
13673	// ScanID - READ-ONLY; The scan ID.
13674	ScanID *string `json:"scanId,omitempty"`
13675	// TriggerType - READ-ONLY; The scan trigger type. Possible values include: 'OnDemand', 'Recurring'
13676	TriggerType VulnerabilityAssessmentScanTriggerType `json:"triggerType,omitempty"`
13677	// State - READ-ONLY; The scan status. Possible values include: 'VulnerabilityAssessmentScanStatePassed', 'VulnerabilityAssessmentScanStateFailed', 'VulnerabilityAssessmentScanStateFailedToRun', 'VulnerabilityAssessmentScanStateInProgress'
13678	State VulnerabilityAssessmentScanState `json:"state,omitempty"`
13679	// StartTime - READ-ONLY; The scan start time (UTC).
13680	StartTime *date.Time `json:"startTime,omitempty"`
13681	// EndTime - READ-ONLY; The scan end time (UTC).
13682	EndTime *date.Time `json:"endTime,omitempty"`
13683	// Errors - READ-ONLY; The scan errors.
13684	Errors *[]VulnerabilityAssessmentScanError `json:"errors,omitempty"`
13685	// StorageContainerPath - READ-ONLY; The scan results storage container path.
13686	StorageContainerPath *string `json:"storageContainerPath,omitempty"`
13687	// NumberOfFailedSecurityChecks - READ-ONLY; The number of failed security checks.
13688	NumberOfFailedSecurityChecks *int32 `json:"numberOfFailedSecurityChecks,omitempty"`
13689}
13690
13691// MarshalJSON is the custom marshaler for VulnerabilityAssessmentScanRecordProperties.
13692func (vasrp VulnerabilityAssessmentScanRecordProperties) MarshalJSON() ([]byte, error) {
13693	objectMap := make(map[string]interface{})
13694	return json.Marshal(objectMap)
13695}
13696
13697// WorkloadClassifier workload classifier operations for a data warehouse
13698type WorkloadClassifier struct {
13699	autorest.Response `json:"-"`
13700	// WorkloadClassifierProperties - Resource properties.
13701	*WorkloadClassifierProperties `json:"properties,omitempty"`
13702	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
13703	ID *string `json:"id,omitempty"`
13704	// Name - READ-ONLY; The name of the resource
13705	Name *string `json:"name,omitempty"`
13706	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
13707	Type *string `json:"type,omitempty"`
13708}
13709
13710// MarshalJSON is the custom marshaler for WorkloadClassifier.
13711func (wc WorkloadClassifier) MarshalJSON() ([]byte, error) {
13712	objectMap := make(map[string]interface{})
13713	if wc.WorkloadClassifierProperties != nil {
13714		objectMap["properties"] = wc.WorkloadClassifierProperties
13715	}
13716	return json.Marshal(objectMap)
13717}
13718
13719// UnmarshalJSON is the custom unmarshaler for WorkloadClassifier struct.
13720func (wc *WorkloadClassifier) UnmarshalJSON(body []byte) error {
13721	var m map[string]*json.RawMessage
13722	err := json.Unmarshal(body, &m)
13723	if err != nil {
13724		return err
13725	}
13726	for k, v := range m {
13727		switch k {
13728		case "properties":
13729			if v != nil {
13730				var workloadClassifierProperties WorkloadClassifierProperties
13731				err = json.Unmarshal(*v, &workloadClassifierProperties)
13732				if err != nil {
13733					return err
13734				}
13735				wc.WorkloadClassifierProperties = &workloadClassifierProperties
13736			}
13737		case "id":
13738			if v != nil {
13739				var ID string
13740				err = json.Unmarshal(*v, &ID)
13741				if err != nil {
13742					return err
13743				}
13744				wc.ID = &ID
13745			}
13746		case "name":
13747			if v != nil {
13748				var name string
13749				err = json.Unmarshal(*v, &name)
13750				if err != nil {
13751					return err
13752				}
13753				wc.Name = &name
13754			}
13755		case "type":
13756			if v != nil {
13757				var typeVar string
13758				err = json.Unmarshal(*v, &typeVar)
13759				if err != nil {
13760					return err
13761				}
13762				wc.Type = &typeVar
13763			}
13764		}
13765	}
13766
13767	return nil
13768}
13769
13770// WorkloadClassifierListResult a list of workload classifiers for a workload group.
13771type WorkloadClassifierListResult struct {
13772	autorest.Response `json:"-"`
13773	// Value - READ-ONLY; Array of results.
13774	Value *[]WorkloadClassifier `json:"value,omitempty"`
13775	// NextLink - READ-ONLY; Link to retrieve next page of results.
13776	NextLink *string `json:"nextLink,omitempty"`
13777}
13778
13779// MarshalJSON is the custom marshaler for WorkloadClassifierListResult.
13780func (wclr WorkloadClassifierListResult) MarshalJSON() ([]byte, error) {
13781	objectMap := make(map[string]interface{})
13782	return json.Marshal(objectMap)
13783}
13784
13785// WorkloadClassifierListResultIterator provides access to a complete listing of WorkloadClassifier values.
13786type WorkloadClassifierListResultIterator struct {
13787	i    int
13788	page WorkloadClassifierListResultPage
13789}
13790
13791// NextWithContext advances to the next value.  If there was an error making
13792// the request the iterator does not advance and the error is returned.
13793func (iter *WorkloadClassifierListResultIterator) NextWithContext(ctx context.Context) (err error) {
13794	if tracing.IsEnabled() {
13795		ctx = tracing.StartSpan(ctx, fqdn+"/WorkloadClassifierListResultIterator.NextWithContext")
13796		defer func() {
13797			sc := -1
13798			if iter.Response().Response.Response != nil {
13799				sc = iter.Response().Response.Response.StatusCode
13800			}
13801			tracing.EndSpan(ctx, sc, err)
13802		}()
13803	}
13804	iter.i++
13805	if iter.i < len(iter.page.Values()) {
13806		return nil
13807	}
13808	err = iter.page.NextWithContext(ctx)
13809	if err != nil {
13810		iter.i--
13811		return err
13812	}
13813	iter.i = 0
13814	return nil
13815}
13816
13817// Next advances to the next value.  If there was an error making
13818// the request the iterator does not advance and the error is returned.
13819// Deprecated: Use NextWithContext() instead.
13820func (iter *WorkloadClassifierListResultIterator) Next() error {
13821	return iter.NextWithContext(context.Background())
13822}
13823
13824// NotDone returns true if the enumeration should be started or is not yet complete.
13825func (iter WorkloadClassifierListResultIterator) NotDone() bool {
13826	return iter.page.NotDone() && iter.i < len(iter.page.Values())
13827}
13828
13829// Response returns the raw server response from the last page request.
13830func (iter WorkloadClassifierListResultIterator) Response() WorkloadClassifierListResult {
13831	return iter.page.Response()
13832}
13833
13834// Value returns the current value or a zero-initialized value if the
13835// iterator has advanced beyond the end of the collection.
13836func (iter WorkloadClassifierListResultIterator) Value() WorkloadClassifier {
13837	if !iter.page.NotDone() {
13838		return WorkloadClassifier{}
13839	}
13840	return iter.page.Values()[iter.i]
13841}
13842
13843// Creates a new instance of the WorkloadClassifierListResultIterator type.
13844func NewWorkloadClassifierListResultIterator(page WorkloadClassifierListResultPage) WorkloadClassifierListResultIterator {
13845	return WorkloadClassifierListResultIterator{page: page}
13846}
13847
13848// IsEmpty returns true if the ListResult contains no values.
13849func (wclr WorkloadClassifierListResult) IsEmpty() bool {
13850	return wclr.Value == nil || len(*wclr.Value) == 0
13851}
13852
13853// hasNextLink returns true if the NextLink is not empty.
13854func (wclr WorkloadClassifierListResult) hasNextLink() bool {
13855	return wclr.NextLink != nil && len(*wclr.NextLink) != 0
13856}
13857
13858// workloadClassifierListResultPreparer prepares a request to retrieve the next set of results.
13859// It returns nil if no more results exist.
13860func (wclr WorkloadClassifierListResult) workloadClassifierListResultPreparer(ctx context.Context) (*http.Request, error) {
13861	if !wclr.hasNextLink() {
13862		return nil, nil
13863	}
13864	return autorest.Prepare((&http.Request{}).WithContext(ctx),
13865		autorest.AsJSON(),
13866		autorest.AsGet(),
13867		autorest.WithBaseURL(to.String(wclr.NextLink)))
13868}
13869
13870// WorkloadClassifierListResultPage contains a page of WorkloadClassifier values.
13871type WorkloadClassifierListResultPage struct {
13872	fn   func(context.Context, WorkloadClassifierListResult) (WorkloadClassifierListResult, error)
13873	wclr WorkloadClassifierListResult
13874}
13875
13876// NextWithContext advances to the next page of values.  If there was an error making
13877// the request the page does not advance and the error is returned.
13878func (page *WorkloadClassifierListResultPage) NextWithContext(ctx context.Context) (err error) {
13879	if tracing.IsEnabled() {
13880		ctx = tracing.StartSpan(ctx, fqdn+"/WorkloadClassifierListResultPage.NextWithContext")
13881		defer func() {
13882			sc := -1
13883			if page.Response().Response.Response != nil {
13884				sc = page.Response().Response.Response.StatusCode
13885			}
13886			tracing.EndSpan(ctx, sc, err)
13887		}()
13888	}
13889	for {
13890		next, err := page.fn(ctx, page.wclr)
13891		if err != nil {
13892			return err
13893		}
13894		page.wclr = next
13895		if !next.hasNextLink() || !next.IsEmpty() {
13896			break
13897		}
13898	}
13899	return nil
13900}
13901
13902// Next advances to the next page of values.  If there was an error making
13903// the request the page does not advance and the error is returned.
13904// Deprecated: Use NextWithContext() instead.
13905func (page *WorkloadClassifierListResultPage) Next() error {
13906	return page.NextWithContext(context.Background())
13907}
13908
13909// NotDone returns true if the page enumeration should be started or is not yet complete.
13910func (page WorkloadClassifierListResultPage) NotDone() bool {
13911	return !page.wclr.IsEmpty()
13912}
13913
13914// Response returns the raw server response from the last page request.
13915func (page WorkloadClassifierListResultPage) Response() WorkloadClassifierListResult {
13916	return page.wclr
13917}
13918
13919// Values returns the slice of values for the current page or nil if there are no values.
13920func (page WorkloadClassifierListResultPage) Values() []WorkloadClassifier {
13921	if page.wclr.IsEmpty() {
13922		return nil
13923	}
13924	return *page.wclr.Value
13925}
13926
13927// Creates a new instance of the WorkloadClassifierListResultPage type.
13928func NewWorkloadClassifierListResultPage(cur WorkloadClassifierListResult, getNextPage func(context.Context, WorkloadClassifierListResult) (WorkloadClassifierListResult, error)) WorkloadClassifierListResultPage {
13929	return WorkloadClassifierListResultPage{
13930		fn:   getNextPage,
13931		wclr: cur,
13932	}
13933}
13934
13935// WorkloadClassifierProperties workload classifier definition. For more information look at
13936// sys.workload_management_workload_classifiers (DMV).
13937type WorkloadClassifierProperties struct {
13938	// MemberName - The workload classifier member name.
13939	MemberName *string `json:"memberName,omitempty"`
13940	// Label - The workload classifier label.
13941	Label *string `json:"label,omitempty"`
13942	// Context - The workload classifier context.
13943	Context *string `json:"context,omitempty"`
13944	// StartTime - The workload classifier start time for classification.
13945	StartTime *string `json:"startTime,omitempty"`
13946	// EndTime - The workload classifier end time for classification.
13947	EndTime *string `json:"endTime,omitempty"`
13948	// Importance - The workload classifier importance.
13949	Importance *string `json:"importance,omitempty"`
13950}
13951
13952// WorkloadGroup workload group operations for a sql pool
13953type WorkloadGroup struct {
13954	autorest.Response `json:"-"`
13955	// WorkloadGroupProperties - Resource properties.
13956	*WorkloadGroupProperties `json:"properties,omitempty"`
13957	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
13958	ID *string `json:"id,omitempty"`
13959	// Name - READ-ONLY; The name of the resource
13960	Name *string `json:"name,omitempty"`
13961	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
13962	Type *string `json:"type,omitempty"`
13963}
13964
13965// MarshalJSON is the custom marshaler for WorkloadGroup.
13966func (wg WorkloadGroup) MarshalJSON() ([]byte, error) {
13967	objectMap := make(map[string]interface{})
13968	if wg.WorkloadGroupProperties != nil {
13969		objectMap["properties"] = wg.WorkloadGroupProperties
13970	}
13971	return json.Marshal(objectMap)
13972}
13973
13974// UnmarshalJSON is the custom unmarshaler for WorkloadGroup struct.
13975func (wg *WorkloadGroup) UnmarshalJSON(body []byte) error {
13976	var m map[string]*json.RawMessage
13977	err := json.Unmarshal(body, &m)
13978	if err != nil {
13979		return err
13980	}
13981	for k, v := range m {
13982		switch k {
13983		case "properties":
13984			if v != nil {
13985				var workloadGroupProperties WorkloadGroupProperties
13986				err = json.Unmarshal(*v, &workloadGroupProperties)
13987				if err != nil {
13988					return err
13989				}
13990				wg.WorkloadGroupProperties = &workloadGroupProperties
13991			}
13992		case "id":
13993			if v != nil {
13994				var ID string
13995				err = json.Unmarshal(*v, &ID)
13996				if err != nil {
13997					return err
13998				}
13999				wg.ID = &ID
14000			}
14001		case "name":
14002			if v != nil {
14003				var name string
14004				err = json.Unmarshal(*v, &name)
14005				if err != nil {
14006					return err
14007				}
14008				wg.Name = &name
14009			}
14010		case "type":
14011			if v != nil {
14012				var typeVar string
14013				err = json.Unmarshal(*v, &typeVar)
14014				if err != nil {
14015					return err
14016				}
14017				wg.Type = &typeVar
14018			}
14019		}
14020	}
14021
14022	return nil
14023}
14024
14025// WorkloadGroupListResult a list of workload groups.
14026type WorkloadGroupListResult struct {
14027	autorest.Response `json:"-"`
14028	// Value - READ-ONLY; Array of results.
14029	Value *[]WorkloadGroup `json:"value,omitempty"`
14030	// NextLink - READ-ONLY; Link to retrieve next page of results.
14031	NextLink *string `json:"nextLink,omitempty"`
14032}
14033
14034// MarshalJSON is the custom marshaler for WorkloadGroupListResult.
14035func (wglr WorkloadGroupListResult) MarshalJSON() ([]byte, error) {
14036	objectMap := make(map[string]interface{})
14037	return json.Marshal(objectMap)
14038}
14039
14040// WorkloadGroupListResultIterator provides access to a complete listing of WorkloadGroup values.
14041type WorkloadGroupListResultIterator struct {
14042	i    int
14043	page WorkloadGroupListResultPage
14044}
14045
14046// NextWithContext advances to the next value.  If there was an error making
14047// the request the iterator does not advance and the error is returned.
14048func (iter *WorkloadGroupListResultIterator) NextWithContext(ctx context.Context) (err error) {
14049	if tracing.IsEnabled() {
14050		ctx = tracing.StartSpan(ctx, fqdn+"/WorkloadGroupListResultIterator.NextWithContext")
14051		defer func() {
14052			sc := -1
14053			if iter.Response().Response.Response != nil {
14054				sc = iter.Response().Response.Response.StatusCode
14055			}
14056			tracing.EndSpan(ctx, sc, err)
14057		}()
14058	}
14059	iter.i++
14060	if iter.i < len(iter.page.Values()) {
14061		return nil
14062	}
14063	err = iter.page.NextWithContext(ctx)
14064	if err != nil {
14065		iter.i--
14066		return err
14067	}
14068	iter.i = 0
14069	return nil
14070}
14071
14072// Next advances to the next value.  If there was an error making
14073// the request the iterator does not advance and the error is returned.
14074// Deprecated: Use NextWithContext() instead.
14075func (iter *WorkloadGroupListResultIterator) Next() error {
14076	return iter.NextWithContext(context.Background())
14077}
14078
14079// NotDone returns true if the enumeration should be started or is not yet complete.
14080func (iter WorkloadGroupListResultIterator) NotDone() bool {
14081	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14082}
14083
14084// Response returns the raw server response from the last page request.
14085func (iter WorkloadGroupListResultIterator) Response() WorkloadGroupListResult {
14086	return iter.page.Response()
14087}
14088
14089// Value returns the current value or a zero-initialized value if the
14090// iterator has advanced beyond the end of the collection.
14091func (iter WorkloadGroupListResultIterator) Value() WorkloadGroup {
14092	if !iter.page.NotDone() {
14093		return WorkloadGroup{}
14094	}
14095	return iter.page.Values()[iter.i]
14096}
14097
14098// Creates a new instance of the WorkloadGroupListResultIterator type.
14099func NewWorkloadGroupListResultIterator(page WorkloadGroupListResultPage) WorkloadGroupListResultIterator {
14100	return WorkloadGroupListResultIterator{page: page}
14101}
14102
14103// IsEmpty returns true if the ListResult contains no values.
14104func (wglr WorkloadGroupListResult) IsEmpty() bool {
14105	return wglr.Value == nil || len(*wglr.Value) == 0
14106}
14107
14108// hasNextLink returns true if the NextLink is not empty.
14109func (wglr WorkloadGroupListResult) hasNextLink() bool {
14110	return wglr.NextLink != nil && len(*wglr.NextLink) != 0
14111}
14112
14113// workloadGroupListResultPreparer prepares a request to retrieve the next set of results.
14114// It returns nil if no more results exist.
14115func (wglr WorkloadGroupListResult) workloadGroupListResultPreparer(ctx context.Context) (*http.Request, error) {
14116	if !wglr.hasNextLink() {
14117		return nil, nil
14118	}
14119	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14120		autorest.AsJSON(),
14121		autorest.AsGet(),
14122		autorest.WithBaseURL(to.String(wglr.NextLink)))
14123}
14124
14125// WorkloadGroupListResultPage contains a page of WorkloadGroup values.
14126type WorkloadGroupListResultPage struct {
14127	fn   func(context.Context, WorkloadGroupListResult) (WorkloadGroupListResult, error)
14128	wglr WorkloadGroupListResult
14129}
14130
14131// NextWithContext advances to the next page of values.  If there was an error making
14132// the request the page does not advance and the error is returned.
14133func (page *WorkloadGroupListResultPage) NextWithContext(ctx context.Context) (err error) {
14134	if tracing.IsEnabled() {
14135		ctx = tracing.StartSpan(ctx, fqdn+"/WorkloadGroupListResultPage.NextWithContext")
14136		defer func() {
14137			sc := -1
14138			if page.Response().Response.Response != nil {
14139				sc = page.Response().Response.Response.StatusCode
14140			}
14141			tracing.EndSpan(ctx, sc, err)
14142		}()
14143	}
14144	for {
14145		next, err := page.fn(ctx, page.wglr)
14146		if err != nil {
14147			return err
14148		}
14149		page.wglr = next
14150		if !next.hasNextLink() || !next.IsEmpty() {
14151			break
14152		}
14153	}
14154	return nil
14155}
14156
14157// Next advances to the next page of values.  If there was an error making
14158// the request the page does not advance and the error is returned.
14159// Deprecated: Use NextWithContext() instead.
14160func (page *WorkloadGroupListResultPage) Next() error {
14161	return page.NextWithContext(context.Background())
14162}
14163
14164// NotDone returns true if the page enumeration should be started or is not yet complete.
14165func (page WorkloadGroupListResultPage) NotDone() bool {
14166	return !page.wglr.IsEmpty()
14167}
14168
14169// Response returns the raw server response from the last page request.
14170func (page WorkloadGroupListResultPage) Response() WorkloadGroupListResult {
14171	return page.wglr
14172}
14173
14174// Values returns the slice of values for the current page or nil if there are no values.
14175func (page WorkloadGroupListResultPage) Values() []WorkloadGroup {
14176	if page.wglr.IsEmpty() {
14177		return nil
14178	}
14179	return *page.wglr.Value
14180}
14181
14182// Creates a new instance of the WorkloadGroupListResultPage type.
14183func NewWorkloadGroupListResultPage(cur WorkloadGroupListResult, getNextPage func(context.Context, WorkloadGroupListResult) (WorkloadGroupListResult, error)) WorkloadGroupListResultPage {
14184	return WorkloadGroupListResultPage{
14185		fn:   getNextPage,
14186		wglr: cur,
14187	}
14188}
14189
14190// WorkloadGroupProperties workload group definition. For more information look at
14191// sys.workload_management_workload_groups (DMV).
14192type WorkloadGroupProperties struct {
14193	// MinResourcePercent - The workload group minimum percentage resource.
14194	MinResourcePercent *int32 `json:"minResourcePercent,omitempty"`
14195	// MaxResourcePercent - The workload group cap percentage resource.
14196	MaxResourcePercent *int32 `json:"maxResourcePercent,omitempty"`
14197	// MinResourcePercentPerRequest - The workload group request minimum grant percentage.
14198	MinResourcePercentPerRequest *float64 `json:"minResourcePercentPerRequest,omitempty"`
14199	// MaxResourcePercentPerRequest - The workload group request maximum grant percentage.
14200	MaxResourcePercentPerRequest *float64 `json:"maxResourcePercentPerRequest,omitempty"`
14201	// Importance - The workload group importance level.
14202	Importance *string `json:"importance,omitempty"`
14203	// QueryExecutionTimeout - The workload group query execution timeout.
14204	QueryExecutionTimeout *int32 `json:"queryExecutionTimeout,omitempty"`
14205}
14206
14207// Workspace a workspace
14208type Workspace struct {
14209	autorest.Response `json:"-"`
14210	// WorkspaceProperties - Workspace resource properties
14211	*WorkspaceProperties `json:"properties,omitempty"`
14212	// Identity - Identity of the workspace
14213	Identity *ManagedIdentity `json:"identity,omitempty"`
14214	// Tags - Resource tags.
14215	Tags map[string]*string `json:"tags"`
14216	// Location - The geo-location where the resource lives
14217	Location *string `json:"location,omitempty"`
14218	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
14219	ID *string `json:"id,omitempty"`
14220	// Name - READ-ONLY; The name of the resource
14221	Name *string `json:"name,omitempty"`
14222	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
14223	Type *string `json:"type,omitempty"`
14224}
14225
14226// MarshalJSON is the custom marshaler for Workspace.
14227func (w Workspace) MarshalJSON() ([]byte, error) {
14228	objectMap := make(map[string]interface{})
14229	if w.WorkspaceProperties != nil {
14230		objectMap["properties"] = w.WorkspaceProperties
14231	}
14232	if w.Identity != nil {
14233		objectMap["identity"] = w.Identity
14234	}
14235	if w.Tags != nil {
14236		objectMap["tags"] = w.Tags
14237	}
14238	if w.Location != nil {
14239		objectMap["location"] = w.Location
14240	}
14241	return json.Marshal(objectMap)
14242}
14243
14244// UnmarshalJSON is the custom unmarshaler for Workspace struct.
14245func (w *Workspace) UnmarshalJSON(body []byte) error {
14246	var m map[string]*json.RawMessage
14247	err := json.Unmarshal(body, &m)
14248	if err != nil {
14249		return err
14250	}
14251	for k, v := range m {
14252		switch k {
14253		case "properties":
14254			if v != nil {
14255				var workspaceProperties WorkspaceProperties
14256				err = json.Unmarshal(*v, &workspaceProperties)
14257				if err != nil {
14258					return err
14259				}
14260				w.WorkspaceProperties = &workspaceProperties
14261			}
14262		case "identity":
14263			if v != nil {
14264				var identity ManagedIdentity
14265				err = json.Unmarshal(*v, &identity)
14266				if err != nil {
14267					return err
14268				}
14269				w.Identity = &identity
14270			}
14271		case "tags":
14272			if v != nil {
14273				var tags map[string]*string
14274				err = json.Unmarshal(*v, &tags)
14275				if err != nil {
14276					return err
14277				}
14278				w.Tags = tags
14279			}
14280		case "location":
14281			if v != nil {
14282				var location string
14283				err = json.Unmarshal(*v, &location)
14284				if err != nil {
14285					return err
14286				}
14287				w.Location = &location
14288			}
14289		case "id":
14290			if v != nil {
14291				var ID string
14292				err = json.Unmarshal(*v, &ID)
14293				if err != nil {
14294					return err
14295				}
14296				w.ID = &ID
14297			}
14298		case "name":
14299			if v != nil {
14300				var name string
14301				err = json.Unmarshal(*v, &name)
14302				if err != nil {
14303					return err
14304				}
14305				w.Name = &name
14306			}
14307		case "type":
14308			if v != nil {
14309				var typeVar string
14310				err = json.Unmarshal(*v, &typeVar)
14311				if err != nil {
14312					return err
14313				}
14314				w.Type = &typeVar
14315			}
14316		}
14317	}
14318
14319	return nil
14320}
14321
14322// WorkspaceAadAdminInfo workspace active directory administrator
14323type WorkspaceAadAdminInfo struct {
14324	autorest.Response `json:"-"`
14325	// AadAdminProperties - Workspace active directory administrator properties
14326	*AadAdminProperties `json:"properties,omitempty"`
14327	// ID - READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
14328	ID *string `json:"id,omitempty"`
14329	// Name - READ-ONLY; The name of the resource
14330	Name *string `json:"name,omitempty"`
14331	// Type - READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
14332	Type *string `json:"type,omitempty"`
14333}
14334
14335// MarshalJSON is the custom marshaler for WorkspaceAadAdminInfo.
14336func (waai WorkspaceAadAdminInfo) MarshalJSON() ([]byte, error) {
14337	objectMap := make(map[string]interface{})
14338	if waai.AadAdminProperties != nil {
14339		objectMap["properties"] = waai.AadAdminProperties
14340	}
14341	return json.Marshal(objectMap)
14342}
14343
14344// UnmarshalJSON is the custom unmarshaler for WorkspaceAadAdminInfo struct.
14345func (waai *WorkspaceAadAdminInfo) UnmarshalJSON(body []byte) error {
14346	var m map[string]*json.RawMessage
14347	err := json.Unmarshal(body, &m)
14348	if err != nil {
14349		return err
14350	}
14351	for k, v := range m {
14352		switch k {
14353		case "properties":
14354			if v != nil {
14355				var aadAdminProperties AadAdminProperties
14356				err = json.Unmarshal(*v, &aadAdminProperties)
14357				if err != nil {
14358					return err
14359				}
14360				waai.AadAdminProperties = &aadAdminProperties
14361			}
14362		case "id":
14363			if v != nil {
14364				var ID string
14365				err = json.Unmarshal(*v, &ID)
14366				if err != nil {
14367					return err
14368				}
14369				waai.ID = &ID
14370			}
14371		case "name":
14372			if v != nil {
14373				var name string
14374				err = json.Unmarshal(*v, &name)
14375				if err != nil {
14376					return err
14377				}
14378				waai.Name = &name
14379			}
14380		case "type":
14381			if v != nil {
14382				var typeVar string
14383				err = json.Unmarshal(*v, &typeVar)
14384				if err != nil {
14385					return err
14386				}
14387				waai.Type = &typeVar
14388			}
14389		}
14390	}
14391
14392	return nil
14393}
14394
14395// WorkspaceAadAdminsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
14396// long-running operation.
14397type WorkspaceAadAdminsCreateOrUpdateFuture struct {
14398	azure.FutureAPI
14399	// Result returns the result of the asynchronous operation.
14400	// If the operation has not completed it will return an error.
14401	Result func(WorkspaceAadAdminsClient) (WorkspaceAadAdminInfo, error)
14402}
14403
14404// UnmarshalJSON is the custom unmarshaller for CreateFuture.
14405func (future *WorkspaceAadAdminsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
14406	var azFuture azure.Future
14407	if err := json.Unmarshal(body, &azFuture); err != nil {
14408		return err
14409	}
14410	future.FutureAPI = &azFuture
14411	future.Result = future.result
14412	return nil
14413}
14414
14415// result is the default implementation for WorkspaceAadAdminsCreateOrUpdateFuture.Result.
14416func (future *WorkspaceAadAdminsCreateOrUpdateFuture) result(client WorkspaceAadAdminsClient) (waai WorkspaceAadAdminInfo, err error) {
14417	var done bool
14418	done, err = future.DoneWithContext(context.Background(), client)
14419	if err != nil {
14420		err = autorest.NewErrorWithError(err, "synapse.WorkspaceAadAdminsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
14421		return
14422	}
14423	if !done {
14424		waai.Response.Response = future.Response()
14425		err = azure.NewAsyncOpIncompleteError("synapse.WorkspaceAadAdminsCreateOrUpdateFuture")
14426		return
14427	}
14428	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
14429	if waai.Response.Response, err = future.GetResult(sender); err == nil && waai.Response.Response.StatusCode != http.StatusNoContent {
14430		waai, err = client.CreateOrUpdateResponder(waai.Response.Response)
14431		if err != nil {
14432			err = autorest.NewErrorWithError(err, "synapse.WorkspaceAadAdminsCreateOrUpdateFuture", "Result", waai.Response.Response, "Failure responding to request")
14433		}
14434	}
14435	return
14436}
14437
14438// WorkspaceAadAdminsDeleteFuture an abstraction for monitoring and retrieving the results of a
14439// long-running operation.
14440type WorkspaceAadAdminsDeleteFuture struct {
14441	azure.FutureAPI
14442	// Result returns the result of the asynchronous operation.
14443	// If the operation has not completed it will return an error.
14444	Result func(WorkspaceAadAdminsClient) (autorest.Response, error)
14445}
14446
14447// UnmarshalJSON is the custom unmarshaller for CreateFuture.
14448func (future *WorkspaceAadAdminsDeleteFuture) UnmarshalJSON(body []byte) error {
14449	var azFuture azure.Future
14450	if err := json.Unmarshal(body, &azFuture); err != nil {
14451		return err
14452	}
14453	future.FutureAPI = &azFuture
14454	future.Result = future.result
14455	return nil
14456}
14457
14458// result is the default implementation for WorkspaceAadAdminsDeleteFuture.Result.
14459func (future *WorkspaceAadAdminsDeleteFuture) result(client WorkspaceAadAdminsClient) (ar autorest.Response, err error) {
14460	var done bool
14461	done, err = future.DoneWithContext(context.Background(), client)
14462	if err != nil {
14463		err = autorest.NewErrorWithError(err, "synapse.WorkspaceAadAdminsDeleteFuture", "Result", future.Response(), "Polling failure")
14464		return
14465	}
14466	if !done {
14467		ar.Response = future.Response()
14468		err = azure.NewAsyncOpIncompleteError("synapse.WorkspaceAadAdminsDeleteFuture")
14469		return
14470	}
14471	ar.Response = future.Response()
14472	return
14473}
14474
14475// WorkspaceInfoListResult list of workspaces
14476type WorkspaceInfoListResult struct {
14477	autorest.Response `json:"-"`
14478	// NextLink - Link to the next page of results
14479	NextLink *string `json:"nextLink,omitempty"`
14480	// Value - List of workspaces
14481	Value *[]Workspace `json:"value,omitempty"`
14482}
14483
14484// WorkspaceInfoListResultIterator provides access to a complete listing of Workspace values.
14485type WorkspaceInfoListResultIterator struct {
14486	i    int
14487	page WorkspaceInfoListResultPage
14488}
14489
14490// NextWithContext advances to the next value.  If there was an error making
14491// the request the iterator does not advance and the error is returned.
14492func (iter *WorkspaceInfoListResultIterator) NextWithContext(ctx context.Context) (err error) {
14493	if tracing.IsEnabled() {
14494		ctx = tracing.StartSpan(ctx, fqdn+"/WorkspaceInfoListResultIterator.NextWithContext")
14495		defer func() {
14496			sc := -1
14497			if iter.Response().Response.Response != nil {
14498				sc = iter.Response().Response.Response.StatusCode
14499			}
14500			tracing.EndSpan(ctx, sc, err)
14501		}()
14502	}
14503	iter.i++
14504	if iter.i < len(iter.page.Values()) {
14505		return nil
14506	}
14507	err = iter.page.NextWithContext(ctx)
14508	if err != nil {
14509		iter.i--
14510		return err
14511	}
14512	iter.i = 0
14513	return nil
14514}
14515
14516// Next advances to the next value.  If there was an error making
14517// the request the iterator does not advance and the error is returned.
14518// Deprecated: Use NextWithContext() instead.
14519func (iter *WorkspaceInfoListResultIterator) Next() error {
14520	return iter.NextWithContext(context.Background())
14521}
14522
14523// NotDone returns true if the enumeration should be started or is not yet complete.
14524func (iter WorkspaceInfoListResultIterator) NotDone() bool {
14525	return iter.page.NotDone() && iter.i < len(iter.page.Values())
14526}
14527
14528// Response returns the raw server response from the last page request.
14529func (iter WorkspaceInfoListResultIterator) Response() WorkspaceInfoListResult {
14530	return iter.page.Response()
14531}
14532
14533// Value returns the current value or a zero-initialized value if the
14534// iterator has advanced beyond the end of the collection.
14535func (iter WorkspaceInfoListResultIterator) Value() Workspace {
14536	if !iter.page.NotDone() {
14537		return Workspace{}
14538	}
14539	return iter.page.Values()[iter.i]
14540}
14541
14542// Creates a new instance of the WorkspaceInfoListResultIterator type.
14543func NewWorkspaceInfoListResultIterator(page WorkspaceInfoListResultPage) WorkspaceInfoListResultIterator {
14544	return WorkspaceInfoListResultIterator{page: page}
14545}
14546
14547// IsEmpty returns true if the ListResult contains no values.
14548func (wilr WorkspaceInfoListResult) IsEmpty() bool {
14549	return wilr.Value == nil || len(*wilr.Value) == 0
14550}
14551
14552// hasNextLink returns true if the NextLink is not empty.
14553func (wilr WorkspaceInfoListResult) hasNextLink() bool {
14554	return wilr.NextLink != nil && len(*wilr.NextLink) != 0
14555}
14556
14557// workspaceInfoListResultPreparer prepares a request to retrieve the next set of results.
14558// It returns nil if no more results exist.
14559func (wilr WorkspaceInfoListResult) workspaceInfoListResultPreparer(ctx context.Context) (*http.Request, error) {
14560	if !wilr.hasNextLink() {
14561		return nil, nil
14562	}
14563	return autorest.Prepare((&http.Request{}).WithContext(ctx),
14564		autorest.AsJSON(),
14565		autorest.AsGet(),
14566		autorest.WithBaseURL(to.String(wilr.NextLink)))
14567}
14568
14569// WorkspaceInfoListResultPage contains a page of Workspace values.
14570type WorkspaceInfoListResultPage struct {
14571	fn   func(context.Context, WorkspaceInfoListResult) (WorkspaceInfoListResult, error)
14572	wilr WorkspaceInfoListResult
14573}
14574
14575// NextWithContext advances to the next page of values.  If there was an error making
14576// the request the page does not advance and the error is returned.
14577func (page *WorkspaceInfoListResultPage) NextWithContext(ctx context.Context) (err error) {
14578	if tracing.IsEnabled() {
14579		ctx = tracing.StartSpan(ctx, fqdn+"/WorkspaceInfoListResultPage.NextWithContext")
14580		defer func() {
14581			sc := -1
14582			if page.Response().Response.Response != nil {
14583				sc = page.Response().Response.Response.StatusCode
14584			}
14585			tracing.EndSpan(ctx, sc, err)
14586		}()
14587	}
14588	for {
14589		next, err := page.fn(ctx, page.wilr)
14590		if err != nil {
14591			return err
14592		}
14593		page.wilr = next
14594		if !next.hasNextLink() || !next.IsEmpty() {
14595			break
14596		}
14597	}
14598	return nil
14599}
14600
14601// Next advances to the next page of values.  If there was an error making
14602// the request the page does not advance and the error is returned.
14603// Deprecated: Use NextWithContext() instead.
14604func (page *WorkspaceInfoListResultPage) Next() error {
14605	return page.NextWithContext(context.Background())
14606}
14607
14608// NotDone returns true if the page enumeration should be started or is not yet complete.
14609func (page WorkspaceInfoListResultPage) NotDone() bool {
14610	return !page.wilr.IsEmpty()
14611}
14612
14613// Response returns the raw server response from the last page request.
14614func (page WorkspaceInfoListResultPage) Response() WorkspaceInfoListResult {
14615	return page.wilr
14616}
14617
14618// Values returns the slice of values for the current page or nil if there are no values.
14619func (page WorkspaceInfoListResultPage) Values() []Workspace {
14620	if page.wilr.IsEmpty() {
14621		return nil
14622	}
14623	return *page.wilr.Value
14624}
14625
14626// Creates a new instance of the WorkspaceInfoListResultPage type.
14627func NewWorkspaceInfoListResultPage(cur WorkspaceInfoListResult, getNextPage func(context.Context, WorkspaceInfoListResult) (WorkspaceInfoListResult, error)) WorkspaceInfoListResultPage {
14628	return WorkspaceInfoListResultPage{
14629		fn:   getNextPage,
14630		wilr: cur,
14631	}
14632}
14633
14634// WorkspaceKeyDetails details of the customer managed key associated with the workspace
14635type WorkspaceKeyDetails struct {
14636	// Name - Workspace Key sub-resource name
14637	Name *string `json:"name,omitempty"`
14638	// KeyVaultURL - Workspace Key sub-resource key vault url
14639	KeyVaultURL *string `json:"keyVaultUrl,omitempty"`
14640}
14641
14642// WorkspaceManagedIdentitySQLControlSettingsCreateOrUpdateFuture an abstraction for monitoring and
14643// retrieving the results of a long-running operation.
14644type WorkspaceManagedIdentitySQLControlSettingsCreateOrUpdateFuture struct {
14645	azure.FutureAPI
14646	// Result returns the result of the asynchronous operation.
14647	// If the operation has not completed it will return an error.
14648	Result func(WorkspaceManagedIdentitySQLControlSettingsClient) (ManagedIdentitySQLControlSettingsModel, error)
14649}
14650
14651// UnmarshalJSON is the custom unmarshaller for CreateFuture.
14652func (future *WorkspaceManagedIdentitySQLControlSettingsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
14653	var azFuture azure.Future
14654	if err := json.Unmarshal(body, &azFuture); err != nil {
14655		return err
14656	}
14657	future.FutureAPI = &azFuture
14658	future.Result = future.result
14659	return nil
14660}
14661
14662// result is the default implementation for WorkspaceManagedIdentitySQLControlSettingsCreateOrUpdateFuture.Result.
14663func (future *WorkspaceManagedIdentitySQLControlSettingsCreateOrUpdateFuture) result(client WorkspaceManagedIdentitySQLControlSettingsClient) (miscsm ManagedIdentitySQLControlSettingsModel, err error) {
14664	var done bool
14665	done, err = future.DoneWithContext(context.Background(), client)
14666	if err != nil {
14667		err = autorest.NewErrorWithError(err, "synapse.WorkspaceManagedIdentitySQLControlSettingsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
14668		return
14669	}
14670	if !done {
14671		miscsm.Response.Response = future.Response()
14672		err = azure.NewAsyncOpIncompleteError("synapse.WorkspaceManagedIdentitySQLControlSettingsCreateOrUpdateFuture")
14673		return
14674	}
14675	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
14676	if miscsm.Response.Response, err = future.GetResult(sender); err == nil && miscsm.Response.Response.StatusCode != http.StatusNoContent {
14677		miscsm, err = client.CreateOrUpdateResponder(miscsm.Response.Response)
14678		if err != nil {
14679			err = autorest.NewErrorWithError(err, "synapse.WorkspaceManagedIdentitySQLControlSettingsCreateOrUpdateFuture", "Result", miscsm.Response.Response, "Failure responding to request")
14680		}
14681	}
14682	return
14683}
14684
14685// WorkspaceManagedSQLServerBlobAuditingPoliciesCreateOrUpdateFuture an abstraction for monitoring and
14686// retrieving the results of a long-running operation.
14687type WorkspaceManagedSQLServerBlobAuditingPoliciesCreateOrUpdateFuture struct {
14688	azure.FutureAPI
14689	// Result returns the result of the asynchronous operation.
14690	// If the operation has not completed it will return an error.
14691	Result func(WorkspaceManagedSQLServerBlobAuditingPoliciesClient) (ServerBlobAuditingPolicy, error)
14692}
14693
14694// UnmarshalJSON is the custom unmarshaller for CreateFuture.
14695func (future *WorkspaceManagedSQLServerBlobAuditingPoliciesCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
14696	var azFuture azure.Future
14697	if err := json.Unmarshal(body, &azFuture); err != nil {
14698		return err
14699	}
14700	future.FutureAPI = &azFuture
14701	future.Result = future.result
14702	return nil
14703}
14704
14705// result is the default implementation for WorkspaceManagedSQLServerBlobAuditingPoliciesCreateOrUpdateFuture.Result.
14706func (future *WorkspaceManagedSQLServerBlobAuditingPoliciesCreateOrUpdateFuture) result(client WorkspaceManagedSQLServerBlobAuditingPoliciesClient) (sbap ServerBlobAuditingPolicy, err error) {
14707	var done bool
14708	done, err = future.DoneWithContext(context.Background(), client)
14709	if err != nil {
14710		err = autorest.NewErrorWithError(err, "synapse.WorkspaceManagedSQLServerBlobAuditingPoliciesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
14711		return
14712	}
14713	if !done {
14714		sbap.Response.Response = future.Response()
14715		err = azure.NewAsyncOpIncompleteError("synapse.WorkspaceManagedSQLServerBlobAuditingPoliciesCreateOrUpdateFuture")
14716		return
14717	}
14718	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
14719	if sbap.Response.Response, err = future.GetResult(sender); err == nil && sbap.Response.Response.StatusCode != http.StatusNoContent {
14720		sbap, err = client.CreateOrUpdateResponder(sbap.Response.Response)
14721		if err != nil {
14722			err = autorest.NewErrorWithError(err, "synapse.WorkspaceManagedSQLServerBlobAuditingPoliciesCreateOrUpdateFuture", "Result", sbap.Response.Response, "Failure responding to request")
14723		}
14724	}
14725	return
14726}
14727
14728// WorkspaceManagedSQLServerExtendedBlobAuditingPoliciesCreateOrUpdateFuture an abstraction for monitoring
14729// and retrieving the results of a long-running operation.
14730type WorkspaceManagedSQLServerExtendedBlobAuditingPoliciesCreateOrUpdateFuture struct {
14731	azure.FutureAPI
14732	// Result returns the result of the asynchronous operation.
14733	// If the operation has not completed it will return an error.
14734	Result func(WorkspaceManagedSQLServerExtendedBlobAuditingPoliciesClient) (ExtendedServerBlobAuditingPolicy, error)
14735}
14736
14737// UnmarshalJSON is the custom unmarshaller for CreateFuture.
14738func (future *WorkspaceManagedSQLServerExtendedBlobAuditingPoliciesCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
14739	var azFuture azure.Future
14740	if err := json.Unmarshal(body, &azFuture); err != nil {
14741		return err
14742	}
14743	future.FutureAPI = &azFuture
14744	future.Result = future.result
14745	return nil
14746}
14747
14748// result is the default implementation for WorkspaceManagedSQLServerExtendedBlobAuditingPoliciesCreateOrUpdateFuture.Result.
14749func (future *WorkspaceManagedSQLServerExtendedBlobAuditingPoliciesCreateOrUpdateFuture) result(client WorkspaceManagedSQLServerExtendedBlobAuditingPoliciesClient) (esbap ExtendedServerBlobAuditingPolicy, err error) {
14750	var done bool
14751	done, err = future.DoneWithContext(context.Background(), client)
14752	if err != nil {
14753		err = autorest.NewErrorWithError(err, "synapse.WorkspaceManagedSQLServerExtendedBlobAuditingPoliciesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
14754		return
14755	}
14756	if !done {
14757		esbap.Response.Response = future.Response()
14758		err = azure.NewAsyncOpIncompleteError("synapse.WorkspaceManagedSQLServerExtendedBlobAuditingPoliciesCreateOrUpdateFuture")
14759		return
14760	}
14761	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
14762	if esbap.Response.Response, err = future.GetResult(sender); err == nil && esbap.Response.Response.StatusCode != http.StatusNoContent {
14763		esbap, err = client.CreateOrUpdateResponder(esbap.Response.Response)
14764		if err != nil {
14765			err = autorest.NewErrorWithError(err, "synapse.WorkspaceManagedSQLServerExtendedBlobAuditingPoliciesCreateOrUpdateFuture", "Result", esbap.Response.Response, "Failure responding to request")
14766		}
14767	}
14768	return
14769}
14770
14771// WorkspaceManagedSQLServerSecurityAlertPolicyCreateOrUpdateFuture an abstraction for monitoring and
14772// retrieving the results of a long-running operation.
14773type WorkspaceManagedSQLServerSecurityAlertPolicyCreateOrUpdateFuture struct {
14774	azure.FutureAPI
14775	// Result returns the result of the asynchronous operation.
14776	// If the operation has not completed it will return an error.
14777	Result func(WorkspaceManagedSQLServerSecurityAlertPolicyClient) (ServerSecurityAlertPolicy, error)
14778}
14779
14780// UnmarshalJSON is the custom unmarshaller for CreateFuture.
14781func (future *WorkspaceManagedSQLServerSecurityAlertPolicyCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
14782	var azFuture azure.Future
14783	if err := json.Unmarshal(body, &azFuture); err != nil {
14784		return err
14785	}
14786	future.FutureAPI = &azFuture
14787	future.Result = future.result
14788	return nil
14789}
14790
14791// result is the default implementation for WorkspaceManagedSQLServerSecurityAlertPolicyCreateOrUpdateFuture.Result.
14792func (future *WorkspaceManagedSQLServerSecurityAlertPolicyCreateOrUpdateFuture) result(client WorkspaceManagedSQLServerSecurityAlertPolicyClient) (ssap ServerSecurityAlertPolicy, err error) {
14793	var done bool
14794	done, err = future.DoneWithContext(context.Background(), client)
14795	if err != nil {
14796		err = autorest.NewErrorWithError(err, "synapse.WorkspaceManagedSQLServerSecurityAlertPolicyCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
14797		return
14798	}
14799	if !done {
14800		ssap.Response.Response = future.Response()
14801		err = azure.NewAsyncOpIncompleteError("synapse.WorkspaceManagedSQLServerSecurityAlertPolicyCreateOrUpdateFuture")
14802		return
14803	}
14804	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
14805	if ssap.Response.Response, err = future.GetResult(sender); err == nil && ssap.Response.Response.StatusCode != http.StatusNoContent {
14806		ssap, err = client.CreateOrUpdateResponder(ssap.Response.Response)
14807		if err != nil {
14808			err = autorest.NewErrorWithError(err, "synapse.WorkspaceManagedSQLServerSecurityAlertPolicyCreateOrUpdateFuture", "Result", ssap.Response.Response, "Failure responding to request")
14809		}
14810	}
14811	return
14812}
14813
14814// WorkspacePatchInfo workspace patch details
14815type WorkspacePatchInfo struct {
14816	// Tags - Resource tags
14817	Tags map[string]*string `json:"tags"`
14818	// Identity - The identity of the workspace
14819	Identity *ManagedIdentity `json:"identity,omitempty"`
14820	// WorkspacePatchProperties - Workspace patch properties
14821	*WorkspacePatchProperties `json:"properties,omitempty"`
14822}
14823
14824// MarshalJSON is the custom marshaler for WorkspacePatchInfo.
14825func (wpi WorkspacePatchInfo) MarshalJSON() ([]byte, error) {
14826	objectMap := make(map[string]interface{})
14827	if wpi.Tags != nil {
14828		objectMap["tags"] = wpi.Tags
14829	}
14830	if wpi.Identity != nil {
14831		objectMap["identity"] = wpi.Identity
14832	}
14833	if wpi.WorkspacePatchProperties != nil {
14834		objectMap["properties"] = wpi.WorkspacePatchProperties
14835	}
14836	return json.Marshal(objectMap)
14837}
14838
14839// UnmarshalJSON is the custom unmarshaler for WorkspacePatchInfo struct.
14840func (wpi *WorkspacePatchInfo) UnmarshalJSON(body []byte) error {
14841	var m map[string]*json.RawMessage
14842	err := json.Unmarshal(body, &m)
14843	if err != nil {
14844		return err
14845	}
14846	for k, v := range m {
14847		switch k {
14848		case "tags":
14849			if v != nil {
14850				var tags map[string]*string
14851				err = json.Unmarshal(*v, &tags)
14852				if err != nil {
14853					return err
14854				}
14855				wpi.Tags = tags
14856			}
14857		case "identity":
14858			if v != nil {
14859				var identity ManagedIdentity
14860				err = json.Unmarshal(*v, &identity)
14861				if err != nil {
14862					return err
14863				}
14864				wpi.Identity = &identity
14865			}
14866		case "properties":
14867			if v != nil {
14868				var workspacePatchProperties WorkspacePatchProperties
14869				err = json.Unmarshal(*v, &workspacePatchProperties)
14870				if err != nil {
14871					return err
14872				}
14873				wpi.WorkspacePatchProperties = &workspacePatchProperties
14874			}
14875		}
14876	}
14877
14878	return nil
14879}
14880
14881// WorkspacePatchProperties workspace patch properties
14882type WorkspacePatchProperties struct {
14883	// SQLAdministratorLoginPassword - SQL administrator login password
14884	SQLAdministratorLoginPassword *string `json:"sqlAdministratorLoginPassword,omitempty"`
14885	// ManagedVirtualNetworkSettings - Managed Virtual Network Settings
14886	ManagedVirtualNetworkSettings *ManagedVirtualNetworkSettings `json:"managedVirtualNetworkSettings,omitempty"`
14887	// WorkspaceRepositoryConfiguration - Git integration settings
14888	WorkspaceRepositoryConfiguration *WorkspaceRepositoryConfiguration `json:"workspaceRepositoryConfiguration,omitempty"`
14889	// PurviewConfiguration - Purview Configuration
14890	PurviewConfiguration *PurviewConfiguration `json:"purviewConfiguration,omitempty"`
14891	// ProvisioningState - READ-ONLY; Resource provisioning state
14892	ProvisioningState *string `json:"provisioningState,omitempty"`
14893	// Encryption - The encryption details of the workspace
14894	Encryption *EncryptionDetails `json:"encryption,omitempty"`
14895}
14896
14897// MarshalJSON is the custom marshaler for WorkspacePatchProperties.
14898func (wpp WorkspacePatchProperties) MarshalJSON() ([]byte, error) {
14899	objectMap := make(map[string]interface{})
14900	if wpp.SQLAdministratorLoginPassword != nil {
14901		objectMap["sqlAdministratorLoginPassword"] = wpp.SQLAdministratorLoginPassword
14902	}
14903	if wpp.ManagedVirtualNetworkSettings != nil {
14904		objectMap["managedVirtualNetworkSettings"] = wpp.ManagedVirtualNetworkSettings
14905	}
14906	if wpp.WorkspaceRepositoryConfiguration != nil {
14907		objectMap["workspaceRepositoryConfiguration"] = wpp.WorkspaceRepositoryConfiguration
14908	}
14909	if wpp.PurviewConfiguration != nil {
14910		objectMap["purviewConfiguration"] = wpp.PurviewConfiguration
14911	}
14912	if wpp.Encryption != nil {
14913		objectMap["encryption"] = wpp.Encryption
14914	}
14915	return json.Marshal(objectMap)
14916}
14917
14918// WorkspaceProperties workspace properties
14919type WorkspaceProperties struct {
14920	// DefaultDataLakeStorage - Workspace default data lake storage account details
14921	DefaultDataLakeStorage *DataLakeStorageAccountDetails `json:"defaultDataLakeStorage,omitempty"`
14922	// SQLAdministratorLoginPassword - SQL administrator login password
14923	SQLAdministratorLoginPassword *string `json:"sqlAdministratorLoginPassword,omitempty"`
14924	// ManagedResourceGroupName - Workspace managed resource group. The resource group name uniquely identifies the resource group within the user subscriptionId. The resource group name must be no longer than 90 characters long, and must be alphanumeric characters (Char.IsLetterOrDigit()) and '-', '_', '(', ')' and'.'. Note that the name cannot end with '.'
14925	ManagedResourceGroupName *string `json:"managedResourceGroupName,omitempty"`
14926	// ProvisioningState - READ-ONLY; Resource provisioning state
14927	ProvisioningState *string `json:"provisioningState,omitempty"`
14928	// SQLAdministratorLogin - Login for workspace SQL active directory administrator
14929	SQLAdministratorLogin *string `json:"sqlAdministratorLogin,omitempty"`
14930	// VirtualNetworkProfile - Virtual Network profile
14931	VirtualNetworkProfile *VirtualNetworkProfile `json:"virtualNetworkProfile,omitempty"`
14932	// ConnectivityEndpoints - Connectivity endpoints
14933	ConnectivityEndpoints map[string]*string `json:"connectivityEndpoints"`
14934	// ManagedVirtualNetwork - Setting this to 'default' will ensure that all compute for this workspace is in a virtual network managed on behalf of the user.
14935	ManagedVirtualNetwork *string `json:"managedVirtualNetwork,omitempty"`
14936	// PrivateEndpointConnections - Private endpoint connections to the workspace
14937	PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"`
14938	// Encryption - The encryption details of the workspace
14939	Encryption *EncryptionDetails `json:"encryption,omitempty"`
14940	// WorkspaceUID - READ-ONLY; The workspace unique identifier
14941	WorkspaceUID *uuid.UUID `json:"workspaceUID,omitempty"`
14942	// ExtraProperties - READ-ONLY; Workspace level configs and feature flags
14943	ExtraProperties map[string]interface{} `json:"extraProperties"`
14944	// ManagedVirtualNetworkSettings - Managed Virtual Network Settings
14945	ManagedVirtualNetworkSettings *ManagedVirtualNetworkSettings `json:"managedVirtualNetworkSettings,omitempty"`
14946	// WorkspaceRepositoryConfiguration - Git integration settings
14947	WorkspaceRepositoryConfiguration *WorkspaceRepositoryConfiguration `json:"workspaceRepositoryConfiguration,omitempty"`
14948	// PurviewConfiguration - Purview Configuration
14949	PurviewConfiguration *PurviewConfiguration `json:"purviewConfiguration,omitempty"`
14950}
14951
14952// MarshalJSON is the custom marshaler for WorkspaceProperties.
14953func (wp WorkspaceProperties) MarshalJSON() ([]byte, error) {
14954	objectMap := make(map[string]interface{})
14955	if wp.DefaultDataLakeStorage != nil {
14956		objectMap["defaultDataLakeStorage"] = wp.DefaultDataLakeStorage
14957	}
14958	if wp.SQLAdministratorLoginPassword != nil {
14959		objectMap["sqlAdministratorLoginPassword"] = wp.SQLAdministratorLoginPassword
14960	}
14961	if wp.ManagedResourceGroupName != nil {
14962		objectMap["managedResourceGroupName"] = wp.ManagedResourceGroupName
14963	}
14964	if wp.SQLAdministratorLogin != nil {
14965		objectMap["sqlAdministratorLogin"] = wp.SQLAdministratorLogin
14966	}
14967	if wp.VirtualNetworkProfile != nil {
14968		objectMap["virtualNetworkProfile"] = wp.VirtualNetworkProfile
14969	}
14970	if wp.ConnectivityEndpoints != nil {
14971		objectMap["connectivityEndpoints"] = wp.ConnectivityEndpoints
14972	}
14973	if wp.ManagedVirtualNetwork != nil {
14974		objectMap["managedVirtualNetwork"] = wp.ManagedVirtualNetwork
14975	}
14976	if wp.PrivateEndpointConnections != nil {
14977		objectMap["privateEndpointConnections"] = wp.PrivateEndpointConnections
14978	}
14979	if wp.Encryption != nil {
14980		objectMap["encryption"] = wp.Encryption
14981	}
14982	if wp.ManagedVirtualNetworkSettings != nil {
14983		objectMap["managedVirtualNetworkSettings"] = wp.ManagedVirtualNetworkSettings
14984	}
14985	if wp.WorkspaceRepositoryConfiguration != nil {
14986		objectMap["workspaceRepositoryConfiguration"] = wp.WorkspaceRepositoryConfiguration
14987	}
14988	if wp.PurviewConfiguration != nil {
14989		objectMap["purviewConfiguration"] = wp.PurviewConfiguration
14990	}
14991	return json.Marshal(objectMap)
14992}
14993
14994// WorkspaceRepositoryConfiguration git integration settings
14995type WorkspaceRepositoryConfiguration struct {
14996	// Type - Type of workspace repositoryID configuration. Example WorkspaceVSTSConfiguration, WorkspaceGitHubConfiguration
14997	Type *string `json:"type,omitempty"`
14998	// HostName - GitHub Enterprise host name. For example: https://github.mydomain.com
14999	HostName *string `json:"hostName,omitempty"`
15000	// AccountName - Account name
15001	AccountName *string `json:"accountName,omitempty"`
15002	// ProjectName - VSTS project name
15003	ProjectName *string `json:"projectName,omitempty"`
15004	// RepositoryName - Repository name
15005	RepositoryName *string `json:"repositoryName,omitempty"`
15006	// CollaborationBranch - Collaboration branch
15007	CollaborationBranch *string `json:"collaborationBranch,omitempty"`
15008	// RootFolder - Root folder to use in the repository
15009	RootFolder *string `json:"rootFolder,omitempty"`
15010}
15011
15012// WorkspacesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
15013// long-running operation.
15014type WorkspacesCreateOrUpdateFuture struct {
15015	azure.FutureAPI
15016	// Result returns the result of the asynchronous operation.
15017	// If the operation has not completed it will return an error.
15018	Result func(WorkspacesClient) (Workspace, error)
15019}
15020
15021// UnmarshalJSON is the custom unmarshaller for CreateFuture.
15022func (future *WorkspacesCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
15023	var azFuture azure.Future
15024	if err := json.Unmarshal(body, &azFuture); err != nil {
15025		return err
15026	}
15027	future.FutureAPI = &azFuture
15028	future.Result = future.result
15029	return nil
15030}
15031
15032// result is the default implementation for WorkspacesCreateOrUpdateFuture.Result.
15033func (future *WorkspacesCreateOrUpdateFuture) result(client WorkspacesClient) (w Workspace, err error) {
15034	var done bool
15035	done, err = future.DoneWithContext(context.Background(), client)
15036	if err != nil {
15037		err = autorest.NewErrorWithError(err, "synapse.WorkspacesCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
15038		return
15039	}
15040	if !done {
15041		w.Response.Response = future.Response()
15042		err = azure.NewAsyncOpIncompleteError("synapse.WorkspacesCreateOrUpdateFuture")
15043		return
15044	}
15045	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
15046	if w.Response.Response, err = future.GetResult(sender); err == nil && w.Response.Response.StatusCode != http.StatusNoContent {
15047		w, err = client.CreateOrUpdateResponder(w.Response.Response)
15048		if err != nil {
15049			err = autorest.NewErrorWithError(err, "synapse.WorkspacesCreateOrUpdateFuture", "Result", w.Response.Response, "Failure responding to request")
15050		}
15051	}
15052	return
15053}
15054
15055// WorkspacesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
15056// operation.
15057type WorkspacesDeleteFuture struct {
15058	azure.FutureAPI
15059	// Result returns the result of the asynchronous operation.
15060	// If the operation has not completed it will return an error.
15061	Result func(WorkspacesClient) (SetObject, error)
15062}
15063
15064// UnmarshalJSON is the custom unmarshaller for CreateFuture.
15065func (future *WorkspacesDeleteFuture) UnmarshalJSON(body []byte) error {
15066	var azFuture azure.Future
15067	if err := json.Unmarshal(body, &azFuture); err != nil {
15068		return err
15069	}
15070	future.FutureAPI = &azFuture
15071	future.Result = future.result
15072	return nil
15073}
15074
15075// result is the default implementation for WorkspacesDeleteFuture.Result.
15076func (future *WorkspacesDeleteFuture) result(client WorkspacesClient) (so SetObject, err error) {
15077	var done bool
15078	done, err = future.DoneWithContext(context.Background(), client)
15079	if err != nil {
15080		err = autorest.NewErrorWithError(err, "synapse.WorkspacesDeleteFuture", "Result", future.Response(), "Polling failure")
15081		return
15082	}
15083	if !done {
15084		so.Response.Response = future.Response()
15085		err = azure.NewAsyncOpIncompleteError("synapse.WorkspacesDeleteFuture")
15086		return
15087	}
15088	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
15089	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
15090		so, err = client.DeleteResponder(so.Response.Response)
15091		if err != nil {
15092			err = autorest.NewErrorWithError(err, "synapse.WorkspacesDeleteFuture", "Result", so.Response.Response, "Failure responding to request")
15093		}
15094	}
15095	return
15096}
15097
15098// WorkspaceSQLAadAdminsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
15099// long-running operation.
15100type WorkspaceSQLAadAdminsCreateOrUpdateFuture struct {
15101	azure.FutureAPI
15102	// Result returns the result of the asynchronous operation.
15103	// If the operation has not completed it will return an error.
15104	Result func(WorkspaceSQLAadAdminsClient) (WorkspaceAadAdminInfo, error)
15105}
15106
15107// UnmarshalJSON is the custom unmarshaller for CreateFuture.
15108func (future *WorkspaceSQLAadAdminsCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
15109	var azFuture azure.Future
15110	if err := json.Unmarshal(body, &azFuture); err != nil {
15111		return err
15112	}
15113	future.FutureAPI = &azFuture
15114	future.Result = future.result
15115	return nil
15116}
15117
15118// result is the default implementation for WorkspaceSQLAadAdminsCreateOrUpdateFuture.Result.
15119func (future *WorkspaceSQLAadAdminsCreateOrUpdateFuture) result(client WorkspaceSQLAadAdminsClient) (waai WorkspaceAadAdminInfo, err error) {
15120	var done bool
15121	done, err = future.DoneWithContext(context.Background(), client)
15122	if err != nil {
15123		err = autorest.NewErrorWithError(err, "synapse.WorkspaceSQLAadAdminsCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
15124		return
15125	}
15126	if !done {
15127		waai.Response.Response = future.Response()
15128		err = azure.NewAsyncOpIncompleteError("synapse.WorkspaceSQLAadAdminsCreateOrUpdateFuture")
15129		return
15130	}
15131	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
15132	if waai.Response.Response, err = future.GetResult(sender); err == nil && waai.Response.Response.StatusCode != http.StatusNoContent {
15133		waai, err = client.CreateOrUpdateResponder(waai.Response.Response)
15134		if err != nil {
15135			err = autorest.NewErrorWithError(err, "synapse.WorkspaceSQLAadAdminsCreateOrUpdateFuture", "Result", waai.Response.Response, "Failure responding to request")
15136		}
15137	}
15138	return
15139}
15140
15141// WorkspaceSQLAadAdminsDeleteFuture an abstraction for monitoring and retrieving the results of a
15142// long-running operation.
15143type WorkspaceSQLAadAdminsDeleteFuture struct {
15144	azure.FutureAPI
15145	// Result returns the result of the asynchronous operation.
15146	// If the operation has not completed it will return an error.
15147	Result func(WorkspaceSQLAadAdminsClient) (autorest.Response, error)
15148}
15149
15150// UnmarshalJSON is the custom unmarshaller for CreateFuture.
15151func (future *WorkspaceSQLAadAdminsDeleteFuture) UnmarshalJSON(body []byte) error {
15152	var azFuture azure.Future
15153	if err := json.Unmarshal(body, &azFuture); err != nil {
15154		return err
15155	}
15156	future.FutureAPI = &azFuture
15157	future.Result = future.result
15158	return nil
15159}
15160
15161// result is the default implementation for WorkspaceSQLAadAdminsDeleteFuture.Result.
15162func (future *WorkspaceSQLAadAdminsDeleteFuture) result(client WorkspaceSQLAadAdminsClient) (ar autorest.Response, err error) {
15163	var done bool
15164	done, err = future.DoneWithContext(context.Background(), client)
15165	if err != nil {
15166		err = autorest.NewErrorWithError(err, "synapse.WorkspaceSQLAadAdminsDeleteFuture", "Result", future.Response(), "Polling failure")
15167		return
15168	}
15169	if !done {
15170		ar.Response = future.Response()
15171		err = azure.NewAsyncOpIncompleteError("synapse.WorkspaceSQLAadAdminsDeleteFuture")
15172		return
15173	}
15174	ar.Response = future.Response()
15175	return
15176}
15177
15178// WorkspacesUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
15179// operation.
15180type WorkspacesUpdateFuture struct {
15181	azure.FutureAPI
15182	// Result returns the result of the asynchronous operation.
15183	// If the operation has not completed it will return an error.
15184	Result func(WorkspacesClient) (Workspace, error)
15185}
15186
15187// UnmarshalJSON is the custom unmarshaller for CreateFuture.
15188func (future *WorkspacesUpdateFuture) UnmarshalJSON(body []byte) error {
15189	var azFuture azure.Future
15190	if err := json.Unmarshal(body, &azFuture); err != nil {
15191		return err
15192	}
15193	future.FutureAPI = &azFuture
15194	future.Result = future.result
15195	return nil
15196}
15197
15198// result is the default implementation for WorkspacesUpdateFuture.Result.
15199func (future *WorkspacesUpdateFuture) result(client WorkspacesClient) (w Workspace, err error) {
15200	var done bool
15201	done, err = future.DoneWithContext(context.Background(), client)
15202	if err != nil {
15203		err = autorest.NewErrorWithError(err, "synapse.WorkspacesUpdateFuture", "Result", future.Response(), "Polling failure")
15204		return
15205	}
15206	if !done {
15207		w.Response.Response = future.Response()
15208		err = azure.NewAsyncOpIncompleteError("synapse.WorkspacesUpdateFuture")
15209		return
15210	}
15211	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
15212	if w.Response.Response, err = future.GetResult(sender); err == nil && w.Response.Response.StatusCode != http.StatusNoContent {
15213		w, err = client.UpdateResponder(w.Response.Response)
15214		if err != nil {
15215			err = autorest.NewErrorWithError(err, "synapse.WorkspacesUpdateFuture", "Result", w.Response.Response, "Failure responding to request")
15216		}
15217	}
15218	return
15219}
15220