1// +build go1.13
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// Code generated by Microsoft (R) AutoRest Code Generator.
6// Changes may cause incorrect behavior and will be lost if the code is regenerated.
7
8package azartifacts
9
10import (
11	"encoding/json"
12	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
13	"reflect"
14	"time"
15)
16
17// ActivityClassification provides polymorphic access to related types.
18// Call the interface's GetActivity() method to access the common type.
19// Use a type switch to determine the concrete type.  The possible types are:
20// - *Activity, *AppendVariableActivity, *AzureDataExplorerCommandActivity, *AzureFunctionActivity, *AzureMLBatchExecutionActivity,
21// - *AzureMLExecutePipelineActivity, *AzureMLUpdateResourceActivity, *ControlActivity, *CopyActivity, *CustomActivity, *DataLakeAnalyticsUSQLActivity,
22// - *DatabricksNotebookActivity, *DatabricksSparkJarActivity, *DatabricksSparkPythonActivity, *DeleteActivity, *ExecuteDataFlowActivity,
23// - *ExecutePipelineActivity, *ExecuteSSISPackageActivity, *ExecutionActivity, *FilterActivity, *ForEachActivity, *GetMetadataActivity,
24// - *HDInsightHiveActivity, *HDInsightMapReduceActivity, *HDInsightPigActivity, *HDInsightSparkActivity, *HDInsightStreamingActivity,
25// - *IfConditionActivity, *LookupActivity, *SetVariableActivity, *SqlPoolStoredProcedureActivity, *SqlServerStoredProcedureActivity,
26// - *SwitchActivity, *SynapseNotebookActivity, *SynapseSparkJobDefinitionActivity, *UntilActivity, *ValidationActivity, *WaitActivity,
27// - *WebActivity, *WebHookActivity
28type ActivityClassification interface {
29	// GetActivity returns the Activity content of the underlying type.
30	GetActivity() *Activity
31}
32
33// Activity - A pipeline activity.
34type Activity struct {
35	// REQUIRED; Activity name.
36	Name *string `json:"name,omitempty"`
37
38	// REQUIRED; Type of activity.
39	Type *string `json:"type,omitempty"`
40
41	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
42	AdditionalProperties map[string]interface{}
43
44	// Activity depends on condition.
45	DependsOn []*ActivityDependency `json:"dependsOn,omitempty"`
46
47	// Activity description.
48	Description *string `json:"description,omitempty"`
49
50	// Activity user properties.
51	UserProperties []*UserProperty `json:"userProperties,omitempty"`
52}
53
54// GetActivity implements the ActivityClassification interface for type Activity.
55func (a *Activity) GetActivity() *Activity { return a }
56
57// UnmarshalJSON implements the json.Unmarshaller interface for type Activity.
58func (a *Activity) UnmarshalJSON(data []byte) error {
59	var rawMsg map[string]json.RawMessage
60	if err := json.Unmarshal(data, &rawMsg); err != nil {
61		return err
62	}
63	return a.unmarshalInternal(rawMsg)
64}
65
66func (a Activity) marshalInternal(discValue string) map[string]interface{} {
67	objectMap := make(map[string]interface{})
68	populate(objectMap, "dependsOn", a.DependsOn)
69	populate(objectMap, "description", a.Description)
70	populate(objectMap, "name", a.Name)
71	a.Type = &discValue
72	objectMap["type"] = a.Type
73	populate(objectMap, "userProperties", a.UserProperties)
74	if a.AdditionalProperties != nil {
75		for key, val := range a.AdditionalProperties {
76			objectMap[key] = val
77		}
78	}
79	return objectMap
80}
81
82func (a *Activity) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
83	for key, val := range rawMsg {
84		var err error
85		switch key {
86		case "dependsOn":
87			err = unpopulate(val, &a.DependsOn)
88			delete(rawMsg, key)
89		case "description":
90			err = unpopulate(val, &a.Description)
91			delete(rawMsg, key)
92		case "name":
93			err = unpopulate(val, &a.Name)
94			delete(rawMsg, key)
95		case "type":
96			err = unpopulate(val, &a.Type)
97			delete(rawMsg, key)
98		case "userProperties":
99			err = unpopulate(val, &a.UserProperties)
100			delete(rawMsg, key)
101		default:
102			if a.AdditionalProperties == nil {
103				a.AdditionalProperties = map[string]interface{}{}
104			}
105			if val != nil {
106				var aux interface{}
107				err = json.Unmarshal(val, &aux)
108				a.AdditionalProperties[key] = aux
109			}
110			delete(rawMsg, key)
111		}
112		if err != nil {
113			return err
114		}
115	}
116	return nil
117}
118
119// ActivityDependency - Activity dependency information.
120type ActivityDependency struct {
121	// REQUIRED; Activity name.
122	Activity *string `json:"activity,omitempty"`
123
124	// REQUIRED; Match-Condition for the dependency.
125	DependencyConditions []*DependencyCondition `json:"dependencyConditions,omitempty"`
126
127	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
128	AdditionalProperties map[string]interface{}
129}
130
131// MarshalJSON implements the json.Marshaller interface for type ActivityDependency.
132func (a ActivityDependency) MarshalJSON() ([]byte, error) {
133	objectMap := make(map[string]interface{})
134	populate(objectMap, "activity", a.Activity)
135	populate(objectMap, "dependencyConditions", a.DependencyConditions)
136	if a.AdditionalProperties != nil {
137		for key, val := range a.AdditionalProperties {
138			objectMap[key] = val
139		}
140	}
141	return json.Marshal(objectMap)
142}
143
144// UnmarshalJSON implements the json.Unmarshaller interface for type ActivityDependency.
145func (a *ActivityDependency) UnmarshalJSON(data []byte) error {
146	var rawMsg map[string]json.RawMessage
147	if err := json.Unmarshal(data, &rawMsg); err != nil {
148		return err
149	}
150	for key, val := range rawMsg {
151		var err error
152		switch key {
153		case "activity":
154			err = unpopulate(val, &a.Activity)
155			delete(rawMsg, key)
156		case "dependencyConditions":
157			err = unpopulate(val, &a.DependencyConditions)
158			delete(rawMsg, key)
159		default:
160			if a.AdditionalProperties == nil {
161				a.AdditionalProperties = map[string]interface{}{}
162			}
163			if val != nil {
164				var aux interface{}
165				err = json.Unmarshal(val, &aux)
166				a.AdditionalProperties[key] = aux
167			}
168			delete(rawMsg, key)
169		}
170		if err != nil {
171			return err
172		}
173	}
174	return nil
175}
176
177// ActivityPolicy - Execution policy for an activity.
178type ActivityPolicy struct {
179	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
180	AdditionalProperties map[string]interface{}
181
182	// Maximum ordinary retry attempts. Default is 0. Type: integer (or Expression with resultType integer), minimum: 0.
183	Retry interface{} `json:"retry,omitempty"`
184
185	// Interval between each retry attempt (in seconds). The default is 30 sec.
186	RetryIntervalInSeconds *int32 `json:"retryIntervalInSeconds,omitempty"`
187
188	// When set to true, Input from activity is considered as secure and will not be logged to monitoring.
189	SecureInput *bool `json:"secureInput,omitempty"`
190
191	// When set to true, Output from activity is considered as secure and will not be logged to monitoring.
192	SecureOutput *bool `json:"secureOutput,omitempty"`
193
194	// Specifies the timeout for the activity to run. The default timeout is 7 days. Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
195	Timeout interface{} `json:"timeout,omitempty"`
196}
197
198// MarshalJSON implements the json.Marshaller interface for type ActivityPolicy.
199func (a ActivityPolicy) MarshalJSON() ([]byte, error) {
200	objectMap := make(map[string]interface{})
201	populate(objectMap, "retry", a.Retry)
202	populate(objectMap, "retryIntervalInSeconds", a.RetryIntervalInSeconds)
203	populate(objectMap, "secureInput", a.SecureInput)
204	populate(objectMap, "secureOutput", a.SecureOutput)
205	populate(objectMap, "timeout", a.Timeout)
206	if a.AdditionalProperties != nil {
207		for key, val := range a.AdditionalProperties {
208			objectMap[key] = val
209		}
210	}
211	return json.Marshal(objectMap)
212}
213
214// UnmarshalJSON implements the json.Unmarshaller interface for type ActivityPolicy.
215func (a *ActivityPolicy) UnmarshalJSON(data []byte) error {
216	var rawMsg map[string]json.RawMessage
217	if err := json.Unmarshal(data, &rawMsg); err != nil {
218		return err
219	}
220	for key, val := range rawMsg {
221		var err error
222		switch key {
223		case "retry":
224			err = unpopulate(val, &a.Retry)
225			delete(rawMsg, key)
226		case "retryIntervalInSeconds":
227			err = unpopulate(val, &a.RetryIntervalInSeconds)
228			delete(rawMsg, key)
229		case "secureInput":
230			err = unpopulate(val, &a.SecureInput)
231			delete(rawMsg, key)
232		case "secureOutput":
233			err = unpopulate(val, &a.SecureOutput)
234			delete(rawMsg, key)
235		case "timeout":
236			err = unpopulate(val, &a.Timeout)
237			delete(rawMsg, key)
238		default:
239			if a.AdditionalProperties == nil {
240				a.AdditionalProperties = map[string]interface{}{}
241			}
242			if val != nil {
243				var aux interface{}
244				err = json.Unmarshal(val, &aux)
245				a.AdditionalProperties[key] = aux
246			}
247			delete(rawMsg, key)
248		}
249		if err != nil {
250			return err
251		}
252	}
253	return nil
254}
255
256// ActivityRun - Information about an activity run in a pipeline.
257type ActivityRun struct {
258	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
259	AdditionalProperties map[string]interface{}
260
261	// READ-ONLY; The name of the activity.
262	ActivityName *string `json:"activityName,omitempty" azure:"ro"`
263
264	// READ-ONLY; The end time of the activity run in 'ISO 8601' format.
265	ActivityRunEnd *time.Time `json:"activityRunEnd,omitempty" azure:"ro"`
266
267	// READ-ONLY; The id of the activity run.
268	ActivityRunID *string `json:"activityRunId,omitempty" azure:"ro"`
269
270	// READ-ONLY; The start time of the activity run in 'ISO 8601' format.
271	ActivityRunStart *time.Time `json:"activityRunStart,omitempty" azure:"ro"`
272
273	// READ-ONLY; The type of the activity.
274	ActivityType *string `json:"activityType,omitempty" azure:"ro"`
275
276	// READ-ONLY; The duration of the activity run.
277	DurationInMs *int32 `json:"durationInMs,omitempty" azure:"ro"`
278
279	// READ-ONLY; The error if any from the activity run.
280	Error interface{} `json:"error,omitempty" azure:"ro"`
281
282	// READ-ONLY; The input for the activity.
283	Input interface{} `json:"input,omitempty" azure:"ro"`
284
285	// READ-ONLY; The name of the compute linked service.
286	LinkedServiceName *string `json:"linkedServiceName,omitempty" azure:"ro"`
287
288	// READ-ONLY; The output for the activity.
289	Output interface{} `json:"output,omitempty" azure:"ro"`
290
291	// READ-ONLY; The name of the pipeline.
292	PipelineName *string `json:"pipelineName,omitempty" azure:"ro"`
293
294	// READ-ONLY; The id of the pipeline run.
295	PipelineRunID *string `json:"pipelineRunId,omitempty" azure:"ro"`
296
297	// READ-ONLY; The status of the activity run.
298	Status *string `json:"status,omitempty" azure:"ro"`
299}
300
301// MarshalJSON implements the json.Marshaller interface for type ActivityRun.
302func (a ActivityRun) MarshalJSON() ([]byte, error) {
303	objectMap := make(map[string]interface{})
304	populate(objectMap, "activityName", a.ActivityName)
305	populate(objectMap, "activityRunEnd", (*timeRFC3339)(a.ActivityRunEnd))
306	populate(objectMap, "activityRunId", a.ActivityRunID)
307	populate(objectMap, "activityRunStart", (*timeRFC3339)(a.ActivityRunStart))
308	populate(objectMap, "activityType", a.ActivityType)
309	populate(objectMap, "durationInMs", a.DurationInMs)
310	populate(objectMap, "error", a.Error)
311	populate(objectMap, "input", a.Input)
312	populate(objectMap, "linkedServiceName", a.LinkedServiceName)
313	populate(objectMap, "output", a.Output)
314	populate(objectMap, "pipelineName", a.PipelineName)
315	populate(objectMap, "pipelineRunId", a.PipelineRunID)
316	populate(objectMap, "status", a.Status)
317	if a.AdditionalProperties != nil {
318		for key, val := range a.AdditionalProperties {
319			objectMap[key] = val
320		}
321	}
322	return json.Marshal(objectMap)
323}
324
325// UnmarshalJSON implements the json.Unmarshaller interface for type ActivityRun.
326func (a *ActivityRun) UnmarshalJSON(data []byte) error {
327	var rawMsg map[string]json.RawMessage
328	if err := json.Unmarshal(data, &rawMsg); err != nil {
329		return err
330	}
331	for key, val := range rawMsg {
332		var err error
333		switch key {
334		case "activityName":
335			err = unpopulate(val, &a.ActivityName)
336			delete(rawMsg, key)
337		case "activityRunEnd":
338			var aux timeRFC3339
339			err = unpopulate(val, &aux)
340			a.ActivityRunEnd = (*time.Time)(&aux)
341			delete(rawMsg, key)
342		case "activityRunId":
343			err = unpopulate(val, &a.ActivityRunID)
344			delete(rawMsg, key)
345		case "activityRunStart":
346			var aux timeRFC3339
347			err = unpopulate(val, &aux)
348			a.ActivityRunStart = (*time.Time)(&aux)
349			delete(rawMsg, key)
350		case "activityType":
351			err = unpopulate(val, &a.ActivityType)
352			delete(rawMsg, key)
353		case "durationInMs":
354			err = unpopulate(val, &a.DurationInMs)
355			delete(rawMsg, key)
356		case "error":
357			err = unpopulate(val, &a.Error)
358			delete(rawMsg, key)
359		case "input":
360			err = unpopulate(val, &a.Input)
361			delete(rawMsg, key)
362		case "linkedServiceName":
363			err = unpopulate(val, &a.LinkedServiceName)
364			delete(rawMsg, key)
365		case "output":
366			err = unpopulate(val, &a.Output)
367			delete(rawMsg, key)
368		case "pipelineName":
369			err = unpopulate(val, &a.PipelineName)
370			delete(rawMsg, key)
371		case "pipelineRunId":
372			err = unpopulate(val, &a.PipelineRunID)
373			delete(rawMsg, key)
374		case "status":
375			err = unpopulate(val, &a.Status)
376			delete(rawMsg, key)
377		default:
378			if a.AdditionalProperties == nil {
379				a.AdditionalProperties = map[string]interface{}{}
380			}
381			if val != nil {
382				var aux interface{}
383				err = json.Unmarshal(val, &aux)
384				a.AdditionalProperties[key] = aux
385			}
386			delete(rawMsg, key)
387		}
388		if err != nil {
389			return err
390		}
391	}
392	return nil
393}
394
395// ActivityRunsQueryResponse - A list activity runs.
396type ActivityRunsQueryResponse struct {
397	// REQUIRED; List of activity runs.
398	Value []*ActivityRun `json:"value,omitempty"`
399
400	// The continuation token for getting the next page of results, if any remaining results exist, null otherwise.
401	ContinuationToken *string `json:"continuationToken,omitempty"`
402}
403
404// MarshalJSON implements the json.Marshaller interface for type ActivityRunsQueryResponse.
405func (a ActivityRunsQueryResponse) MarshalJSON() ([]byte, error) {
406	objectMap := make(map[string]interface{})
407	populate(objectMap, "continuationToken", a.ContinuationToken)
408	populate(objectMap, "value", a.Value)
409	return json.Marshal(objectMap)
410}
411
412// AddDataFlowToDebugSessionResponse - Response body structure for starting data flow debug session.
413type AddDataFlowToDebugSessionResponse struct {
414	// The ID of data flow debug job version.
415	JobVersion *string `json:"jobVersion,omitempty"`
416}
417
418// AdditionalColumns - Specify the column name and value of additional columns.
419type AdditionalColumns struct {
420	// Additional column name. Type: string (or Expression with resultType string).
421	Name interface{} `json:"name,omitempty"`
422
423	// Additional column value. Type: string (or Expression with resultType string).
424	Value interface{} `json:"value,omitempty"`
425}
426
427// AmazonMWSLinkedService - Amazon Marketplace Web Service linked service.
428type AmazonMWSLinkedService struct {
429	LinkedService
430	// REQUIRED; Amazon Marketplace Web Service linked service properties.
431	TypeProperties *AmazonMWSLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
432}
433
434// MarshalJSON implements the json.Marshaller interface for type AmazonMWSLinkedService.
435func (a AmazonMWSLinkedService) MarshalJSON() ([]byte, error) {
436	objectMap := a.LinkedService.marshalInternal("AmazonMWS")
437	populate(objectMap, "typeProperties", a.TypeProperties)
438	return json.Marshal(objectMap)
439}
440
441// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonMWSLinkedService.
442func (a *AmazonMWSLinkedService) UnmarshalJSON(data []byte) error {
443	var rawMsg map[string]json.RawMessage
444	if err := json.Unmarshal(data, &rawMsg); err != nil {
445		return err
446	}
447	for key, val := range rawMsg {
448		var err error
449		switch key {
450		case "typeProperties":
451			err = unpopulate(val, &a.TypeProperties)
452			delete(rawMsg, key)
453		}
454		if err != nil {
455			return err
456		}
457	}
458	return a.LinkedService.unmarshalInternal(rawMsg)
459}
460
461// AmazonMWSLinkedServiceTypeProperties - Amazon Marketplace Web Service linked service properties.
462type AmazonMWSLinkedServiceTypeProperties struct {
463	// REQUIRED; The access key id used to access data.
464	AccessKeyID interface{} `json:"accessKeyId,omitempty"`
465
466	// REQUIRED; The endpoint of the Amazon MWS server, (i.e. mws.amazonservices.com)
467	Endpoint interface{} `json:"endpoint,omitempty"`
468
469	// REQUIRED; The Amazon Marketplace ID you want to retrieve data from. To retrieve data from multiple Marketplace IDs, separate them with a comma (,). (i.e.
470	// A2EUQ1WTGCTBG2)
471	MarketplaceID interface{} `json:"marketplaceID,omitempty"`
472
473	// REQUIRED; The Amazon seller ID.
474	SellerID interface{} `json:"sellerID,omitempty"`
475
476	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
477	// with resultType string).
478	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
479
480	// The Amazon MWS authentication token.
481	MwsAuthToken SecretBaseClassification `json:"mwsAuthToken,omitempty"`
482
483	// The secret key used to access data.
484	SecretKey SecretBaseClassification `json:"secretKey,omitempty"`
485
486	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
487	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
488
489	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
490	// is true.
491	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
492
493	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
494	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
495}
496
497// MarshalJSON implements the json.Marshaller interface for type AmazonMWSLinkedServiceTypeProperties.
498func (a AmazonMWSLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
499	objectMap := make(map[string]interface{})
500	populate(objectMap, "accessKeyId", a.AccessKeyID)
501	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
502	populate(objectMap, "endpoint", a.Endpoint)
503	populate(objectMap, "marketplaceID", a.MarketplaceID)
504	populate(objectMap, "mwsAuthToken", a.MwsAuthToken)
505	populate(objectMap, "secretKey", a.SecretKey)
506	populate(objectMap, "sellerID", a.SellerID)
507	populate(objectMap, "useEncryptedEndpoints", a.UseEncryptedEndpoints)
508	populate(objectMap, "useHostVerification", a.UseHostVerification)
509	populate(objectMap, "usePeerVerification", a.UsePeerVerification)
510	return json.Marshal(objectMap)
511}
512
513// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonMWSLinkedServiceTypeProperties.
514func (a *AmazonMWSLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
515	var rawMsg map[string]json.RawMessage
516	if err := json.Unmarshal(data, &rawMsg); err != nil {
517		return err
518	}
519	for key, val := range rawMsg {
520		var err error
521		switch key {
522		case "accessKeyId":
523			err = unpopulate(val, &a.AccessKeyID)
524			delete(rawMsg, key)
525		case "encryptedCredential":
526			err = unpopulate(val, &a.EncryptedCredential)
527			delete(rawMsg, key)
528		case "endpoint":
529			err = unpopulate(val, &a.Endpoint)
530			delete(rawMsg, key)
531		case "marketplaceID":
532			err = unpopulate(val, &a.MarketplaceID)
533			delete(rawMsg, key)
534		case "mwsAuthToken":
535			a.MwsAuthToken, err = unmarshalSecretBaseClassification(val)
536			delete(rawMsg, key)
537		case "secretKey":
538			a.SecretKey, err = unmarshalSecretBaseClassification(val)
539			delete(rawMsg, key)
540		case "sellerID":
541			err = unpopulate(val, &a.SellerID)
542			delete(rawMsg, key)
543		case "useEncryptedEndpoints":
544			err = unpopulate(val, &a.UseEncryptedEndpoints)
545			delete(rawMsg, key)
546		case "useHostVerification":
547			err = unpopulate(val, &a.UseHostVerification)
548			delete(rawMsg, key)
549		case "usePeerVerification":
550			err = unpopulate(val, &a.UsePeerVerification)
551			delete(rawMsg, key)
552		}
553		if err != nil {
554			return err
555		}
556	}
557	return nil
558}
559
560// AmazonMWSObjectDataset - Amazon Marketplace Web Service dataset.
561type AmazonMWSObjectDataset struct {
562	Dataset
563	// Properties specific to this dataset type.
564	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
565}
566
567// MarshalJSON implements the json.Marshaller interface for type AmazonMWSObjectDataset.
568func (a AmazonMWSObjectDataset) MarshalJSON() ([]byte, error) {
569	objectMap := a.Dataset.marshalInternal("AmazonMWSObject")
570	populate(objectMap, "typeProperties", a.TypeProperties)
571	return json.Marshal(objectMap)
572}
573
574// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonMWSObjectDataset.
575func (a *AmazonMWSObjectDataset) UnmarshalJSON(data []byte) error {
576	var rawMsg map[string]json.RawMessage
577	if err := json.Unmarshal(data, &rawMsg); err != nil {
578		return err
579	}
580	for key, val := range rawMsg {
581		var err error
582		switch key {
583		case "typeProperties":
584			err = unpopulate(val, &a.TypeProperties)
585			delete(rawMsg, key)
586		}
587		if err != nil {
588			return err
589		}
590	}
591	return a.Dataset.unmarshalInternal(rawMsg)
592}
593
594// AmazonMWSSource - A copy activity Amazon Marketplace Web Service source.
595type AmazonMWSSource struct {
596	TabularSource
597	// A query to retrieve data from source. Type: string (or Expression with resultType string).
598	Query interface{} `json:"query,omitempty"`
599}
600
601// MarshalJSON implements the json.Marshaller interface for type AmazonMWSSource.
602func (a AmazonMWSSource) MarshalJSON() ([]byte, error) {
603	objectMap := a.TabularSource.marshalInternal("AmazonMWSSource")
604	populate(objectMap, "query", a.Query)
605	return json.Marshal(objectMap)
606}
607
608// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonMWSSource.
609func (a *AmazonMWSSource) UnmarshalJSON(data []byte) error {
610	var rawMsg map[string]json.RawMessage
611	if err := json.Unmarshal(data, &rawMsg); err != nil {
612		return err
613	}
614	for key, val := range rawMsg {
615		var err error
616		switch key {
617		case "query":
618			err = unpopulate(val, &a.Query)
619			delete(rawMsg, key)
620		}
621		if err != nil {
622			return err
623		}
624	}
625	return a.TabularSource.unmarshalInternal(rawMsg)
626}
627
628// AmazonRedshiftLinkedService - Linked service for Amazon Redshift.
629type AmazonRedshiftLinkedService struct {
630	LinkedService
631	// REQUIRED; Amazon Redshift linked service properties.
632	TypeProperties *AmazonRedshiftLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
633}
634
635// MarshalJSON implements the json.Marshaller interface for type AmazonRedshiftLinkedService.
636func (a AmazonRedshiftLinkedService) MarshalJSON() ([]byte, error) {
637	objectMap := a.LinkedService.marshalInternal("AmazonRedshift")
638	populate(objectMap, "typeProperties", a.TypeProperties)
639	return json.Marshal(objectMap)
640}
641
642// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonRedshiftLinkedService.
643func (a *AmazonRedshiftLinkedService) UnmarshalJSON(data []byte) error {
644	var rawMsg map[string]json.RawMessage
645	if err := json.Unmarshal(data, &rawMsg); err != nil {
646		return err
647	}
648	for key, val := range rawMsg {
649		var err error
650		switch key {
651		case "typeProperties":
652			err = unpopulate(val, &a.TypeProperties)
653			delete(rawMsg, key)
654		}
655		if err != nil {
656			return err
657		}
658	}
659	return a.LinkedService.unmarshalInternal(rawMsg)
660}
661
662// AmazonRedshiftLinkedServiceTypeProperties - Amazon Redshift linked service properties.
663type AmazonRedshiftLinkedServiceTypeProperties struct {
664	// REQUIRED; The database name of the Amazon Redshift source. Type: string (or Expression with resultType string).
665	Database interface{} `json:"database,omitempty"`
666
667	// REQUIRED; The name of the Amazon Redshift server. Type: string (or Expression with resultType string).
668	Server interface{} `json:"server,omitempty"`
669
670	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
671	// with resultType string).
672	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
673
674	// The password of the Amazon Redshift source.
675	Password SecretBaseClassification `json:"password,omitempty"`
676
677	// The TCP port number that the Amazon Redshift server uses to listen for client connections. The default value is 5439. Type: integer (or Expression with
678	// resultType integer).
679	Port interface{} `json:"port,omitempty"`
680
681	// The username of the Amazon Redshift source. Type: string (or Expression with resultType string).
682	Username interface{} `json:"username,omitempty"`
683}
684
685// MarshalJSON implements the json.Marshaller interface for type AmazonRedshiftLinkedServiceTypeProperties.
686func (a AmazonRedshiftLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
687	objectMap := make(map[string]interface{})
688	populate(objectMap, "database", a.Database)
689	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
690	populate(objectMap, "password", a.Password)
691	populate(objectMap, "port", a.Port)
692	populate(objectMap, "server", a.Server)
693	populate(objectMap, "username", a.Username)
694	return json.Marshal(objectMap)
695}
696
697// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonRedshiftLinkedServiceTypeProperties.
698func (a *AmazonRedshiftLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
699	var rawMsg map[string]json.RawMessage
700	if err := json.Unmarshal(data, &rawMsg); err != nil {
701		return err
702	}
703	for key, val := range rawMsg {
704		var err error
705		switch key {
706		case "database":
707			err = unpopulate(val, &a.Database)
708			delete(rawMsg, key)
709		case "encryptedCredential":
710			err = unpopulate(val, &a.EncryptedCredential)
711			delete(rawMsg, key)
712		case "password":
713			a.Password, err = unmarshalSecretBaseClassification(val)
714			delete(rawMsg, key)
715		case "port":
716			err = unpopulate(val, &a.Port)
717			delete(rawMsg, key)
718		case "server":
719			err = unpopulate(val, &a.Server)
720			delete(rawMsg, key)
721		case "username":
722			err = unpopulate(val, &a.Username)
723			delete(rawMsg, key)
724		}
725		if err != nil {
726			return err
727		}
728	}
729	return nil
730}
731
732// AmazonRedshiftSource - A copy activity source for Amazon Redshift Source.
733type AmazonRedshiftSource struct {
734	TabularSource
735	// Database query. Type: string (or Expression with resultType string).
736	Query interface{} `json:"query,omitempty"`
737
738	// The Amazon S3 settings needed for the interim Amazon S3 when copying from Amazon Redshift with unload. With this, data from Amazon Redshift source will
739	// be unloaded into S3 first and then copied into
740	// the targeted sink from the interim S3.
741	RedshiftUnloadSettings *RedshiftUnloadSettings `json:"redshiftUnloadSettings,omitempty"`
742}
743
744// MarshalJSON implements the json.Marshaller interface for type AmazonRedshiftSource.
745func (a AmazonRedshiftSource) MarshalJSON() ([]byte, error) {
746	objectMap := a.TabularSource.marshalInternal("AmazonRedshiftSource")
747	populate(objectMap, "query", a.Query)
748	populate(objectMap, "redshiftUnloadSettings", a.RedshiftUnloadSettings)
749	return json.Marshal(objectMap)
750}
751
752// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonRedshiftSource.
753func (a *AmazonRedshiftSource) UnmarshalJSON(data []byte) error {
754	var rawMsg map[string]json.RawMessage
755	if err := json.Unmarshal(data, &rawMsg); err != nil {
756		return err
757	}
758	for key, val := range rawMsg {
759		var err error
760		switch key {
761		case "query":
762			err = unpopulate(val, &a.Query)
763			delete(rawMsg, key)
764		case "redshiftUnloadSettings":
765			err = unpopulate(val, &a.RedshiftUnloadSettings)
766			delete(rawMsg, key)
767		}
768		if err != nil {
769			return err
770		}
771	}
772	return a.TabularSource.unmarshalInternal(rawMsg)
773}
774
775// AmazonRedshiftTableDataset - The Amazon Redshift table dataset.
776type AmazonRedshiftTableDataset struct {
777	Dataset
778	// Amazon Redshift table dataset properties.
779	TypeProperties *AmazonRedshiftTableDatasetTypeProperties `json:"typeProperties,omitempty"`
780}
781
782// MarshalJSON implements the json.Marshaller interface for type AmazonRedshiftTableDataset.
783func (a AmazonRedshiftTableDataset) MarshalJSON() ([]byte, error) {
784	objectMap := a.Dataset.marshalInternal("AmazonRedshiftTable")
785	populate(objectMap, "typeProperties", a.TypeProperties)
786	return json.Marshal(objectMap)
787}
788
789// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonRedshiftTableDataset.
790func (a *AmazonRedshiftTableDataset) UnmarshalJSON(data []byte) error {
791	var rawMsg map[string]json.RawMessage
792	if err := json.Unmarshal(data, &rawMsg); err != nil {
793		return err
794	}
795	for key, val := range rawMsg {
796		var err error
797		switch key {
798		case "typeProperties":
799			err = unpopulate(val, &a.TypeProperties)
800			delete(rawMsg, key)
801		}
802		if err != nil {
803			return err
804		}
805	}
806	return a.Dataset.unmarshalInternal(rawMsg)
807}
808
809// AmazonRedshiftTableDatasetTypeProperties - Amazon Redshift table dataset properties.
810type AmazonRedshiftTableDatasetTypeProperties struct {
811	// The Amazon Redshift schema name. Type: string (or Expression with resultType string).
812	Schema interface{} `json:"schema,omitempty"`
813
814	// The Amazon Redshift table name. Type: string (or Expression with resultType string).
815	Table interface{} `json:"table,omitempty"`
816
817	// This property will be retired. Please consider using schema + table properties instead.
818	TableName interface{} `json:"tableName,omitempty"`
819}
820
821// AmazonS3Dataset - A single Amazon Simple Storage Service (S3) object or a set of S3 objects.
822type AmazonS3Dataset struct {
823	Dataset
824	// REQUIRED; Amazon S3 dataset properties.
825	TypeProperties *AmazonS3DatasetTypeProperties `json:"typeProperties,omitempty"`
826}
827
828// MarshalJSON implements the json.Marshaller interface for type AmazonS3Dataset.
829func (a AmazonS3Dataset) MarshalJSON() ([]byte, error) {
830	objectMap := a.Dataset.marshalInternal("AmazonS3Object")
831	populate(objectMap, "typeProperties", a.TypeProperties)
832	return json.Marshal(objectMap)
833}
834
835// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonS3Dataset.
836func (a *AmazonS3Dataset) UnmarshalJSON(data []byte) error {
837	var rawMsg map[string]json.RawMessage
838	if err := json.Unmarshal(data, &rawMsg); err != nil {
839		return err
840	}
841	for key, val := range rawMsg {
842		var err error
843		switch key {
844		case "typeProperties":
845			err = unpopulate(val, &a.TypeProperties)
846			delete(rawMsg, key)
847		}
848		if err != nil {
849			return err
850		}
851	}
852	return a.Dataset.unmarshalInternal(rawMsg)
853}
854
855// AmazonS3DatasetTypeProperties - Amazon S3 dataset properties.
856type AmazonS3DatasetTypeProperties struct {
857	// REQUIRED; The name of the Amazon S3 bucket. Type: string (or Expression with resultType string).
858	BucketName interface{} `json:"bucketName,omitempty"`
859
860	// The data compression method used for the Amazon S3 object.
861	Compression DatasetCompressionClassification `json:"compression,omitempty"`
862
863	// The format of files.
864	Format DatasetStorageFormatClassification `json:"format,omitempty"`
865
866	// The key of the Amazon S3 object. Type: string (or Expression with resultType string).
867	Key interface{} `json:"key,omitempty"`
868
869	// The end of S3 object's modified datetime. Type: string (or Expression with resultType string).
870	ModifiedDatetimeEnd interface{} `json:"modifiedDatetimeEnd,omitempty"`
871
872	// The start of S3 object's modified datetime. Type: string (or Expression with resultType string).
873	ModifiedDatetimeStart interface{} `json:"modifiedDatetimeStart,omitempty"`
874
875	// The prefix filter for the S3 object name. Type: string (or Expression with resultType string).
876	Prefix interface{} `json:"prefix,omitempty"`
877
878	// The version for the S3 object. Type: string (or Expression with resultType string).
879	Version interface{} `json:"version,omitempty"`
880}
881
882// MarshalJSON implements the json.Marshaller interface for type AmazonS3DatasetTypeProperties.
883func (a AmazonS3DatasetTypeProperties) MarshalJSON() ([]byte, error) {
884	objectMap := make(map[string]interface{})
885	populate(objectMap, "bucketName", a.BucketName)
886	populate(objectMap, "compression", a.Compression)
887	populate(objectMap, "format", a.Format)
888	populate(objectMap, "key", a.Key)
889	populate(objectMap, "modifiedDatetimeEnd", a.ModifiedDatetimeEnd)
890	populate(objectMap, "modifiedDatetimeStart", a.ModifiedDatetimeStart)
891	populate(objectMap, "prefix", a.Prefix)
892	populate(objectMap, "version", a.Version)
893	return json.Marshal(objectMap)
894}
895
896// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonS3DatasetTypeProperties.
897func (a *AmazonS3DatasetTypeProperties) UnmarshalJSON(data []byte) error {
898	var rawMsg map[string]json.RawMessage
899	if err := json.Unmarshal(data, &rawMsg); err != nil {
900		return err
901	}
902	for key, val := range rawMsg {
903		var err error
904		switch key {
905		case "bucketName":
906			err = unpopulate(val, &a.BucketName)
907			delete(rawMsg, key)
908		case "compression":
909			a.Compression, err = unmarshalDatasetCompressionClassification(val)
910			delete(rawMsg, key)
911		case "format":
912			a.Format, err = unmarshalDatasetStorageFormatClassification(val)
913			delete(rawMsg, key)
914		case "key":
915			err = unpopulate(val, &a.Key)
916			delete(rawMsg, key)
917		case "modifiedDatetimeEnd":
918			err = unpopulate(val, &a.ModifiedDatetimeEnd)
919			delete(rawMsg, key)
920		case "modifiedDatetimeStart":
921			err = unpopulate(val, &a.ModifiedDatetimeStart)
922			delete(rawMsg, key)
923		case "prefix":
924			err = unpopulate(val, &a.Prefix)
925			delete(rawMsg, key)
926		case "version":
927			err = unpopulate(val, &a.Version)
928			delete(rawMsg, key)
929		}
930		if err != nil {
931			return err
932		}
933	}
934	return nil
935}
936
937// AmazonS3LinkedService - Linked service for Amazon S3.
938type AmazonS3LinkedService struct {
939	LinkedService
940	// REQUIRED; Amazon S3 linked service properties.
941	TypeProperties *AmazonS3LinkedServiceTypeProperties `json:"typeProperties,omitempty"`
942}
943
944// MarshalJSON implements the json.Marshaller interface for type AmazonS3LinkedService.
945func (a AmazonS3LinkedService) MarshalJSON() ([]byte, error) {
946	objectMap := a.LinkedService.marshalInternal("AmazonS3")
947	populate(objectMap, "typeProperties", a.TypeProperties)
948	return json.Marshal(objectMap)
949}
950
951// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonS3LinkedService.
952func (a *AmazonS3LinkedService) UnmarshalJSON(data []byte) error {
953	var rawMsg map[string]json.RawMessage
954	if err := json.Unmarshal(data, &rawMsg); err != nil {
955		return err
956	}
957	for key, val := range rawMsg {
958		var err error
959		switch key {
960		case "typeProperties":
961			err = unpopulate(val, &a.TypeProperties)
962			delete(rawMsg, key)
963		}
964		if err != nil {
965			return err
966		}
967	}
968	return a.LinkedService.unmarshalInternal(rawMsg)
969}
970
971// AmazonS3LinkedServiceTypeProperties - Amazon S3 linked service properties.
972type AmazonS3LinkedServiceTypeProperties struct {
973	// The access key identifier of the Amazon S3 Identity and Access Management (IAM) user. Type: string (or Expression with resultType string).
974	AccessKeyID interface{} `json:"accessKeyId,omitempty"`
975
976	// The authentication type of S3. Allowed value: AccessKey (default) or TemporarySecurityCredentials. Type: string (or Expression with resultType string).
977	AuthenticationType interface{} `json:"authenticationType,omitempty"`
978
979	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
980	// with resultType string).
981	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
982
983	// The secret access key of the Amazon S3 Identity and Access Management (IAM) user.
984	SecretAccessKey SecretBaseClassification `json:"secretAccessKey,omitempty"`
985
986	// This value specifies the endpoint to access with the S3 Connector. This is an optional property; change it only if you want to try a different service
987	// endpoint or want to switch between https and
988	// http. Type: string (or Expression with resultType string).
989	ServiceURL interface{} `json:"serviceUrl,omitempty"`
990
991	// The session token for the S3 temporary security credential.
992	SessionToken SecretBaseClassification `json:"sessionToken,omitempty"`
993}
994
995// MarshalJSON implements the json.Marshaller interface for type AmazonS3LinkedServiceTypeProperties.
996func (a AmazonS3LinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
997	objectMap := make(map[string]interface{})
998	populate(objectMap, "accessKeyId", a.AccessKeyID)
999	populate(objectMap, "authenticationType", a.AuthenticationType)
1000	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
1001	populate(objectMap, "secretAccessKey", a.SecretAccessKey)
1002	populate(objectMap, "serviceUrl", a.ServiceURL)
1003	populate(objectMap, "sessionToken", a.SessionToken)
1004	return json.Marshal(objectMap)
1005}
1006
1007// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonS3LinkedServiceTypeProperties.
1008func (a *AmazonS3LinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
1009	var rawMsg map[string]json.RawMessage
1010	if err := json.Unmarshal(data, &rawMsg); err != nil {
1011		return err
1012	}
1013	for key, val := range rawMsg {
1014		var err error
1015		switch key {
1016		case "accessKeyId":
1017			err = unpopulate(val, &a.AccessKeyID)
1018			delete(rawMsg, key)
1019		case "authenticationType":
1020			err = unpopulate(val, &a.AuthenticationType)
1021			delete(rawMsg, key)
1022		case "encryptedCredential":
1023			err = unpopulate(val, &a.EncryptedCredential)
1024			delete(rawMsg, key)
1025		case "secretAccessKey":
1026			a.SecretAccessKey, err = unmarshalSecretBaseClassification(val)
1027			delete(rawMsg, key)
1028		case "serviceUrl":
1029			err = unpopulate(val, &a.ServiceURL)
1030			delete(rawMsg, key)
1031		case "sessionToken":
1032			a.SessionToken, err = unmarshalSecretBaseClassification(val)
1033			delete(rawMsg, key)
1034		}
1035		if err != nil {
1036			return err
1037		}
1038	}
1039	return nil
1040}
1041
1042// AmazonS3Location - The location of amazon S3 dataset.
1043type AmazonS3Location struct {
1044	DatasetLocation
1045	// Specify the bucketName of amazon S3. Type: string (or Expression with resultType string)
1046	BucketName interface{} `json:"bucketName,omitempty"`
1047
1048	// Specify the version of amazon S3. Type: string (or Expression with resultType string).
1049	Version interface{} `json:"version,omitempty"`
1050}
1051
1052// MarshalJSON implements the json.Marshaller interface for type AmazonS3Location.
1053func (a AmazonS3Location) MarshalJSON() ([]byte, error) {
1054	objectMap := a.DatasetLocation.marshalInternal("AmazonS3Location")
1055	populate(objectMap, "bucketName", a.BucketName)
1056	populate(objectMap, "version", a.Version)
1057	return json.Marshal(objectMap)
1058}
1059
1060// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonS3Location.
1061func (a *AmazonS3Location) UnmarshalJSON(data []byte) error {
1062	var rawMsg map[string]json.RawMessage
1063	if err := json.Unmarshal(data, &rawMsg); err != nil {
1064		return err
1065	}
1066	for key, val := range rawMsg {
1067		var err error
1068		switch key {
1069		case "bucketName":
1070			err = unpopulate(val, &a.BucketName)
1071			delete(rawMsg, key)
1072		case "version":
1073			err = unpopulate(val, &a.Version)
1074			delete(rawMsg, key)
1075		}
1076		if err != nil {
1077			return err
1078		}
1079	}
1080	return a.DatasetLocation.unmarshalInternal(rawMsg)
1081}
1082
1083// AmazonS3ReadSettings - Azure data lake store read settings.
1084type AmazonS3ReadSettings struct {
1085	StoreReadSettings
1086	// Indicates whether the source files need to be deleted after copy completion. Default is false. Type: boolean (or Expression with resultType boolean).
1087	DeleteFilesAfterCompletion interface{} `json:"deleteFilesAfterCompletion,omitempty"`
1088
1089	// Indicates whether to enable partition discovery.
1090	EnablePartitionDiscovery *bool `json:"enablePartitionDiscovery,omitempty"`
1091
1092	// Point to a text file that lists each file (relative path to the path configured in the dataset) that you want to copy. Type: string (or Expression with
1093	// resultType string).
1094	FileListPath interface{} `json:"fileListPath,omitempty"`
1095
1096	// The end of file's modified datetime. Type: string (or Expression with resultType string).
1097	ModifiedDatetimeEnd interface{} `json:"modifiedDatetimeEnd,omitempty"`
1098
1099	// The start of file's modified datetime. Type: string (or Expression with resultType string).
1100	ModifiedDatetimeStart interface{} `json:"modifiedDatetimeStart,omitempty"`
1101
1102	// Specify the root path where partition discovery starts from. Type: string (or Expression with resultType string).
1103	PartitionRootPath interface{} `json:"partitionRootPath,omitempty"`
1104
1105	// The prefix filter for the S3 object name. Type: string (or Expression with resultType string).
1106	Prefix interface{} `json:"prefix,omitempty"`
1107
1108	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
1109	Recursive interface{} `json:"recursive,omitempty"`
1110
1111	// AmazonS3 wildcardFileName. Type: string (or Expression with resultType string).
1112	WildcardFileName interface{} `json:"wildcardFileName,omitempty"`
1113
1114	// AmazonS3 wildcardFolderPath. Type: string (or Expression with resultType string).
1115	WildcardFolderPath interface{} `json:"wildcardFolderPath,omitempty"`
1116}
1117
1118// MarshalJSON implements the json.Marshaller interface for type AmazonS3ReadSettings.
1119func (a AmazonS3ReadSettings) MarshalJSON() ([]byte, error) {
1120	objectMap := a.StoreReadSettings.marshalInternal("AmazonS3ReadSettings")
1121	populate(objectMap, "deleteFilesAfterCompletion", a.DeleteFilesAfterCompletion)
1122	populate(objectMap, "enablePartitionDiscovery", a.EnablePartitionDiscovery)
1123	populate(objectMap, "fileListPath", a.FileListPath)
1124	populate(objectMap, "modifiedDatetimeEnd", a.ModifiedDatetimeEnd)
1125	populate(objectMap, "modifiedDatetimeStart", a.ModifiedDatetimeStart)
1126	populate(objectMap, "partitionRootPath", a.PartitionRootPath)
1127	populate(objectMap, "prefix", a.Prefix)
1128	populate(objectMap, "recursive", a.Recursive)
1129	populate(objectMap, "wildcardFileName", a.WildcardFileName)
1130	populate(objectMap, "wildcardFolderPath", a.WildcardFolderPath)
1131	return json.Marshal(objectMap)
1132}
1133
1134// UnmarshalJSON implements the json.Unmarshaller interface for type AmazonS3ReadSettings.
1135func (a *AmazonS3ReadSettings) UnmarshalJSON(data []byte) error {
1136	var rawMsg map[string]json.RawMessage
1137	if err := json.Unmarshal(data, &rawMsg); err != nil {
1138		return err
1139	}
1140	for key, val := range rawMsg {
1141		var err error
1142		switch key {
1143		case "deleteFilesAfterCompletion":
1144			err = unpopulate(val, &a.DeleteFilesAfterCompletion)
1145			delete(rawMsg, key)
1146		case "enablePartitionDiscovery":
1147			err = unpopulate(val, &a.EnablePartitionDiscovery)
1148			delete(rawMsg, key)
1149		case "fileListPath":
1150			err = unpopulate(val, &a.FileListPath)
1151			delete(rawMsg, key)
1152		case "modifiedDatetimeEnd":
1153			err = unpopulate(val, &a.ModifiedDatetimeEnd)
1154			delete(rawMsg, key)
1155		case "modifiedDatetimeStart":
1156			err = unpopulate(val, &a.ModifiedDatetimeStart)
1157			delete(rawMsg, key)
1158		case "partitionRootPath":
1159			err = unpopulate(val, &a.PartitionRootPath)
1160			delete(rawMsg, key)
1161		case "prefix":
1162			err = unpopulate(val, &a.Prefix)
1163			delete(rawMsg, key)
1164		case "recursive":
1165			err = unpopulate(val, &a.Recursive)
1166			delete(rawMsg, key)
1167		case "wildcardFileName":
1168			err = unpopulate(val, &a.WildcardFileName)
1169			delete(rawMsg, key)
1170		case "wildcardFolderPath":
1171			err = unpopulate(val, &a.WildcardFolderPath)
1172			delete(rawMsg, key)
1173		}
1174		if err != nil {
1175			return err
1176		}
1177	}
1178	return a.StoreReadSettings.unmarshalInternal(rawMsg)
1179}
1180
1181// AppendVariableActivity - Append value for a Variable of type Array.
1182type AppendVariableActivity struct {
1183	ControlActivity
1184	// REQUIRED; Append Variable activity properties.
1185	TypeProperties *AppendVariableActivityTypeProperties `json:"typeProperties,omitempty"`
1186}
1187
1188// MarshalJSON implements the json.Marshaller interface for type AppendVariableActivity.
1189func (a AppendVariableActivity) MarshalJSON() ([]byte, error) {
1190	objectMap := a.ControlActivity.marshalInternal("AppendVariable")
1191	populate(objectMap, "typeProperties", a.TypeProperties)
1192	return json.Marshal(objectMap)
1193}
1194
1195// UnmarshalJSON implements the json.Unmarshaller interface for type AppendVariableActivity.
1196func (a *AppendVariableActivity) UnmarshalJSON(data []byte) error {
1197	var rawMsg map[string]json.RawMessage
1198	if err := json.Unmarshal(data, &rawMsg); err != nil {
1199		return err
1200	}
1201	for key, val := range rawMsg {
1202		var err error
1203		switch key {
1204		case "typeProperties":
1205			err = unpopulate(val, &a.TypeProperties)
1206			delete(rawMsg, key)
1207		}
1208		if err != nil {
1209			return err
1210		}
1211	}
1212	return a.ControlActivity.unmarshalInternal(rawMsg)
1213}
1214
1215// AppendVariableActivityTypeProperties - AppendVariable activity properties.
1216type AppendVariableActivityTypeProperties struct {
1217	// Value to be appended. Could be a static value or Expression
1218	Value interface{} `json:"value,omitempty"`
1219
1220	// Name of the variable whose value needs to be appended to.
1221	VariableName *string `json:"variableName,omitempty"`
1222}
1223
1224// ArtifactRenameRequest - Request body structure for rename artifact.
1225type ArtifactRenameRequest struct {
1226	// New name of the artifact.
1227	NewName *string `json:"newName,omitempty"`
1228}
1229
1230// AutoPauseProperties - Auto-pausing properties of a Big Data pool powered by Apache Spark
1231type AutoPauseProperties struct {
1232	// Number of minutes of idle time before the Big Data pool is automatically paused.
1233	DelayInMinutes *int32 `json:"delayInMinutes,omitempty"`
1234
1235	// Whether auto-pausing is enabled for the Big Data pool.
1236	Enabled *bool `json:"enabled,omitempty"`
1237}
1238
1239// AutoScaleProperties - Auto-scaling properties of a Big Data pool powered by Apache Spark
1240type AutoScaleProperties struct {
1241	// Whether automatic scaling is enabled for the Big Data pool.
1242	Enabled *bool `json:"enabled,omitempty"`
1243
1244	// The maximum number of nodes the Big Data pool can support.
1245	MaxNodeCount *int32 `json:"maxNodeCount,omitempty"`
1246
1247	// The minimum number of nodes the Big Data pool can support.
1248	MinNodeCount *int32 `json:"minNodeCount,omitempty"`
1249}
1250
1251// AvroDataset - Avro dataset.
1252type AvroDataset struct {
1253	Dataset
1254	// Avro dataset properties.
1255	TypeProperties *AvroDatasetTypeProperties `json:"typeProperties,omitempty"`
1256}
1257
1258// MarshalJSON implements the json.Marshaller interface for type AvroDataset.
1259func (a AvroDataset) MarshalJSON() ([]byte, error) {
1260	objectMap := a.Dataset.marshalInternal("Avro")
1261	populate(objectMap, "typeProperties", a.TypeProperties)
1262	return json.Marshal(objectMap)
1263}
1264
1265// UnmarshalJSON implements the json.Unmarshaller interface for type AvroDataset.
1266func (a *AvroDataset) UnmarshalJSON(data []byte) error {
1267	var rawMsg map[string]json.RawMessage
1268	if err := json.Unmarshal(data, &rawMsg); err != nil {
1269		return err
1270	}
1271	for key, val := range rawMsg {
1272		var err error
1273		switch key {
1274		case "typeProperties":
1275			err = unpopulate(val, &a.TypeProperties)
1276			delete(rawMsg, key)
1277		}
1278		if err != nil {
1279			return err
1280		}
1281	}
1282	return a.Dataset.unmarshalInternal(rawMsg)
1283}
1284
1285// AvroDatasetTypeProperties - Avro dataset properties.
1286type AvroDatasetTypeProperties struct {
1287	// REQUIRED; The location of the avro storage.
1288	Location DatasetLocationClassification `json:"location,omitempty"`
1289
1290	// A string from AvroCompressionCodecEnum or an expression
1291	AvroCompressionCodec interface{} `json:"avroCompressionCodec,omitempty"`
1292	AvroCompressionLevel *int32      `json:"avroCompressionLevel,omitempty"`
1293}
1294
1295// MarshalJSON implements the json.Marshaller interface for type AvroDatasetTypeProperties.
1296func (a AvroDatasetTypeProperties) MarshalJSON() ([]byte, error) {
1297	objectMap := make(map[string]interface{})
1298	populate(objectMap, "avroCompressionCodec", a.AvroCompressionCodec)
1299	populate(objectMap, "avroCompressionLevel", a.AvroCompressionLevel)
1300	populate(objectMap, "location", a.Location)
1301	return json.Marshal(objectMap)
1302}
1303
1304// UnmarshalJSON implements the json.Unmarshaller interface for type AvroDatasetTypeProperties.
1305func (a *AvroDatasetTypeProperties) UnmarshalJSON(data []byte) error {
1306	var rawMsg map[string]json.RawMessage
1307	if err := json.Unmarshal(data, &rawMsg); err != nil {
1308		return err
1309	}
1310	for key, val := range rawMsg {
1311		var err error
1312		switch key {
1313		case "avroCompressionCodec":
1314			err = unpopulate(val, &a.AvroCompressionCodec)
1315			delete(rawMsg, key)
1316		case "avroCompressionLevel":
1317			err = unpopulate(val, &a.AvroCompressionLevel)
1318			delete(rawMsg, key)
1319		case "location":
1320			a.Location, err = unmarshalDatasetLocationClassification(val)
1321			delete(rawMsg, key)
1322		}
1323		if err != nil {
1324			return err
1325		}
1326	}
1327	return nil
1328}
1329
1330// AvroFormat - The data stored in Avro format.
1331type AvroFormat struct {
1332	DatasetStorageFormat
1333}
1334
1335// MarshalJSON implements the json.Marshaller interface for type AvroFormat.
1336func (a AvroFormat) MarshalJSON() ([]byte, error) {
1337	objectMap := a.DatasetStorageFormat.marshalInternal("AvroFormat")
1338	return json.Marshal(objectMap)
1339}
1340
1341// AvroSink - A copy activity Avro sink.
1342type AvroSink struct {
1343	CopySink
1344	// Avro format settings.
1345	FormatSettings *AvroWriteSettings `json:"formatSettings,omitempty"`
1346
1347	// Avro store settings.
1348	StoreSettings StoreWriteSettingsClassification `json:"storeSettings,omitempty"`
1349}
1350
1351// MarshalJSON implements the json.Marshaller interface for type AvroSink.
1352func (a AvroSink) MarshalJSON() ([]byte, error) {
1353	objectMap := a.CopySink.marshalInternal("AvroSink")
1354	populate(objectMap, "formatSettings", a.FormatSettings)
1355	populate(objectMap, "storeSettings", a.StoreSettings)
1356	return json.Marshal(objectMap)
1357}
1358
1359// UnmarshalJSON implements the json.Unmarshaller interface for type AvroSink.
1360func (a *AvroSink) UnmarshalJSON(data []byte) error {
1361	var rawMsg map[string]json.RawMessage
1362	if err := json.Unmarshal(data, &rawMsg); err != nil {
1363		return err
1364	}
1365	for key, val := range rawMsg {
1366		var err error
1367		switch key {
1368		case "formatSettings":
1369			err = unpopulate(val, &a.FormatSettings)
1370			delete(rawMsg, key)
1371		case "storeSettings":
1372			a.StoreSettings, err = unmarshalStoreWriteSettingsClassification(val)
1373			delete(rawMsg, key)
1374		}
1375		if err != nil {
1376			return err
1377		}
1378	}
1379	return a.CopySink.unmarshalInternal(rawMsg)
1380}
1381
1382// AvroSource - A copy activity Avro source.
1383type AvroSource struct {
1384	CopySource
1385	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
1386	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
1387
1388	// Avro store settings.
1389	StoreSettings StoreReadSettingsClassification `json:"storeSettings,omitempty"`
1390}
1391
1392// MarshalJSON implements the json.Marshaller interface for type AvroSource.
1393func (a AvroSource) MarshalJSON() ([]byte, error) {
1394	objectMap := a.CopySource.marshalInternal("AvroSource")
1395	populate(objectMap, "additionalColumns", a.AdditionalColumns)
1396	populate(objectMap, "storeSettings", a.StoreSettings)
1397	return json.Marshal(objectMap)
1398}
1399
1400// UnmarshalJSON implements the json.Unmarshaller interface for type AvroSource.
1401func (a *AvroSource) UnmarshalJSON(data []byte) error {
1402	var rawMsg map[string]json.RawMessage
1403	if err := json.Unmarshal(data, &rawMsg); err != nil {
1404		return err
1405	}
1406	for key, val := range rawMsg {
1407		var err error
1408		switch key {
1409		case "additionalColumns":
1410			err = unpopulate(val, &a.AdditionalColumns)
1411			delete(rawMsg, key)
1412		case "storeSettings":
1413			a.StoreSettings, err = unmarshalStoreReadSettingsClassification(val)
1414			delete(rawMsg, key)
1415		}
1416		if err != nil {
1417			return err
1418		}
1419	}
1420	return a.CopySource.unmarshalInternal(rawMsg)
1421}
1422
1423// AvroWriteSettings - Avro write settings.
1424type AvroWriteSettings struct {
1425	FormatWriteSettings
1426	// Specifies the file name pattern _. when copy from non-file based store without partitionOptions. Type: string (or Expression with resultType string).
1427	FileNamePrefix interface{} `json:"fileNamePrefix,omitempty"`
1428
1429	// Limit the written file's row count to be smaller than or equal to the specified count. Type: integer (or Expression with resultType integer).
1430	MaxRowsPerFile interface{} `json:"maxRowsPerFile,omitempty"`
1431
1432	// Top level record name in write result, which is required in AVRO spec.
1433	RecordName *string `json:"recordName,omitempty"`
1434
1435	// Record namespace in the write result.
1436	RecordNamespace *string `json:"recordNamespace,omitempty"`
1437}
1438
1439// MarshalJSON implements the json.Marshaller interface for type AvroWriteSettings.
1440func (a AvroWriteSettings) MarshalJSON() ([]byte, error) {
1441	objectMap := a.FormatWriteSettings.marshalInternal("AvroWriteSettings")
1442	populate(objectMap, "fileNamePrefix", a.FileNamePrefix)
1443	populate(objectMap, "maxRowsPerFile", a.MaxRowsPerFile)
1444	populate(objectMap, "recordName", a.RecordName)
1445	populate(objectMap, "recordNamespace", a.RecordNamespace)
1446	return json.Marshal(objectMap)
1447}
1448
1449// UnmarshalJSON implements the json.Unmarshaller interface for type AvroWriteSettings.
1450func (a *AvroWriteSettings) UnmarshalJSON(data []byte) error {
1451	var rawMsg map[string]json.RawMessage
1452	if err := json.Unmarshal(data, &rawMsg); err != nil {
1453		return err
1454	}
1455	for key, val := range rawMsg {
1456		var err error
1457		switch key {
1458		case "fileNamePrefix":
1459			err = unpopulate(val, &a.FileNamePrefix)
1460			delete(rawMsg, key)
1461		case "maxRowsPerFile":
1462			err = unpopulate(val, &a.MaxRowsPerFile)
1463			delete(rawMsg, key)
1464		case "recordName":
1465			err = unpopulate(val, &a.RecordName)
1466			delete(rawMsg, key)
1467		case "recordNamespace":
1468			err = unpopulate(val, &a.RecordNamespace)
1469			delete(rawMsg, key)
1470		}
1471		if err != nil {
1472			return err
1473		}
1474	}
1475	return a.FormatWriteSettings.unmarshalInternal(rawMsg)
1476}
1477
1478// AzureBatchLinkedService - Azure Batch linked service.
1479type AzureBatchLinkedService struct {
1480	LinkedService
1481	// REQUIRED; Azure Batch linked service properties.
1482	TypeProperties *AzureBatchLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
1483}
1484
1485// MarshalJSON implements the json.Marshaller interface for type AzureBatchLinkedService.
1486func (a AzureBatchLinkedService) MarshalJSON() ([]byte, error) {
1487	objectMap := a.LinkedService.marshalInternal("AzureBatch")
1488	populate(objectMap, "typeProperties", a.TypeProperties)
1489	return json.Marshal(objectMap)
1490}
1491
1492// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBatchLinkedService.
1493func (a *AzureBatchLinkedService) UnmarshalJSON(data []byte) error {
1494	var rawMsg map[string]json.RawMessage
1495	if err := json.Unmarshal(data, &rawMsg); err != nil {
1496		return err
1497	}
1498	for key, val := range rawMsg {
1499		var err error
1500		switch key {
1501		case "typeProperties":
1502			err = unpopulate(val, &a.TypeProperties)
1503			delete(rawMsg, key)
1504		}
1505		if err != nil {
1506			return err
1507		}
1508	}
1509	return a.LinkedService.unmarshalInternal(rawMsg)
1510}
1511
1512// AzureBatchLinkedServiceTypeProperties - Azure Batch linked service properties.
1513type AzureBatchLinkedServiceTypeProperties struct {
1514	// REQUIRED; The Azure Batch account name. Type: string (or Expression with resultType string).
1515	AccountName interface{} `json:"accountName,omitempty"`
1516
1517	// REQUIRED; The Azure Batch URI. Type: string (or Expression with resultType string).
1518	BatchURI interface{} `json:"batchUri,omitempty"`
1519
1520	// REQUIRED; The Azure Storage linked service reference.
1521	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
1522
1523	// REQUIRED; The Azure Batch pool name. Type: string (or Expression with resultType string).
1524	PoolName interface{} `json:"poolName,omitempty"`
1525
1526	// The Azure Batch account access key.
1527	AccessKey SecretBaseClassification `json:"accessKey,omitempty"`
1528
1529	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
1530	// with resultType string).
1531	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
1532}
1533
1534// MarshalJSON implements the json.Marshaller interface for type AzureBatchLinkedServiceTypeProperties.
1535func (a AzureBatchLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
1536	objectMap := make(map[string]interface{})
1537	populate(objectMap, "accessKey", a.AccessKey)
1538	populate(objectMap, "accountName", a.AccountName)
1539	populate(objectMap, "batchUri", a.BatchURI)
1540	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
1541	populate(objectMap, "linkedServiceName", a.LinkedServiceName)
1542	populate(objectMap, "poolName", a.PoolName)
1543	return json.Marshal(objectMap)
1544}
1545
1546// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBatchLinkedServiceTypeProperties.
1547func (a *AzureBatchLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
1548	var rawMsg map[string]json.RawMessage
1549	if err := json.Unmarshal(data, &rawMsg); err != nil {
1550		return err
1551	}
1552	for key, val := range rawMsg {
1553		var err error
1554		switch key {
1555		case "accessKey":
1556			a.AccessKey, err = unmarshalSecretBaseClassification(val)
1557			delete(rawMsg, key)
1558		case "accountName":
1559			err = unpopulate(val, &a.AccountName)
1560			delete(rawMsg, key)
1561		case "batchUri":
1562			err = unpopulate(val, &a.BatchURI)
1563			delete(rawMsg, key)
1564		case "encryptedCredential":
1565			err = unpopulate(val, &a.EncryptedCredential)
1566			delete(rawMsg, key)
1567		case "linkedServiceName":
1568			err = unpopulate(val, &a.LinkedServiceName)
1569			delete(rawMsg, key)
1570		case "poolName":
1571			err = unpopulate(val, &a.PoolName)
1572			delete(rawMsg, key)
1573		}
1574		if err != nil {
1575			return err
1576		}
1577	}
1578	return nil
1579}
1580
1581// AzureBlobDataset - The Azure Blob storage.
1582type AzureBlobDataset struct {
1583	Dataset
1584	// Azure Blob dataset properties.
1585	TypeProperties *AzureBlobDatasetTypeProperties `json:"typeProperties,omitempty"`
1586}
1587
1588// MarshalJSON implements the json.Marshaller interface for type AzureBlobDataset.
1589func (a AzureBlobDataset) MarshalJSON() ([]byte, error) {
1590	objectMap := a.Dataset.marshalInternal("AzureBlob")
1591	populate(objectMap, "typeProperties", a.TypeProperties)
1592	return json.Marshal(objectMap)
1593}
1594
1595// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobDataset.
1596func (a *AzureBlobDataset) UnmarshalJSON(data []byte) error {
1597	var rawMsg map[string]json.RawMessage
1598	if err := json.Unmarshal(data, &rawMsg); err != nil {
1599		return err
1600	}
1601	for key, val := range rawMsg {
1602		var err error
1603		switch key {
1604		case "typeProperties":
1605			err = unpopulate(val, &a.TypeProperties)
1606			delete(rawMsg, key)
1607		}
1608		if err != nil {
1609			return err
1610		}
1611	}
1612	return a.Dataset.unmarshalInternal(rawMsg)
1613}
1614
1615// AzureBlobDatasetTypeProperties - Azure Blob dataset properties.
1616type AzureBlobDatasetTypeProperties struct {
1617	// The data compression method used for the blob storage.
1618	Compression DatasetCompressionClassification `json:"compression,omitempty"`
1619
1620	// The name of the Azure Blob. Type: string (or Expression with resultType string).
1621	FileName interface{} `json:"fileName,omitempty"`
1622
1623	// The path of the Azure Blob storage. Type: string (or Expression with resultType string).
1624	FolderPath interface{} `json:"folderPath,omitempty"`
1625
1626	// The format of the Azure Blob storage.
1627	Format DatasetStorageFormatClassification `json:"format,omitempty"`
1628
1629	// The end of Azure Blob's modified datetime. Type: string (or Expression with resultType string).
1630	ModifiedDatetimeEnd interface{} `json:"modifiedDatetimeEnd,omitempty"`
1631
1632	// The start of Azure Blob's modified datetime. Type: string (or Expression with resultType string).
1633	ModifiedDatetimeStart interface{} `json:"modifiedDatetimeStart,omitempty"`
1634
1635	// The root of blob path. Type: string (or Expression with resultType string).
1636	TableRootLocation interface{} `json:"tableRootLocation,omitempty"`
1637}
1638
1639// MarshalJSON implements the json.Marshaller interface for type AzureBlobDatasetTypeProperties.
1640func (a AzureBlobDatasetTypeProperties) MarshalJSON() ([]byte, error) {
1641	objectMap := make(map[string]interface{})
1642	populate(objectMap, "compression", a.Compression)
1643	populate(objectMap, "fileName", a.FileName)
1644	populate(objectMap, "folderPath", a.FolderPath)
1645	populate(objectMap, "format", a.Format)
1646	populate(objectMap, "modifiedDatetimeEnd", a.ModifiedDatetimeEnd)
1647	populate(objectMap, "modifiedDatetimeStart", a.ModifiedDatetimeStart)
1648	populate(objectMap, "tableRootLocation", a.TableRootLocation)
1649	return json.Marshal(objectMap)
1650}
1651
1652// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobDatasetTypeProperties.
1653func (a *AzureBlobDatasetTypeProperties) UnmarshalJSON(data []byte) error {
1654	var rawMsg map[string]json.RawMessage
1655	if err := json.Unmarshal(data, &rawMsg); err != nil {
1656		return err
1657	}
1658	for key, val := range rawMsg {
1659		var err error
1660		switch key {
1661		case "compression":
1662			a.Compression, err = unmarshalDatasetCompressionClassification(val)
1663			delete(rawMsg, key)
1664		case "fileName":
1665			err = unpopulate(val, &a.FileName)
1666			delete(rawMsg, key)
1667		case "folderPath":
1668			err = unpopulate(val, &a.FolderPath)
1669			delete(rawMsg, key)
1670		case "format":
1671			a.Format, err = unmarshalDatasetStorageFormatClassification(val)
1672			delete(rawMsg, key)
1673		case "modifiedDatetimeEnd":
1674			err = unpopulate(val, &a.ModifiedDatetimeEnd)
1675			delete(rawMsg, key)
1676		case "modifiedDatetimeStart":
1677			err = unpopulate(val, &a.ModifiedDatetimeStart)
1678			delete(rawMsg, key)
1679		case "tableRootLocation":
1680			err = unpopulate(val, &a.TableRootLocation)
1681			delete(rawMsg, key)
1682		}
1683		if err != nil {
1684			return err
1685		}
1686	}
1687	return nil
1688}
1689
1690// AzureBlobFSDataset - The Azure Data Lake Storage Gen2 storage.
1691type AzureBlobFSDataset struct {
1692	Dataset
1693	// Azure Data Lake Storage Gen2 dataset properties.
1694	TypeProperties *AzureBlobFSDatasetTypeProperties `json:"typeProperties,omitempty"`
1695}
1696
1697// MarshalJSON implements the json.Marshaller interface for type AzureBlobFSDataset.
1698func (a AzureBlobFSDataset) MarshalJSON() ([]byte, error) {
1699	objectMap := a.Dataset.marshalInternal("AzureBlobFSFile")
1700	populate(objectMap, "typeProperties", a.TypeProperties)
1701	return json.Marshal(objectMap)
1702}
1703
1704// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobFSDataset.
1705func (a *AzureBlobFSDataset) UnmarshalJSON(data []byte) error {
1706	var rawMsg map[string]json.RawMessage
1707	if err := json.Unmarshal(data, &rawMsg); err != nil {
1708		return err
1709	}
1710	for key, val := range rawMsg {
1711		var err error
1712		switch key {
1713		case "typeProperties":
1714			err = unpopulate(val, &a.TypeProperties)
1715			delete(rawMsg, key)
1716		}
1717		if err != nil {
1718			return err
1719		}
1720	}
1721	return a.Dataset.unmarshalInternal(rawMsg)
1722}
1723
1724// AzureBlobFSDatasetTypeProperties - Azure Data Lake Storage Gen2 dataset properties.
1725type AzureBlobFSDatasetTypeProperties struct {
1726	// The data compression method used for the blob storage.
1727	Compression DatasetCompressionClassification `json:"compression,omitempty"`
1728
1729	// The name of the Azure Data Lake Storage Gen2. Type: string (or Expression with resultType string).
1730	FileName interface{} `json:"fileName,omitempty"`
1731
1732	// The path of the Azure Data Lake Storage Gen2 storage. Type: string (or Expression with resultType string).
1733	FolderPath interface{} `json:"folderPath,omitempty"`
1734
1735	// The format of the Azure Data Lake Storage Gen2 storage.
1736	Format DatasetStorageFormatClassification `json:"format,omitempty"`
1737}
1738
1739// MarshalJSON implements the json.Marshaller interface for type AzureBlobFSDatasetTypeProperties.
1740func (a AzureBlobFSDatasetTypeProperties) MarshalJSON() ([]byte, error) {
1741	objectMap := make(map[string]interface{})
1742	populate(objectMap, "compression", a.Compression)
1743	populate(objectMap, "fileName", a.FileName)
1744	populate(objectMap, "folderPath", a.FolderPath)
1745	populate(objectMap, "format", a.Format)
1746	return json.Marshal(objectMap)
1747}
1748
1749// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobFSDatasetTypeProperties.
1750func (a *AzureBlobFSDatasetTypeProperties) UnmarshalJSON(data []byte) error {
1751	var rawMsg map[string]json.RawMessage
1752	if err := json.Unmarshal(data, &rawMsg); err != nil {
1753		return err
1754	}
1755	for key, val := range rawMsg {
1756		var err error
1757		switch key {
1758		case "compression":
1759			a.Compression, err = unmarshalDatasetCompressionClassification(val)
1760			delete(rawMsg, key)
1761		case "fileName":
1762			err = unpopulate(val, &a.FileName)
1763			delete(rawMsg, key)
1764		case "folderPath":
1765			err = unpopulate(val, &a.FolderPath)
1766			delete(rawMsg, key)
1767		case "format":
1768			a.Format, err = unmarshalDatasetStorageFormatClassification(val)
1769			delete(rawMsg, key)
1770		}
1771		if err != nil {
1772			return err
1773		}
1774	}
1775	return nil
1776}
1777
1778// AzureBlobFSLinkedService - Azure Data Lake Storage Gen2 linked service.
1779type AzureBlobFSLinkedService struct {
1780	LinkedService
1781	// REQUIRED; Azure Data Lake Storage Gen2 linked service properties.
1782	TypeProperties *AzureBlobFSLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
1783}
1784
1785// MarshalJSON implements the json.Marshaller interface for type AzureBlobFSLinkedService.
1786func (a AzureBlobFSLinkedService) MarshalJSON() ([]byte, error) {
1787	objectMap := a.LinkedService.marshalInternal("AzureBlobFS")
1788	populate(objectMap, "typeProperties", a.TypeProperties)
1789	return json.Marshal(objectMap)
1790}
1791
1792// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobFSLinkedService.
1793func (a *AzureBlobFSLinkedService) UnmarshalJSON(data []byte) error {
1794	var rawMsg map[string]json.RawMessage
1795	if err := json.Unmarshal(data, &rawMsg); err != nil {
1796		return err
1797	}
1798	for key, val := range rawMsg {
1799		var err error
1800		switch key {
1801		case "typeProperties":
1802			err = unpopulate(val, &a.TypeProperties)
1803			delete(rawMsg, key)
1804		}
1805		if err != nil {
1806			return err
1807		}
1808	}
1809	return a.LinkedService.unmarshalInternal(rawMsg)
1810}
1811
1812// AzureBlobFSLinkedServiceTypeProperties - Azure Data Lake Storage Gen2 linked service properties.
1813type AzureBlobFSLinkedServiceTypeProperties struct {
1814	// REQUIRED; Endpoint for the Azure Data Lake Storage Gen2 service. Type: string (or Expression with resultType string).
1815	URL interface{} `json:"url,omitempty"`
1816
1817	// Account key for the Azure Data Lake Storage Gen2 service. Type: string (or Expression with resultType string).
1818	AccountKey interface{} `json:"accountKey,omitempty"`
1819
1820	// Indicates the azure cloud type of the service principle auth. Allowed values are AzurePublic, AzureChina, AzureUsGovernment, AzureGermany. Default value
1821	// is the data factory regions’ cloud type. Type:
1822	// string (or Expression with resultType string).
1823	AzureCloudType interface{} `json:"azureCloudType,omitempty"`
1824
1825	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
1826	// with resultType string).
1827	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
1828
1829	// The ID of the application used to authenticate against the Azure Data Lake Storage Gen2 account. Type: string (or Expression with resultType string).
1830	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
1831
1832	// The Key of the application used to authenticate against the Azure Data Lake Storage Gen2 account.
1833	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
1834
1835	// The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
1836	Tenant interface{} `json:"tenant,omitempty"`
1837}
1838
1839// MarshalJSON implements the json.Marshaller interface for type AzureBlobFSLinkedServiceTypeProperties.
1840func (a AzureBlobFSLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
1841	objectMap := make(map[string]interface{})
1842	populate(objectMap, "accountKey", a.AccountKey)
1843	populate(objectMap, "azureCloudType", a.AzureCloudType)
1844	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
1845	populate(objectMap, "servicePrincipalId", a.ServicePrincipalID)
1846	populate(objectMap, "servicePrincipalKey", a.ServicePrincipalKey)
1847	populate(objectMap, "tenant", a.Tenant)
1848	populate(objectMap, "url", a.URL)
1849	return json.Marshal(objectMap)
1850}
1851
1852// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobFSLinkedServiceTypeProperties.
1853func (a *AzureBlobFSLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
1854	var rawMsg map[string]json.RawMessage
1855	if err := json.Unmarshal(data, &rawMsg); err != nil {
1856		return err
1857	}
1858	for key, val := range rawMsg {
1859		var err error
1860		switch key {
1861		case "accountKey":
1862			err = unpopulate(val, &a.AccountKey)
1863			delete(rawMsg, key)
1864		case "azureCloudType":
1865			err = unpopulate(val, &a.AzureCloudType)
1866			delete(rawMsg, key)
1867		case "encryptedCredential":
1868			err = unpopulate(val, &a.EncryptedCredential)
1869			delete(rawMsg, key)
1870		case "servicePrincipalId":
1871			err = unpopulate(val, &a.ServicePrincipalID)
1872			delete(rawMsg, key)
1873		case "servicePrincipalKey":
1874			a.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
1875			delete(rawMsg, key)
1876		case "tenant":
1877			err = unpopulate(val, &a.Tenant)
1878			delete(rawMsg, key)
1879		case "url":
1880			err = unpopulate(val, &a.URL)
1881			delete(rawMsg, key)
1882		}
1883		if err != nil {
1884			return err
1885		}
1886	}
1887	return nil
1888}
1889
1890// AzureBlobFSLocation - The location of azure blobFS dataset.
1891type AzureBlobFSLocation struct {
1892	DatasetLocation
1893	// Specify the fileSystem of azure blobFS. Type: string (or Expression with resultType string).
1894	FileSystem interface{} `json:"fileSystem,omitempty"`
1895}
1896
1897// MarshalJSON implements the json.Marshaller interface for type AzureBlobFSLocation.
1898func (a AzureBlobFSLocation) MarshalJSON() ([]byte, error) {
1899	objectMap := a.DatasetLocation.marshalInternal("AzureBlobFSLocation")
1900	populate(objectMap, "fileSystem", a.FileSystem)
1901	return json.Marshal(objectMap)
1902}
1903
1904// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobFSLocation.
1905func (a *AzureBlobFSLocation) UnmarshalJSON(data []byte) error {
1906	var rawMsg map[string]json.RawMessage
1907	if err := json.Unmarshal(data, &rawMsg); err != nil {
1908		return err
1909	}
1910	for key, val := range rawMsg {
1911		var err error
1912		switch key {
1913		case "fileSystem":
1914			err = unpopulate(val, &a.FileSystem)
1915			delete(rawMsg, key)
1916		}
1917		if err != nil {
1918			return err
1919		}
1920	}
1921	return a.DatasetLocation.unmarshalInternal(rawMsg)
1922}
1923
1924// AzureBlobFSReadSettings - Azure blobFS read settings.
1925type AzureBlobFSReadSettings struct {
1926	StoreReadSettings
1927	// Indicates whether the source files need to be deleted after copy completion. Default is false. Type: boolean (or Expression with resultType boolean).
1928	DeleteFilesAfterCompletion interface{} `json:"deleteFilesAfterCompletion,omitempty"`
1929
1930	// Indicates whether to enable partition discovery.
1931	EnablePartitionDiscovery *bool `json:"enablePartitionDiscovery,omitempty"`
1932
1933	// Point to a text file that lists each file (relative path to the path configured in the dataset) that you want to copy. Type: string (or Expression with
1934	// resultType string).
1935	FileListPath interface{} `json:"fileListPath,omitempty"`
1936
1937	// The end of file's modified datetime. Type: string (or Expression with resultType string).
1938	ModifiedDatetimeEnd interface{} `json:"modifiedDatetimeEnd,omitempty"`
1939
1940	// The start of file's modified datetime. Type: string (or Expression with resultType string).
1941	ModifiedDatetimeStart interface{} `json:"modifiedDatetimeStart,omitempty"`
1942
1943	// Specify the root path where partition discovery starts from. Type: string (or Expression with resultType string).
1944	PartitionRootPath interface{} `json:"partitionRootPath,omitempty"`
1945
1946	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
1947	Recursive interface{} `json:"recursive,omitempty"`
1948
1949	// Azure blobFS wildcardFileName. Type: string (or Expression with resultType string).
1950	WildcardFileName interface{} `json:"wildcardFileName,omitempty"`
1951
1952	// Azure blobFS wildcardFolderPath. Type: string (or Expression with resultType string).
1953	WildcardFolderPath interface{} `json:"wildcardFolderPath,omitempty"`
1954}
1955
1956// MarshalJSON implements the json.Marshaller interface for type AzureBlobFSReadSettings.
1957func (a AzureBlobFSReadSettings) MarshalJSON() ([]byte, error) {
1958	objectMap := a.StoreReadSettings.marshalInternal("AzureBlobFSReadSettings")
1959	populate(objectMap, "deleteFilesAfterCompletion", a.DeleteFilesAfterCompletion)
1960	populate(objectMap, "enablePartitionDiscovery", a.EnablePartitionDiscovery)
1961	populate(objectMap, "fileListPath", a.FileListPath)
1962	populate(objectMap, "modifiedDatetimeEnd", a.ModifiedDatetimeEnd)
1963	populate(objectMap, "modifiedDatetimeStart", a.ModifiedDatetimeStart)
1964	populate(objectMap, "partitionRootPath", a.PartitionRootPath)
1965	populate(objectMap, "recursive", a.Recursive)
1966	populate(objectMap, "wildcardFileName", a.WildcardFileName)
1967	populate(objectMap, "wildcardFolderPath", a.WildcardFolderPath)
1968	return json.Marshal(objectMap)
1969}
1970
1971// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobFSReadSettings.
1972func (a *AzureBlobFSReadSettings) UnmarshalJSON(data []byte) error {
1973	var rawMsg map[string]json.RawMessage
1974	if err := json.Unmarshal(data, &rawMsg); err != nil {
1975		return err
1976	}
1977	for key, val := range rawMsg {
1978		var err error
1979		switch key {
1980		case "deleteFilesAfterCompletion":
1981			err = unpopulate(val, &a.DeleteFilesAfterCompletion)
1982			delete(rawMsg, key)
1983		case "enablePartitionDiscovery":
1984			err = unpopulate(val, &a.EnablePartitionDiscovery)
1985			delete(rawMsg, key)
1986		case "fileListPath":
1987			err = unpopulate(val, &a.FileListPath)
1988			delete(rawMsg, key)
1989		case "modifiedDatetimeEnd":
1990			err = unpopulate(val, &a.ModifiedDatetimeEnd)
1991			delete(rawMsg, key)
1992		case "modifiedDatetimeStart":
1993			err = unpopulate(val, &a.ModifiedDatetimeStart)
1994			delete(rawMsg, key)
1995		case "partitionRootPath":
1996			err = unpopulate(val, &a.PartitionRootPath)
1997			delete(rawMsg, key)
1998		case "recursive":
1999			err = unpopulate(val, &a.Recursive)
2000			delete(rawMsg, key)
2001		case "wildcardFileName":
2002			err = unpopulate(val, &a.WildcardFileName)
2003			delete(rawMsg, key)
2004		case "wildcardFolderPath":
2005			err = unpopulate(val, &a.WildcardFolderPath)
2006			delete(rawMsg, key)
2007		}
2008		if err != nil {
2009			return err
2010		}
2011	}
2012	return a.StoreReadSettings.unmarshalInternal(rawMsg)
2013}
2014
2015// AzureBlobFSSink - A copy activity Azure Data Lake Storage Gen2 sink.
2016type AzureBlobFSSink struct {
2017	CopySink
2018	// The type of copy behavior for copy sink.
2019	CopyBehavior interface{} `json:"copyBehavior,omitempty"`
2020}
2021
2022// MarshalJSON implements the json.Marshaller interface for type AzureBlobFSSink.
2023func (a AzureBlobFSSink) MarshalJSON() ([]byte, error) {
2024	objectMap := a.CopySink.marshalInternal("AzureBlobFSSink")
2025	populate(objectMap, "copyBehavior", a.CopyBehavior)
2026	return json.Marshal(objectMap)
2027}
2028
2029// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobFSSink.
2030func (a *AzureBlobFSSink) UnmarshalJSON(data []byte) error {
2031	var rawMsg map[string]json.RawMessage
2032	if err := json.Unmarshal(data, &rawMsg); err != nil {
2033		return err
2034	}
2035	for key, val := range rawMsg {
2036		var err error
2037		switch key {
2038		case "copyBehavior":
2039			err = unpopulate(val, &a.CopyBehavior)
2040			delete(rawMsg, key)
2041		}
2042		if err != nil {
2043			return err
2044		}
2045	}
2046	return a.CopySink.unmarshalInternal(rawMsg)
2047}
2048
2049// AzureBlobFSSource - A copy activity Azure BlobFS source.
2050type AzureBlobFSSource struct {
2051	CopySource
2052	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
2053	Recursive interface{} `json:"recursive,omitempty"`
2054
2055	// Number of header lines to skip from each blob. Type: integer (or Expression with resultType integer).
2056	SkipHeaderLineCount interface{} `json:"skipHeaderLineCount,omitempty"`
2057
2058	// Treat empty as null. Type: boolean (or Expression with resultType boolean).
2059	TreatEmptyAsNull interface{} `json:"treatEmptyAsNull,omitempty"`
2060}
2061
2062// MarshalJSON implements the json.Marshaller interface for type AzureBlobFSSource.
2063func (a AzureBlobFSSource) MarshalJSON() ([]byte, error) {
2064	objectMap := a.CopySource.marshalInternal("AzureBlobFSSource")
2065	populate(objectMap, "recursive", a.Recursive)
2066	populate(objectMap, "skipHeaderLineCount", a.SkipHeaderLineCount)
2067	populate(objectMap, "treatEmptyAsNull", a.TreatEmptyAsNull)
2068	return json.Marshal(objectMap)
2069}
2070
2071// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobFSSource.
2072func (a *AzureBlobFSSource) UnmarshalJSON(data []byte) error {
2073	var rawMsg map[string]json.RawMessage
2074	if err := json.Unmarshal(data, &rawMsg); err != nil {
2075		return err
2076	}
2077	for key, val := range rawMsg {
2078		var err error
2079		switch key {
2080		case "recursive":
2081			err = unpopulate(val, &a.Recursive)
2082			delete(rawMsg, key)
2083		case "skipHeaderLineCount":
2084			err = unpopulate(val, &a.SkipHeaderLineCount)
2085			delete(rawMsg, key)
2086		case "treatEmptyAsNull":
2087			err = unpopulate(val, &a.TreatEmptyAsNull)
2088			delete(rawMsg, key)
2089		}
2090		if err != nil {
2091			return err
2092		}
2093	}
2094	return a.CopySource.unmarshalInternal(rawMsg)
2095}
2096
2097// AzureBlobFSWriteSettings - Azure blobFS write settings.
2098type AzureBlobFSWriteSettings struct {
2099	StoreWriteSettings
2100	// Indicates the block size(MB) when writing data to blob. Type: integer (or Expression with resultType integer).
2101	BlockSizeInMB interface{} `json:"blockSizeInMB,omitempty"`
2102}
2103
2104// MarshalJSON implements the json.Marshaller interface for type AzureBlobFSWriteSettings.
2105func (a AzureBlobFSWriteSettings) MarshalJSON() ([]byte, error) {
2106	objectMap := a.StoreWriteSettings.marshalInternal("AzureBlobFSWriteSettings")
2107	populate(objectMap, "blockSizeInMB", a.BlockSizeInMB)
2108	return json.Marshal(objectMap)
2109}
2110
2111// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobFSWriteSettings.
2112func (a *AzureBlobFSWriteSettings) UnmarshalJSON(data []byte) error {
2113	var rawMsg map[string]json.RawMessage
2114	if err := json.Unmarshal(data, &rawMsg); err != nil {
2115		return err
2116	}
2117	for key, val := range rawMsg {
2118		var err error
2119		switch key {
2120		case "blockSizeInMB":
2121			err = unpopulate(val, &a.BlockSizeInMB)
2122			delete(rawMsg, key)
2123		}
2124		if err != nil {
2125			return err
2126		}
2127	}
2128	return a.StoreWriteSettings.unmarshalInternal(rawMsg)
2129}
2130
2131// AzureBlobStorageLinkedService - The azure blob storage linked service.
2132type AzureBlobStorageLinkedService struct {
2133	LinkedService
2134	// REQUIRED; Azure Blob Storage linked service properties.
2135	TypeProperties *AzureBlobStorageLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
2136}
2137
2138// MarshalJSON implements the json.Marshaller interface for type AzureBlobStorageLinkedService.
2139func (a AzureBlobStorageLinkedService) MarshalJSON() ([]byte, error) {
2140	objectMap := a.LinkedService.marshalInternal("AzureBlobStorage")
2141	populate(objectMap, "typeProperties", a.TypeProperties)
2142	return json.Marshal(objectMap)
2143}
2144
2145// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobStorageLinkedService.
2146func (a *AzureBlobStorageLinkedService) UnmarshalJSON(data []byte) error {
2147	var rawMsg map[string]json.RawMessage
2148	if err := json.Unmarshal(data, &rawMsg); err != nil {
2149		return err
2150	}
2151	for key, val := range rawMsg {
2152		var err error
2153		switch key {
2154		case "typeProperties":
2155			err = unpopulate(val, &a.TypeProperties)
2156			delete(rawMsg, key)
2157		}
2158		if err != nil {
2159			return err
2160		}
2161	}
2162	return a.LinkedService.unmarshalInternal(rawMsg)
2163}
2164
2165// AzureBlobStorageLinkedServiceTypeProperties - Azure Blob Storage linked service properties.
2166type AzureBlobStorageLinkedServiceTypeProperties struct {
2167	// The Azure key vault secret reference of accountKey in connection string.
2168	AccountKey *AzureKeyVaultSecretReference `json:"accountKey,omitempty"`
2169
2170	// Indicates the azure cloud type of the service principle auth. Allowed values are AzurePublic, AzureChina, AzureUsGovernment, AzureGermany. Default value
2171	// is the data factory regions’ cloud type. Type:
2172	// string (or Expression with resultType string).
2173	AzureCloudType interface{} `json:"azureCloudType,omitempty"`
2174
2175	// The connection string. It is mutually exclusive with sasUri, serviceEndpoint property. Type: string, SecureString or AzureKeyVaultSecretReference.
2176	ConnectionString interface{} `json:"connectionString,omitempty"`
2177
2178	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
2179	// with resultType string).
2180	EncryptedCredential *string `json:"encryptedCredential,omitempty"`
2181
2182	// The Azure key vault secret reference of sasToken in sas uri.
2183	SasToken *AzureKeyVaultSecretReference `json:"sasToken,omitempty"`
2184
2185	// SAS URI of the Azure Blob Storage resource. It is mutually exclusive with connectionString, serviceEndpoint property. Type: string, SecureString or AzureKeyVaultSecretReference.
2186	SasURI interface{} `json:"sasUri,omitempty"`
2187
2188	// Blob service endpoint of the Azure Blob Storage resource. It is mutually exclusive with connectionString, sasUri property.
2189	ServiceEndpoint *string `json:"serviceEndpoint,omitempty"`
2190
2191	// The ID of the service principal used to authenticate against Azure SQL Data Warehouse. Type: string (or Expression with resultType string).
2192	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
2193
2194	// The key of the service principal used to authenticate against Azure SQL Data Warehouse.
2195	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
2196
2197	// The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
2198	Tenant interface{} `json:"tenant,omitempty"`
2199}
2200
2201// MarshalJSON implements the json.Marshaller interface for type AzureBlobStorageLinkedServiceTypeProperties.
2202func (a AzureBlobStorageLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
2203	objectMap := make(map[string]interface{})
2204	populate(objectMap, "accountKey", a.AccountKey)
2205	populate(objectMap, "azureCloudType", a.AzureCloudType)
2206	populate(objectMap, "connectionString", a.ConnectionString)
2207	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
2208	populate(objectMap, "sasToken", a.SasToken)
2209	populate(objectMap, "sasUri", a.SasURI)
2210	populate(objectMap, "serviceEndpoint", a.ServiceEndpoint)
2211	populate(objectMap, "servicePrincipalId", a.ServicePrincipalID)
2212	populate(objectMap, "servicePrincipalKey", a.ServicePrincipalKey)
2213	populate(objectMap, "tenant", a.Tenant)
2214	return json.Marshal(objectMap)
2215}
2216
2217// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobStorageLinkedServiceTypeProperties.
2218func (a *AzureBlobStorageLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
2219	var rawMsg map[string]json.RawMessage
2220	if err := json.Unmarshal(data, &rawMsg); err != nil {
2221		return err
2222	}
2223	for key, val := range rawMsg {
2224		var err error
2225		switch key {
2226		case "accountKey":
2227			err = unpopulate(val, &a.AccountKey)
2228			delete(rawMsg, key)
2229		case "azureCloudType":
2230			err = unpopulate(val, &a.AzureCloudType)
2231			delete(rawMsg, key)
2232		case "connectionString":
2233			err = unpopulate(val, &a.ConnectionString)
2234			delete(rawMsg, key)
2235		case "encryptedCredential":
2236			err = unpopulate(val, &a.EncryptedCredential)
2237			delete(rawMsg, key)
2238		case "sasToken":
2239			err = unpopulate(val, &a.SasToken)
2240			delete(rawMsg, key)
2241		case "sasUri":
2242			err = unpopulate(val, &a.SasURI)
2243			delete(rawMsg, key)
2244		case "serviceEndpoint":
2245			err = unpopulate(val, &a.ServiceEndpoint)
2246			delete(rawMsg, key)
2247		case "servicePrincipalId":
2248			err = unpopulate(val, &a.ServicePrincipalID)
2249			delete(rawMsg, key)
2250		case "servicePrincipalKey":
2251			a.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
2252			delete(rawMsg, key)
2253		case "tenant":
2254			err = unpopulate(val, &a.Tenant)
2255			delete(rawMsg, key)
2256		}
2257		if err != nil {
2258			return err
2259		}
2260	}
2261	return nil
2262}
2263
2264// AzureBlobStorageLocation - The location of azure blob dataset.
2265type AzureBlobStorageLocation struct {
2266	DatasetLocation
2267	// Specify the container of azure blob. Type: string (or Expression with resultType string).
2268	Container interface{} `json:"container,omitempty"`
2269}
2270
2271// MarshalJSON implements the json.Marshaller interface for type AzureBlobStorageLocation.
2272func (a AzureBlobStorageLocation) MarshalJSON() ([]byte, error) {
2273	objectMap := a.DatasetLocation.marshalInternal("AzureBlobStorageLocation")
2274	populate(objectMap, "container", a.Container)
2275	return json.Marshal(objectMap)
2276}
2277
2278// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobStorageLocation.
2279func (a *AzureBlobStorageLocation) UnmarshalJSON(data []byte) error {
2280	var rawMsg map[string]json.RawMessage
2281	if err := json.Unmarshal(data, &rawMsg); err != nil {
2282		return err
2283	}
2284	for key, val := range rawMsg {
2285		var err error
2286		switch key {
2287		case "container":
2288			err = unpopulate(val, &a.Container)
2289			delete(rawMsg, key)
2290		}
2291		if err != nil {
2292			return err
2293		}
2294	}
2295	return a.DatasetLocation.unmarshalInternal(rawMsg)
2296}
2297
2298// AzureBlobStorageReadSettings - Azure blob read settings.
2299type AzureBlobStorageReadSettings struct {
2300	StoreReadSettings
2301	// Indicates whether the source files need to be deleted after copy completion. Default is false. Type: boolean (or Expression with resultType boolean).
2302	DeleteFilesAfterCompletion interface{} `json:"deleteFilesAfterCompletion,omitempty"`
2303
2304	// Indicates whether to enable partition discovery.
2305	EnablePartitionDiscovery *bool `json:"enablePartitionDiscovery,omitempty"`
2306
2307	// Point to a text file that lists each file (relative path to the path configured in the dataset) that you want to copy. Type: string (or Expression with
2308	// resultType string).
2309	FileListPath interface{} `json:"fileListPath,omitempty"`
2310
2311	// The end of file's modified datetime. Type: string (or Expression with resultType string).
2312	ModifiedDatetimeEnd interface{} `json:"modifiedDatetimeEnd,omitempty"`
2313
2314	// The start of file's modified datetime. Type: string (or Expression with resultType string).
2315	ModifiedDatetimeStart interface{} `json:"modifiedDatetimeStart,omitempty"`
2316
2317	// Specify the root path where partition discovery starts from. Type: string (or Expression with resultType string).
2318	PartitionRootPath interface{} `json:"partitionRootPath,omitempty"`
2319
2320	// The prefix filter for the Azure Blob name. Type: string (or Expression with resultType string).
2321	Prefix interface{} `json:"prefix,omitempty"`
2322
2323	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
2324	Recursive interface{} `json:"recursive,omitempty"`
2325
2326	// Azure blob wildcardFileName. Type: string (or Expression with resultType string).
2327	WildcardFileName interface{} `json:"wildcardFileName,omitempty"`
2328
2329	// Azure blob wildcardFolderPath. Type: string (or Expression with resultType string).
2330	WildcardFolderPath interface{} `json:"wildcardFolderPath,omitempty"`
2331}
2332
2333// MarshalJSON implements the json.Marshaller interface for type AzureBlobStorageReadSettings.
2334func (a AzureBlobStorageReadSettings) MarshalJSON() ([]byte, error) {
2335	objectMap := a.StoreReadSettings.marshalInternal("AzureBlobStorageReadSettings")
2336	populate(objectMap, "deleteFilesAfterCompletion", a.DeleteFilesAfterCompletion)
2337	populate(objectMap, "enablePartitionDiscovery", a.EnablePartitionDiscovery)
2338	populate(objectMap, "fileListPath", a.FileListPath)
2339	populate(objectMap, "modifiedDatetimeEnd", a.ModifiedDatetimeEnd)
2340	populate(objectMap, "modifiedDatetimeStart", a.ModifiedDatetimeStart)
2341	populate(objectMap, "partitionRootPath", a.PartitionRootPath)
2342	populate(objectMap, "prefix", a.Prefix)
2343	populate(objectMap, "recursive", a.Recursive)
2344	populate(objectMap, "wildcardFileName", a.WildcardFileName)
2345	populate(objectMap, "wildcardFolderPath", a.WildcardFolderPath)
2346	return json.Marshal(objectMap)
2347}
2348
2349// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobStorageReadSettings.
2350func (a *AzureBlobStorageReadSettings) UnmarshalJSON(data []byte) error {
2351	var rawMsg map[string]json.RawMessage
2352	if err := json.Unmarshal(data, &rawMsg); err != nil {
2353		return err
2354	}
2355	for key, val := range rawMsg {
2356		var err error
2357		switch key {
2358		case "deleteFilesAfterCompletion":
2359			err = unpopulate(val, &a.DeleteFilesAfterCompletion)
2360			delete(rawMsg, key)
2361		case "enablePartitionDiscovery":
2362			err = unpopulate(val, &a.EnablePartitionDiscovery)
2363			delete(rawMsg, key)
2364		case "fileListPath":
2365			err = unpopulate(val, &a.FileListPath)
2366			delete(rawMsg, key)
2367		case "modifiedDatetimeEnd":
2368			err = unpopulate(val, &a.ModifiedDatetimeEnd)
2369			delete(rawMsg, key)
2370		case "modifiedDatetimeStart":
2371			err = unpopulate(val, &a.ModifiedDatetimeStart)
2372			delete(rawMsg, key)
2373		case "partitionRootPath":
2374			err = unpopulate(val, &a.PartitionRootPath)
2375			delete(rawMsg, key)
2376		case "prefix":
2377			err = unpopulate(val, &a.Prefix)
2378			delete(rawMsg, key)
2379		case "recursive":
2380			err = unpopulate(val, &a.Recursive)
2381			delete(rawMsg, key)
2382		case "wildcardFileName":
2383			err = unpopulate(val, &a.WildcardFileName)
2384			delete(rawMsg, key)
2385		case "wildcardFolderPath":
2386			err = unpopulate(val, &a.WildcardFolderPath)
2387			delete(rawMsg, key)
2388		}
2389		if err != nil {
2390			return err
2391		}
2392	}
2393	return a.StoreReadSettings.unmarshalInternal(rawMsg)
2394}
2395
2396// AzureBlobStorageWriteSettings - Azure blob write settings.
2397type AzureBlobStorageWriteSettings struct {
2398	StoreWriteSettings
2399	// Indicates the block size(MB) when writing data to blob. Type: integer (or Expression with resultType integer).
2400	BlockSizeInMB interface{} `json:"blockSizeInMB,omitempty"`
2401}
2402
2403// MarshalJSON implements the json.Marshaller interface for type AzureBlobStorageWriteSettings.
2404func (a AzureBlobStorageWriteSettings) MarshalJSON() ([]byte, error) {
2405	objectMap := a.StoreWriteSettings.marshalInternal("AzureBlobStorageWriteSettings")
2406	populate(objectMap, "blockSizeInMB", a.BlockSizeInMB)
2407	return json.Marshal(objectMap)
2408}
2409
2410// UnmarshalJSON implements the json.Unmarshaller interface for type AzureBlobStorageWriteSettings.
2411func (a *AzureBlobStorageWriteSettings) UnmarshalJSON(data []byte) error {
2412	var rawMsg map[string]json.RawMessage
2413	if err := json.Unmarshal(data, &rawMsg); err != nil {
2414		return err
2415	}
2416	for key, val := range rawMsg {
2417		var err error
2418		switch key {
2419		case "blockSizeInMB":
2420			err = unpopulate(val, &a.BlockSizeInMB)
2421			delete(rawMsg, key)
2422		}
2423		if err != nil {
2424			return err
2425		}
2426	}
2427	return a.StoreWriteSettings.unmarshalInternal(rawMsg)
2428}
2429
2430// AzureDataExplorerCommandActivity - Azure Data Explorer command activity.
2431type AzureDataExplorerCommandActivity struct {
2432	ExecutionActivity
2433	// REQUIRED; Azure Data Explorer command activity properties.
2434	TypeProperties *AzureDataExplorerCommandActivityTypeProperties `json:"typeProperties,omitempty"`
2435}
2436
2437// MarshalJSON implements the json.Marshaller interface for type AzureDataExplorerCommandActivity.
2438func (a AzureDataExplorerCommandActivity) MarshalJSON() ([]byte, error) {
2439	objectMap := a.ExecutionActivity.marshalInternal("AzureDataExplorerCommand")
2440	populate(objectMap, "typeProperties", a.TypeProperties)
2441	return json.Marshal(objectMap)
2442}
2443
2444// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataExplorerCommandActivity.
2445func (a *AzureDataExplorerCommandActivity) UnmarshalJSON(data []byte) error {
2446	var rawMsg map[string]json.RawMessage
2447	if err := json.Unmarshal(data, &rawMsg); err != nil {
2448		return err
2449	}
2450	for key, val := range rawMsg {
2451		var err error
2452		switch key {
2453		case "typeProperties":
2454			err = unpopulate(val, &a.TypeProperties)
2455			delete(rawMsg, key)
2456		}
2457		if err != nil {
2458			return err
2459		}
2460	}
2461	return a.ExecutionActivity.unmarshalInternal(rawMsg)
2462}
2463
2464// AzureDataExplorerCommandActivityTypeProperties - Azure Data Explorer command activity properties.
2465type AzureDataExplorerCommandActivityTypeProperties struct {
2466	// REQUIRED; A control command, according to the Azure Data Explorer command syntax. Type: string (or Expression with resultType string).
2467	Command interface{} `json:"command,omitempty"`
2468
2469	// Control command timeout. Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9]))..)
2470	CommandTimeout interface{} `json:"commandTimeout,omitempty"`
2471}
2472
2473// AzureDataExplorerDatasetTypeProperties - Azure Data Explorer (Kusto) dataset properties.
2474type AzureDataExplorerDatasetTypeProperties struct {
2475	// The table name of the Azure Data Explorer database. Type: string (or Expression with resultType string).
2476	Table interface{} `json:"table,omitempty"`
2477}
2478
2479// AzureDataExplorerLinkedService - Azure Data Explorer (Kusto) linked service.
2480type AzureDataExplorerLinkedService struct {
2481	LinkedService
2482	// REQUIRED; Azure Data Explorer (Kusto) linked service properties.
2483	TypeProperties *AzureDataExplorerLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
2484}
2485
2486// MarshalJSON implements the json.Marshaller interface for type AzureDataExplorerLinkedService.
2487func (a AzureDataExplorerLinkedService) MarshalJSON() ([]byte, error) {
2488	objectMap := a.LinkedService.marshalInternal("AzureDataExplorer")
2489	populate(objectMap, "typeProperties", a.TypeProperties)
2490	return json.Marshal(objectMap)
2491}
2492
2493// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataExplorerLinkedService.
2494func (a *AzureDataExplorerLinkedService) UnmarshalJSON(data []byte) error {
2495	var rawMsg map[string]json.RawMessage
2496	if err := json.Unmarshal(data, &rawMsg); err != nil {
2497		return err
2498	}
2499	for key, val := range rawMsg {
2500		var err error
2501		switch key {
2502		case "typeProperties":
2503			err = unpopulate(val, &a.TypeProperties)
2504			delete(rawMsg, key)
2505		}
2506		if err != nil {
2507			return err
2508		}
2509	}
2510	return a.LinkedService.unmarshalInternal(rawMsg)
2511}
2512
2513// AzureDataExplorerLinkedServiceTypeProperties - Azure Data Explorer (Kusto) linked service properties.
2514type AzureDataExplorerLinkedServiceTypeProperties struct {
2515	// REQUIRED; Database name for connection. Type: string (or Expression with resultType string).
2516	Database interface{} `json:"database,omitempty"`
2517
2518	// REQUIRED; The endpoint of Azure Data Explorer (the engine's endpoint). URL will be in the format https://..kusto.windows.net. Type: string (or Expression
2519	// with resultType string)
2520	Endpoint interface{} `json:"endpoint,omitempty"`
2521
2522	// REQUIRED; The ID of the service principal used to authenticate against Azure Data Explorer. Type: string (or Expression with resultType string).
2523	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
2524
2525	// REQUIRED; The key of the service principal used to authenticate against Kusto.
2526	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
2527
2528	// REQUIRED; The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
2529	Tenant interface{} `json:"tenant,omitempty"`
2530}
2531
2532// MarshalJSON implements the json.Marshaller interface for type AzureDataExplorerLinkedServiceTypeProperties.
2533func (a AzureDataExplorerLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
2534	objectMap := make(map[string]interface{})
2535	populate(objectMap, "database", a.Database)
2536	populate(objectMap, "endpoint", a.Endpoint)
2537	populate(objectMap, "servicePrincipalId", a.ServicePrincipalID)
2538	populate(objectMap, "servicePrincipalKey", a.ServicePrincipalKey)
2539	populate(objectMap, "tenant", a.Tenant)
2540	return json.Marshal(objectMap)
2541}
2542
2543// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataExplorerLinkedServiceTypeProperties.
2544func (a *AzureDataExplorerLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
2545	var rawMsg map[string]json.RawMessage
2546	if err := json.Unmarshal(data, &rawMsg); err != nil {
2547		return err
2548	}
2549	for key, val := range rawMsg {
2550		var err error
2551		switch key {
2552		case "database":
2553			err = unpopulate(val, &a.Database)
2554			delete(rawMsg, key)
2555		case "endpoint":
2556			err = unpopulate(val, &a.Endpoint)
2557			delete(rawMsg, key)
2558		case "servicePrincipalId":
2559			err = unpopulate(val, &a.ServicePrincipalID)
2560			delete(rawMsg, key)
2561		case "servicePrincipalKey":
2562			a.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
2563			delete(rawMsg, key)
2564		case "tenant":
2565			err = unpopulate(val, &a.Tenant)
2566			delete(rawMsg, key)
2567		}
2568		if err != nil {
2569			return err
2570		}
2571	}
2572	return nil
2573}
2574
2575// AzureDataExplorerSink - A copy activity Azure Data Explorer sink.
2576type AzureDataExplorerSink struct {
2577	CopySink
2578	// If set to true, any aggregation will be skipped. Default is false. Type: boolean.
2579	FlushImmediately interface{} `json:"flushImmediately,omitempty"`
2580
2581	// An explicit column mapping description provided in a json format. Type: string.
2582	IngestionMappingAsJSON interface{} `json:"ingestionMappingAsJson,omitempty"`
2583
2584	// A name of a pre-created csv mapping that was defined on the target Kusto table. Type: string.
2585	IngestionMappingName interface{} `json:"ingestionMappingName,omitempty"`
2586}
2587
2588// MarshalJSON implements the json.Marshaller interface for type AzureDataExplorerSink.
2589func (a AzureDataExplorerSink) MarshalJSON() ([]byte, error) {
2590	objectMap := a.CopySink.marshalInternal("AzureDataExplorerSink")
2591	populate(objectMap, "flushImmediately", a.FlushImmediately)
2592	populate(objectMap, "ingestionMappingAsJson", a.IngestionMappingAsJSON)
2593	populate(objectMap, "ingestionMappingName", a.IngestionMappingName)
2594	return json.Marshal(objectMap)
2595}
2596
2597// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataExplorerSink.
2598func (a *AzureDataExplorerSink) UnmarshalJSON(data []byte) error {
2599	var rawMsg map[string]json.RawMessage
2600	if err := json.Unmarshal(data, &rawMsg); err != nil {
2601		return err
2602	}
2603	for key, val := range rawMsg {
2604		var err error
2605		switch key {
2606		case "flushImmediately":
2607			err = unpopulate(val, &a.FlushImmediately)
2608			delete(rawMsg, key)
2609		case "ingestionMappingAsJson":
2610			err = unpopulate(val, &a.IngestionMappingAsJSON)
2611			delete(rawMsg, key)
2612		case "ingestionMappingName":
2613			err = unpopulate(val, &a.IngestionMappingName)
2614			delete(rawMsg, key)
2615		}
2616		if err != nil {
2617			return err
2618		}
2619	}
2620	return a.CopySink.unmarshalInternal(rawMsg)
2621}
2622
2623// AzureDataExplorerSource - A copy activity Azure Data Explorer (Kusto) source.
2624type AzureDataExplorerSource struct {
2625	CopySource
2626	// REQUIRED; Database query. Should be a Kusto Query Language (KQL) query. Type: string (or Expression with resultType string).
2627	Query interface{} `json:"query,omitempty"`
2628
2629	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
2630	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
2631
2632	// The name of the Boolean option that controls whether truncation is applied to result-sets that go beyond a certain row-count limit.
2633	NoTruncation interface{} `json:"noTruncation,omitempty"`
2634
2635	// Query timeout. Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9]))..
2636	QueryTimeout interface{} `json:"queryTimeout,omitempty"`
2637}
2638
2639// MarshalJSON implements the json.Marshaller interface for type AzureDataExplorerSource.
2640func (a AzureDataExplorerSource) MarshalJSON() ([]byte, error) {
2641	objectMap := a.CopySource.marshalInternal("AzureDataExplorerSource")
2642	populate(objectMap, "additionalColumns", a.AdditionalColumns)
2643	populate(objectMap, "noTruncation", a.NoTruncation)
2644	populate(objectMap, "query", a.Query)
2645	populate(objectMap, "queryTimeout", a.QueryTimeout)
2646	return json.Marshal(objectMap)
2647}
2648
2649// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataExplorerSource.
2650func (a *AzureDataExplorerSource) UnmarshalJSON(data []byte) error {
2651	var rawMsg map[string]json.RawMessage
2652	if err := json.Unmarshal(data, &rawMsg); err != nil {
2653		return err
2654	}
2655	for key, val := range rawMsg {
2656		var err error
2657		switch key {
2658		case "additionalColumns":
2659			err = unpopulate(val, &a.AdditionalColumns)
2660			delete(rawMsg, key)
2661		case "noTruncation":
2662			err = unpopulate(val, &a.NoTruncation)
2663			delete(rawMsg, key)
2664		case "query":
2665			err = unpopulate(val, &a.Query)
2666			delete(rawMsg, key)
2667		case "queryTimeout":
2668			err = unpopulate(val, &a.QueryTimeout)
2669			delete(rawMsg, key)
2670		}
2671		if err != nil {
2672			return err
2673		}
2674	}
2675	return a.CopySource.unmarshalInternal(rawMsg)
2676}
2677
2678// AzureDataExplorerTableDataset - The Azure Data Explorer (Kusto) dataset.
2679type AzureDataExplorerTableDataset struct {
2680	Dataset
2681	// REQUIRED; Azure Data Explorer (Kusto) dataset properties.
2682	TypeProperties *AzureDataExplorerDatasetTypeProperties `json:"typeProperties,omitempty"`
2683}
2684
2685// MarshalJSON implements the json.Marshaller interface for type AzureDataExplorerTableDataset.
2686func (a AzureDataExplorerTableDataset) MarshalJSON() ([]byte, error) {
2687	objectMap := a.Dataset.marshalInternal("AzureDataExplorerTable")
2688	populate(objectMap, "typeProperties", a.TypeProperties)
2689	return json.Marshal(objectMap)
2690}
2691
2692// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataExplorerTableDataset.
2693func (a *AzureDataExplorerTableDataset) UnmarshalJSON(data []byte) error {
2694	var rawMsg map[string]json.RawMessage
2695	if err := json.Unmarshal(data, &rawMsg); err != nil {
2696		return err
2697	}
2698	for key, val := range rawMsg {
2699		var err error
2700		switch key {
2701		case "typeProperties":
2702			err = unpopulate(val, &a.TypeProperties)
2703			delete(rawMsg, key)
2704		}
2705		if err != nil {
2706			return err
2707		}
2708	}
2709	return a.Dataset.unmarshalInternal(rawMsg)
2710}
2711
2712// AzureDataLakeAnalyticsLinkedService - Azure Data Lake Analytics linked service.
2713type AzureDataLakeAnalyticsLinkedService struct {
2714	LinkedService
2715	// REQUIRED; Azure Data Lake Analytics linked service properties.
2716	TypeProperties *AzureDataLakeAnalyticsLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
2717}
2718
2719// MarshalJSON implements the json.Marshaller interface for type AzureDataLakeAnalyticsLinkedService.
2720func (a AzureDataLakeAnalyticsLinkedService) MarshalJSON() ([]byte, error) {
2721	objectMap := a.LinkedService.marshalInternal("AzureDataLakeAnalytics")
2722	populate(objectMap, "typeProperties", a.TypeProperties)
2723	return json.Marshal(objectMap)
2724}
2725
2726// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataLakeAnalyticsLinkedService.
2727func (a *AzureDataLakeAnalyticsLinkedService) UnmarshalJSON(data []byte) error {
2728	var rawMsg map[string]json.RawMessage
2729	if err := json.Unmarshal(data, &rawMsg); err != nil {
2730		return err
2731	}
2732	for key, val := range rawMsg {
2733		var err error
2734		switch key {
2735		case "typeProperties":
2736			err = unpopulate(val, &a.TypeProperties)
2737			delete(rawMsg, key)
2738		}
2739		if err != nil {
2740			return err
2741		}
2742	}
2743	return a.LinkedService.unmarshalInternal(rawMsg)
2744}
2745
2746// AzureDataLakeAnalyticsLinkedServiceTypeProperties - Azure Data Lake Analytics linked service properties.
2747type AzureDataLakeAnalyticsLinkedServiceTypeProperties struct {
2748	// REQUIRED; The Azure Data Lake Analytics account name. Type: string (or Expression with resultType string).
2749	AccountName interface{} `json:"accountName,omitempty"`
2750
2751	// REQUIRED; The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
2752	Tenant interface{} `json:"tenant,omitempty"`
2753
2754	// Azure Data Lake Analytics URI Type: string (or Expression with resultType string).
2755	DataLakeAnalyticsURI interface{} `json:"dataLakeAnalyticsUri,omitempty"`
2756
2757	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
2758	// with resultType string).
2759	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
2760
2761	// Data Lake Analytics account resource group name (if different from Data Factory account). Type: string (or Expression with resultType string).
2762	ResourceGroupName interface{} `json:"resourceGroupName,omitempty"`
2763
2764	// The ID of the application used to authenticate against the Azure Data Lake Analytics account. Type: string (or Expression with resultType string).
2765	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
2766
2767	// The Key of the application used to authenticate against the Azure Data Lake Analytics account.
2768	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
2769
2770	// Data Lake Analytics account subscription ID (if different from Data Factory account). Type: string (or Expression with resultType string).
2771	SubscriptionID interface{} `json:"subscriptionId,omitempty"`
2772}
2773
2774// MarshalJSON implements the json.Marshaller interface for type AzureDataLakeAnalyticsLinkedServiceTypeProperties.
2775func (a AzureDataLakeAnalyticsLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
2776	objectMap := make(map[string]interface{})
2777	populate(objectMap, "accountName", a.AccountName)
2778	populate(objectMap, "dataLakeAnalyticsUri", a.DataLakeAnalyticsURI)
2779	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
2780	populate(objectMap, "resourceGroupName", a.ResourceGroupName)
2781	populate(objectMap, "servicePrincipalId", a.ServicePrincipalID)
2782	populate(objectMap, "servicePrincipalKey", a.ServicePrincipalKey)
2783	populate(objectMap, "subscriptionId", a.SubscriptionID)
2784	populate(objectMap, "tenant", a.Tenant)
2785	return json.Marshal(objectMap)
2786}
2787
2788// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataLakeAnalyticsLinkedServiceTypeProperties.
2789func (a *AzureDataLakeAnalyticsLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
2790	var rawMsg map[string]json.RawMessage
2791	if err := json.Unmarshal(data, &rawMsg); err != nil {
2792		return err
2793	}
2794	for key, val := range rawMsg {
2795		var err error
2796		switch key {
2797		case "accountName":
2798			err = unpopulate(val, &a.AccountName)
2799			delete(rawMsg, key)
2800		case "dataLakeAnalyticsUri":
2801			err = unpopulate(val, &a.DataLakeAnalyticsURI)
2802			delete(rawMsg, key)
2803		case "encryptedCredential":
2804			err = unpopulate(val, &a.EncryptedCredential)
2805			delete(rawMsg, key)
2806		case "resourceGroupName":
2807			err = unpopulate(val, &a.ResourceGroupName)
2808			delete(rawMsg, key)
2809		case "servicePrincipalId":
2810			err = unpopulate(val, &a.ServicePrincipalID)
2811			delete(rawMsg, key)
2812		case "servicePrincipalKey":
2813			a.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
2814			delete(rawMsg, key)
2815		case "subscriptionId":
2816			err = unpopulate(val, &a.SubscriptionID)
2817			delete(rawMsg, key)
2818		case "tenant":
2819			err = unpopulate(val, &a.Tenant)
2820			delete(rawMsg, key)
2821		}
2822		if err != nil {
2823			return err
2824		}
2825	}
2826	return nil
2827}
2828
2829// AzureDataLakeStoreDataset - Azure Data Lake Store dataset.
2830type AzureDataLakeStoreDataset struct {
2831	Dataset
2832	// Azure Data Lake Store dataset properties.
2833	TypeProperties *AzureDataLakeStoreDatasetTypeProperties `json:"typeProperties,omitempty"`
2834}
2835
2836// MarshalJSON implements the json.Marshaller interface for type AzureDataLakeStoreDataset.
2837func (a AzureDataLakeStoreDataset) MarshalJSON() ([]byte, error) {
2838	objectMap := a.Dataset.marshalInternal("AzureDataLakeStoreFile")
2839	populate(objectMap, "typeProperties", a.TypeProperties)
2840	return json.Marshal(objectMap)
2841}
2842
2843// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataLakeStoreDataset.
2844func (a *AzureDataLakeStoreDataset) UnmarshalJSON(data []byte) error {
2845	var rawMsg map[string]json.RawMessage
2846	if err := json.Unmarshal(data, &rawMsg); err != nil {
2847		return err
2848	}
2849	for key, val := range rawMsg {
2850		var err error
2851		switch key {
2852		case "typeProperties":
2853			err = unpopulate(val, &a.TypeProperties)
2854			delete(rawMsg, key)
2855		}
2856		if err != nil {
2857			return err
2858		}
2859	}
2860	return a.Dataset.unmarshalInternal(rawMsg)
2861}
2862
2863// AzureDataLakeStoreDatasetTypeProperties - Azure Data Lake Store dataset properties.
2864type AzureDataLakeStoreDatasetTypeProperties struct {
2865	// The data compression method used for the item(s) in the Azure Data Lake Store.
2866	Compression DatasetCompressionClassification `json:"compression,omitempty"`
2867
2868	// The name of the file in the Azure Data Lake Store. Type: string (or Expression with resultType string).
2869	FileName interface{} `json:"fileName,omitempty"`
2870
2871	// Path to the folder in the Azure Data Lake Store. Type: string (or Expression with resultType string).
2872	FolderPath interface{} `json:"folderPath,omitempty"`
2873
2874	// The format of the Data Lake Store.
2875	Format DatasetStorageFormatClassification `json:"format,omitempty"`
2876}
2877
2878// MarshalJSON implements the json.Marshaller interface for type AzureDataLakeStoreDatasetTypeProperties.
2879func (a AzureDataLakeStoreDatasetTypeProperties) MarshalJSON() ([]byte, error) {
2880	objectMap := make(map[string]interface{})
2881	populate(objectMap, "compression", a.Compression)
2882	populate(objectMap, "fileName", a.FileName)
2883	populate(objectMap, "folderPath", a.FolderPath)
2884	populate(objectMap, "format", a.Format)
2885	return json.Marshal(objectMap)
2886}
2887
2888// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataLakeStoreDatasetTypeProperties.
2889func (a *AzureDataLakeStoreDatasetTypeProperties) UnmarshalJSON(data []byte) error {
2890	var rawMsg map[string]json.RawMessage
2891	if err := json.Unmarshal(data, &rawMsg); err != nil {
2892		return err
2893	}
2894	for key, val := range rawMsg {
2895		var err error
2896		switch key {
2897		case "compression":
2898			a.Compression, err = unmarshalDatasetCompressionClassification(val)
2899			delete(rawMsg, key)
2900		case "fileName":
2901			err = unpopulate(val, &a.FileName)
2902			delete(rawMsg, key)
2903		case "folderPath":
2904			err = unpopulate(val, &a.FolderPath)
2905			delete(rawMsg, key)
2906		case "format":
2907			a.Format, err = unmarshalDatasetStorageFormatClassification(val)
2908			delete(rawMsg, key)
2909		}
2910		if err != nil {
2911			return err
2912		}
2913	}
2914	return nil
2915}
2916
2917// AzureDataLakeStoreLinkedService - Azure Data Lake Store linked service.
2918type AzureDataLakeStoreLinkedService struct {
2919	LinkedService
2920	// REQUIRED; Azure Data Lake Store linked service properties.
2921	TypeProperties *AzureDataLakeStoreLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
2922}
2923
2924// MarshalJSON implements the json.Marshaller interface for type AzureDataLakeStoreLinkedService.
2925func (a AzureDataLakeStoreLinkedService) MarshalJSON() ([]byte, error) {
2926	objectMap := a.LinkedService.marshalInternal("AzureDataLakeStore")
2927	populate(objectMap, "typeProperties", a.TypeProperties)
2928	return json.Marshal(objectMap)
2929}
2930
2931// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataLakeStoreLinkedService.
2932func (a *AzureDataLakeStoreLinkedService) UnmarshalJSON(data []byte) error {
2933	var rawMsg map[string]json.RawMessage
2934	if err := json.Unmarshal(data, &rawMsg); err != nil {
2935		return err
2936	}
2937	for key, val := range rawMsg {
2938		var err error
2939		switch key {
2940		case "typeProperties":
2941			err = unpopulate(val, &a.TypeProperties)
2942			delete(rawMsg, key)
2943		}
2944		if err != nil {
2945			return err
2946		}
2947	}
2948	return a.LinkedService.unmarshalInternal(rawMsg)
2949}
2950
2951// AzureDataLakeStoreLinkedServiceTypeProperties - Azure Data Lake Store linked service properties.
2952type AzureDataLakeStoreLinkedServiceTypeProperties struct {
2953	// REQUIRED; Data Lake Store service URI. Type: string (or Expression with resultType string).
2954	DataLakeStoreURI interface{} `json:"dataLakeStoreUri,omitempty"`
2955
2956	// Data Lake Store account name. Type: string (or Expression with resultType string).
2957	AccountName interface{} `json:"accountName,omitempty"`
2958
2959	// Indicates the azure cloud type of the service principle auth. Allowed values are AzurePublic, AzureChina, AzureUsGovernment, AzureGermany. Default value
2960	// is the data factory regions’ cloud type. Type:
2961	// string (or Expression with resultType string).
2962	AzureCloudType interface{} `json:"azureCloudType,omitempty"`
2963
2964	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
2965	// with resultType string).
2966	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
2967
2968	// Data Lake Store account resource group name (if different from Data Factory account). Type: string (or Expression with resultType string).
2969	ResourceGroupName interface{} `json:"resourceGroupName,omitempty"`
2970
2971	// The ID of the application used to authenticate against the Azure Data Lake Store account. Type: string (or Expression with resultType string).
2972	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
2973
2974	// The Key of the application used to authenticate against the Azure Data Lake Store account.
2975	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
2976
2977	// Data Lake Store account subscription ID (if different from Data Factory account). Type: string (or Expression with resultType string).
2978	SubscriptionID interface{} `json:"subscriptionId,omitempty"`
2979
2980	// The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
2981	Tenant interface{} `json:"tenant,omitempty"`
2982}
2983
2984// MarshalJSON implements the json.Marshaller interface for type AzureDataLakeStoreLinkedServiceTypeProperties.
2985func (a AzureDataLakeStoreLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
2986	objectMap := make(map[string]interface{})
2987	populate(objectMap, "accountName", a.AccountName)
2988	populate(objectMap, "azureCloudType", a.AzureCloudType)
2989	populate(objectMap, "dataLakeStoreUri", a.DataLakeStoreURI)
2990	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
2991	populate(objectMap, "resourceGroupName", a.ResourceGroupName)
2992	populate(objectMap, "servicePrincipalId", a.ServicePrincipalID)
2993	populate(objectMap, "servicePrincipalKey", a.ServicePrincipalKey)
2994	populate(objectMap, "subscriptionId", a.SubscriptionID)
2995	populate(objectMap, "tenant", a.Tenant)
2996	return json.Marshal(objectMap)
2997}
2998
2999// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataLakeStoreLinkedServiceTypeProperties.
3000func (a *AzureDataLakeStoreLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
3001	var rawMsg map[string]json.RawMessage
3002	if err := json.Unmarshal(data, &rawMsg); err != nil {
3003		return err
3004	}
3005	for key, val := range rawMsg {
3006		var err error
3007		switch key {
3008		case "accountName":
3009			err = unpopulate(val, &a.AccountName)
3010			delete(rawMsg, key)
3011		case "azureCloudType":
3012			err = unpopulate(val, &a.AzureCloudType)
3013			delete(rawMsg, key)
3014		case "dataLakeStoreUri":
3015			err = unpopulate(val, &a.DataLakeStoreURI)
3016			delete(rawMsg, key)
3017		case "encryptedCredential":
3018			err = unpopulate(val, &a.EncryptedCredential)
3019			delete(rawMsg, key)
3020		case "resourceGroupName":
3021			err = unpopulate(val, &a.ResourceGroupName)
3022			delete(rawMsg, key)
3023		case "servicePrincipalId":
3024			err = unpopulate(val, &a.ServicePrincipalID)
3025			delete(rawMsg, key)
3026		case "servicePrincipalKey":
3027			a.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
3028			delete(rawMsg, key)
3029		case "subscriptionId":
3030			err = unpopulate(val, &a.SubscriptionID)
3031			delete(rawMsg, key)
3032		case "tenant":
3033			err = unpopulate(val, &a.Tenant)
3034			delete(rawMsg, key)
3035		}
3036		if err != nil {
3037			return err
3038		}
3039	}
3040	return nil
3041}
3042
3043// AzureDataLakeStoreLocation - The location of azure data lake store dataset.
3044type AzureDataLakeStoreLocation struct {
3045	DatasetLocation
3046}
3047
3048// MarshalJSON implements the json.Marshaller interface for type AzureDataLakeStoreLocation.
3049func (a AzureDataLakeStoreLocation) MarshalJSON() ([]byte, error) {
3050	objectMap := a.DatasetLocation.marshalInternal("AzureDataLakeStoreLocation")
3051	return json.Marshal(objectMap)
3052}
3053
3054// AzureDataLakeStoreReadSettings - Azure data lake store read settings.
3055type AzureDataLakeStoreReadSettings struct {
3056	StoreReadSettings
3057	// Indicates whether the source files need to be deleted after copy completion. Default is false. Type: boolean (or Expression with resultType boolean).
3058	DeleteFilesAfterCompletion interface{} `json:"deleteFilesAfterCompletion,omitempty"`
3059
3060	// Indicates whether to enable partition discovery.
3061	EnablePartitionDiscovery *bool `json:"enablePartitionDiscovery,omitempty"`
3062
3063	// Point to a text file that lists each file (relative path to the path configured in the dataset) that you want to copy. Type: string (or Expression with
3064	// resultType string).
3065	FileListPath interface{} `json:"fileListPath,omitempty"`
3066
3067	// Lists files after the value (exclusive) based on file/folder names’ lexicographical order. Applies under the folderPath in data set, and filter files/sub-folders
3068	// under the folderPath. Type: string (or
3069	// Expression with resultType string).
3070	ListAfter interface{} `json:"listAfter,omitempty"`
3071
3072	// Lists files before the value (inclusive) based on file/folder names’ lexicographical order. Applies under the folderPath in data set, and filter files/sub-folders
3073	// under the folderPath. Type: string
3074	// (or Expression with resultType string).
3075	ListBefore interface{} `json:"listBefore,omitempty"`
3076
3077	// The end of file's modified datetime. Type: string (or Expression with resultType string).
3078	ModifiedDatetimeEnd interface{} `json:"modifiedDatetimeEnd,omitempty"`
3079
3080	// The start of file's modified datetime. Type: string (or Expression with resultType string).
3081	ModifiedDatetimeStart interface{} `json:"modifiedDatetimeStart,omitempty"`
3082
3083	// Specify the root path where partition discovery starts from. Type: string (or Expression with resultType string).
3084	PartitionRootPath interface{} `json:"partitionRootPath,omitempty"`
3085
3086	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
3087	Recursive interface{} `json:"recursive,omitempty"`
3088
3089	// ADLS wildcardFileName. Type: string (or Expression with resultType string).
3090	WildcardFileName interface{} `json:"wildcardFileName,omitempty"`
3091
3092	// ADLS wildcardFolderPath. Type: string (or Expression with resultType string).
3093	WildcardFolderPath interface{} `json:"wildcardFolderPath,omitempty"`
3094}
3095
3096// MarshalJSON implements the json.Marshaller interface for type AzureDataLakeStoreReadSettings.
3097func (a AzureDataLakeStoreReadSettings) MarshalJSON() ([]byte, error) {
3098	objectMap := a.StoreReadSettings.marshalInternal("AzureDataLakeStoreReadSettings")
3099	populate(objectMap, "deleteFilesAfterCompletion", a.DeleteFilesAfterCompletion)
3100	populate(objectMap, "enablePartitionDiscovery", a.EnablePartitionDiscovery)
3101	populate(objectMap, "fileListPath", a.FileListPath)
3102	populate(objectMap, "listAfter", a.ListAfter)
3103	populate(objectMap, "listBefore", a.ListBefore)
3104	populate(objectMap, "modifiedDatetimeEnd", a.ModifiedDatetimeEnd)
3105	populate(objectMap, "modifiedDatetimeStart", a.ModifiedDatetimeStart)
3106	populate(objectMap, "partitionRootPath", a.PartitionRootPath)
3107	populate(objectMap, "recursive", a.Recursive)
3108	populate(objectMap, "wildcardFileName", a.WildcardFileName)
3109	populate(objectMap, "wildcardFolderPath", a.WildcardFolderPath)
3110	return json.Marshal(objectMap)
3111}
3112
3113// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataLakeStoreReadSettings.
3114func (a *AzureDataLakeStoreReadSettings) UnmarshalJSON(data []byte) error {
3115	var rawMsg map[string]json.RawMessage
3116	if err := json.Unmarshal(data, &rawMsg); err != nil {
3117		return err
3118	}
3119	for key, val := range rawMsg {
3120		var err error
3121		switch key {
3122		case "deleteFilesAfterCompletion":
3123			err = unpopulate(val, &a.DeleteFilesAfterCompletion)
3124			delete(rawMsg, key)
3125		case "enablePartitionDiscovery":
3126			err = unpopulate(val, &a.EnablePartitionDiscovery)
3127			delete(rawMsg, key)
3128		case "fileListPath":
3129			err = unpopulate(val, &a.FileListPath)
3130			delete(rawMsg, key)
3131		case "listAfter":
3132			err = unpopulate(val, &a.ListAfter)
3133			delete(rawMsg, key)
3134		case "listBefore":
3135			err = unpopulate(val, &a.ListBefore)
3136			delete(rawMsg, key)
3137		case "modifiedDatetimeEnd":
3138			err = unpopulate(val, &a.ModifiedDatetimeEnd)
3139			delete(rawMsg, key)
3140		case "modifiedDatetimeStart":
3141			err = unpopulate(val, &a.ModifiedDatetimeStart)
3142			delete(rawMsg, key)
3143		case "partitionRootPath":
3144			err = unpopulate(val, &a.PartitionRootPath)
3145			delete(rawMsg, key)
3146		case "recursive":
3147			err = unpopulate(val, &a.Recursive)
3148			delete(rawMsg, key)
3149		case "wildcardFileName":
3150			err = unpopulate(val, &a.WildcardFileName)
3151			delete(rawMsg, key)
3152		case "wildcardFolderPath":
3153			err = unpopulate(val, &a.WildcardFolderPath)
3154			delete(rawMsg, key)
3155		}
3156		if err != nil {
3157			return err
3158		}
3159	}
3160	return a.StoreReadSettings.unmarshalInternal(rawMsg)
3161}
3162
3163// AzureDataLakeStoreSink - A copy activity Azure Data Lake Store sink.
3164type AzureDataLakeStoreSink struct {
3165	CopySink
3166	// The type of copy behavior for copy sink.
3167	CopyBehavior interface{} `json:"copyBehavior,omitempty"`
3168
3169	// Single File Parallel.
3170	EnableAdlsSingleFileParallel interface{} `json:"enableAdlsSingleFileParallel,omitempty"`
3171}
3172
3173// MarshalJSON implements the json.Marshaller interface for type AzureDataLakeStoreSink.
3174func (a AzureDataLakeStoreSink) MarshalJSON() ([]byte, error) {
3175	objectMap := a.CopySink.marshalInternal("AzureDataLakeStoreSink")
3176	populate(objectMap, "copyBehavior", a.CopyBehavior)
3177	populate(objectMap, "enableAdlsSingleFileParallel", a.EnableAdlsSingleFileParallel)
3178	return json.Marshal(objectMap)
3179}
3180
3181// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataLakeStoreSink.
3182func (a *AzureDataLakeStoreSink) UnmarshalJSON(data []byte) error {
3183	var rawMsg map[string]json.RawMessage
3184	if err := json.Unmarshal(data, &rawMsg); err != nil {
3185		return err
3186	}
3187	for key, val := range rawMsg {
3188		var err error
3189		switch key {
3190		case "copyBehavior":
3191			err = unpopulate(val, &a.CopyBehavior)
3192			delete(rawMsg, key)
3193		case "enableAdlsSingleFileParallel":
3194			err = unpopulate(val, &a.EnableAdlsSingleFileParallel)
3195			delete(rawMsg, key)
3196		}
3197		if err != nil {
3198			return err
3199		}
3200	}
3201	return a.CopySink.unmarshalInternal(rawMsg)
3202}
3203
3204// AzureDataLakeStoreSource - A copy activity Azure Data Lake source.
3205type AzureDataLakeStoreSource struct {
3206	CopySource
3207	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
3208	Recursive interface{} `json:"recursive,omitempty"`
3209}
3210
3211// MarshalJSON implements the json.Marshaller interface for type AzureDataLakeStoreSource.
3212func (a AzureDataLakeStoreSource) MarshalJSON() ([]byte, error) {
3213	objectMap := a.CopySource.marshalInternal("AzureDataLakeStoreSource")
3214	populate(objectMap, "recursive", a.Recursive)
3215	return json.Marshal(objectMap)
3216}
3217
3218// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataLakeStoreSource.
3219func (a *AzureDataLakeStoreSource) UnmarshalJSON(data []byte) error {
3220	var rawMsg map[string]json.RawMessage
3221	if err := json.Unmarshal(data, &rawMsg); err != nil {
3222		return err
3223	}
3224	for key, val := range rawMsg {
3225		var err error
3226		switch key {
3227		case "recursive":
3228			err = unpopulate(val, &a.Recursive)
3229			delete(rawMsg, key)
3230		}
3231		if err != nil {
3232			return err
3233		}
3234	}
3235	return a.CopySource.unmarshalInternal(rawMsg)
3236}
3237
3238// AzureDataLakeStoreWriteSettings - Azure data lake store write settings.
3239type AzureDataLakeStoreWriteSettings struct {
3240	StoreWriteSettings
3241	// Specifies the expiry time of the written files. The time is applied to the UTC time zone in the format of "2018-12-01T05:00:00Z". Default value is NULL.
3242	// Type: integer (or Expression with resultType
3243	// integer).
3244	ExpiryDateTime interface{} `json:"expiryDateTime,omitempty"`
3245}
3246
3247// MarshalJSON implements the json.Marshaller interface for type AzureDataLakeStoreWriteSettings.
3248func (a AzureDataLakeStoreWriteSettings) MarshalJSON() ([]byte, error) {
3249	objectMap := a.StoreWriteSettings.marshalInternal("AzureDataLakeStoreWriteSettings")
3250	populate(objectMap, "expiryDateTime", a.ExpiryDateTime)
3251	return json.Marshal(objectMap)
3252}
3253
3254// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDataLakeStoreWriteSettings.
3255func (a *AzureDataLakeStoreWriteSettings) UnmarshalJSON(data []byte) error {
3256	var rawMsg map[string]json.RawMessage
3257	if err := json.Unmarshal(data, &rawMsg); err != nil {
3258		return err
3259	}
3260	for key, val := range rawMsg {
3261		var err error
3262		switch key {
3263		case "expiryDateTime":
3264			err = unpopulate(val, &a.ExpiryDateTime)
3265			delete(rawMsg, key)
3266		}
3267		if err != nil {
3268			return err
3269		}
3270	}
3271	return a.StoreWriteSettings.unmarshalInternal(rawMsg)
3272}
3273
3274// AzureDatabricksDeltaLakeDataset - Azure Databricks Delta Lake dataset.
3275type AzureDatabricksDeltaLakeDataset struct {
3276	Dataset
3277	// Properties specific to this dataset type.
3278	TypeProperties *AzureDatabricksDeltaLakeDatasetTypeProperties `json:"typeProperties,omitempty"`
3279}
3280
3281// MarshalJSON implements the json.Marshaller interface for type AzureDatabricksDeltaLakeDataset.
3282func (a AzureDatabricksDeltaLakeDataset) MarshalJSON() ([]byte, error) {
3283	objectMap := a.Dataset.marshalInternal("AzureDatabricksDeltaLakeDataset")
3284	populate(objectMap, "typeProperties", a.TypeProperties)
3285	return json.Marshal(objectMap)
3286}
3287
3288// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDatabricksDeltaLakeDataset.
3289func (a *AzureDatabricksDeltaLakeDataset) UnmarshalJSON(data []byte) error {
3290	var rawMsg map[string]json.RawMessage
3291	if err := json.Unmarshal(data, &rawMsg); err != nil {
3292		return err
3293	}
3294	for key, val := range rawMsg {
3295		var err error
3296		switch key {
3297		case "typeProperties":
3298			err = unpopulate(val, &a.TypeProperties)
3299			delete(rawMsg, key)
3300		}
3301		if err != nil {
3302			return err
3303		}
3304	}
3305	return a.Dataset.unmarshalInternal(rawMsg)
3306}
3307
3308// AzureDatabricksDeltaLakeDatasetTypeProperties - Azure Databricks Delta Lake Dataset Properties
3309type AzureDatabricksDeltaLakeDatasetTypeProperties struct {
3310	// The database name of delta table. Type: string (or Expression with resultType string).
3311	Database interface{} `json:"database,omitempty"`
3312
3313	// The name of delta table. Type: string (or Expression with resultType string).
3314	Table interface{} `json:"table,omitempty"`
3315}
3316
3317// AzureDatabricksDeltaLakeExportCommand - Azure Databricks Delta Lake export command settings.
3318type AzureDatabricksDeltaLakeExportCommand struct {
3319	ExportSettings
3320	// Specify the date format for the csv in Azure Databricks Delta Lake Copy. Type: string (or Expression with resultType string).
3321	DateFormat interface{} `json:"dateFormat,omitempty"`
3322
3323	// Specify the timestamp format for the csv in Azure Databricks Delta Lake Copy. Type: string (or Expression with resultType string).
3324	TimestampFormat interface{} `json:"timestampFormat,omitempty"`
3325}
3326
3327// MarshalJSON implements the json.Marshaller interface for type AzureDatabricksDeltaLakeExportCommand.
3328func (a AzureDatabricksDeltaLakeExportCommand) MarshalJSON() ([]byte, error) {
3329	objectMap := a.ExportSettings.marshalInternal("AzureDatabricksDeltaLakeExportCommand")
3330	populate(objectMap, "dateFormat", a.DateFormat)
3331	populate(objectMap, "timestampFormat", a.TimestampFormat)
3332	return json.Marshal(objectMap)
3333}
3334
3335// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDatabricksDeltaLakeExportCommand.
3336func (a *AzureDatabricksDeltaLakeExportCommand) UnmarshalJSON(data []byte) error {
3337	var rawMsg map[string]json.RawMessage
3338	if err := json.Unmarshal(data, &rawMsg); err != nil {
3339		return err
3340	}
3341	for key, val := range rawMsg {
3342		var err error
3343		switch key {
3344		case "dateFormat":
3345			err = unpopulate(val, &a.DateFormat)
3346			delete(rawMsg, key)
3347		case "timestampFormat":
3348			err = unpopulate(val, &a.TimestampFormat)
3349			delete(rawMsg, key)
3350		}
3351		if err != nil {
3352			return err
3353		}
3354	}
3355	return a.ExportSettings.unmarshalInternal(rawMsg)
3356}
3357
3358// AzureDatabricksDeltaLakeImportCommand - Azure Databricks Delta Lake import command settings.
3359type AzureDatabricksDeltaLakeImportCommand struct {
3360	ImportSettings
3361	// Specify the date format for csv in Azure Databricks Delta Lake Copy. Type: string (or Expression with resultType string).
3362	DateFormat interface{} `json:"dateFormat,omitempty"`
3363
3364	// Specify the timestamp format for csv in Azure Databricks Delta Lake Copy. Type: string (or Expression with resultType string).
3365	TimestampFormat interface{} `json:"timestampFormat,omitempty"`
3366}
3367
3368// MarshalJSON implements the json.Marshaller interface for type AzureDatabricksDeltaLakeImportCommand.
3369func (a AzureDatabricksDeltaLakeImportCommand) MarshalJSON() ([]byte, error) {
3370	objectMap := a.ImportSettings.marshalInternal("AzureDatabricksDeltaLakeImportCommand")
3371	populate(objectMap, "dateFormat", a.DateFormat)
3372	populate(objectMap, "timestampFormat", a.TimestampFormat)
3373	return json.Marshal(objectMap)
3374}
3375
3376// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDatabricksDeltaLakeImportCommand.
3377func (a *AzureDatabricksDeltaLakeImportCommand) UnmarshalJSON(data []byte) error {
3378	var rawMsg map[string]json.RawMessage
3379	if err := json.Unmarshal(data, &rawMsg); err != nil {
3380		return err
3381	}
3382	for key, val := range rawMsg {
3383		var err error
3384		switch key {
3385		case "dateFormat":
3386			err = unpopulate(val, &a.DateFormat)
3387			delete(rawMsg, key)
3388		case "timestampFormat":
3389			err = unpopulate(val, &a.TimestampFormat)
3390			delete(rawMsg, key)
3391		}
3392		if err != nil {
3393			return err
3394		}
3395	}
3396	return a.ImportSettings.unmarshalInternal(rawMsg)
3397}
3398
3399// AzureDatabricksDeltaLakeLinkedService - Azure Databricks Delta Lake linked service.
3400type AzureDatabricksDeltaLakeLinkedService struct {
3401	LinkedService
3402	// REQUIRED; Azure Databricks Delta Lake linked service properties.
3403	TypeProperties *AzureDatabricksDetltaLakeLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
3404}
3405
3406// MarshalJSON implements the json.Marshaller interface for type AzureDatabricksDeltaLakeLinkedService.
3407func (a AzureDatabricksDeltaLakeLinkedService) MarshalJSON() ([]byte, error) {
3408	objectMap := a.LinkedService.marshalInternal("AzureDatabricksDeltaLake")
3409	populate(objectMap, "typeProperties", a.TypeProperties)
3410	return json.Marshal(objectMap)
3411}
3412
3413// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDatabricksDeltaLakeLinkedService.
3414func (a *AzureDatabricksDeltaLakeLinkedService) UnmarshalJSON(data []byte) error {
3415	var rawMsg map[string]json.RawMessage
3416	if err := json.Unmarshal(data, &rawMsg); err != nil {
3417		return err
3418	}
3419	for key, val := range rawMsg {
3420		var err error
3421		switch key {
3422		case "typeProperties":
3423			err = unpopulate(val, &a.TypeProperties)
3424			delete(rawMsg, key)
3425		}
3426		if err != nil {
3427			return err
3428		}
3429	}
3430	return a.LinkedService.unmarshalInternal(rawMsg)
3431}
3432
3433// AzureDatabricksDeltaLakeSink - A copy activity Azure Databricks Delta Lake sink.
3434type AzureDatabricksDeltaLakeSink struct {
3435	CopySink
3436	// Azure Databricks Delta Lake import settings.
3437	ImportSettings *AzureDatabricksDeltaLakeImportCommand `json:"importSettings,omitempty"`
3438
3439	// SQL pre-copy script. Type: string (or Expression with resultType string).
3440	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
3441}
3442
3443// MarshalJSON implements the json.Marshaller interface for type AzureDatabricksDeltaLakeSink.
3444func (a AzureDatabricksDeltaLakeSink) MarshalJSON() ([]byte, error) {
3445	objectMap := a.CopySink.marshalInternal("AzureDatabricksDeltaLakeSink")
3446	populate(objectMap, "importSettings", a.ImportSettings)
3447	populate(objectMap, "preCopyScript", a.PreCopyScript)
3448	return json.Marshal(objectMap)
3449}
3450
3451// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDatabricksDeltaLakeSink.
3452func (a *AzureDatabricksDeltaLakeSink) UnmarshalJSON(data []byte) error {
3453	var rawMsg map[string]json.RawMessage
3454	if err := json.Unmarshal(data, &rawMsg); err != nil {
3455		return err
3456	}
3457	for key, val := range rawMsg {
3458		var err error
3459		switch key {
3460		case "importSettings":
3461			err = unpopulate(val, &a.ImportSettings)
3462			delete(rawMsg, key)
3463		case "preCopyScript":
3464			err = unpopulate(val, &a.PreCopyScript)
3465			delete(rawMsg, key)
3466		}
3467		if err != nil {
3468			return err
3469		}
3470	}
3471	return a.CopySink.unmarshalInternal(rawMsg)
3472}
3473
3474// AzureDatabricksDeltaLakeSource - A copy activity Azure Databricks Delta Lake source.
3475type AzureDatabricksDeltaLakeSource struct {
3476	CopySource
3477	// Azure Databricks Delta Lake export settings.
3478	ExportSettings *AzureDatabricksDeltaLakeExportCommand `json:"exportSettings,omitempty"`
3479
3480	// Azure Databricks Delta Lake Sql query. Type: string (or Expression with resultType string).
3481	Query interface{} `json:"query,omitempty"`
3482}
3483
3484// MarshalJSON implements the json.Marshaller interface for type AzureDatabricksDeltaLakeSource.
3485func (a AzureDatabricksDeltaLakeSource) MarshalJSON() ([]byte, error) {
3486	objectMap := a.CopySource.marshalInternal("AzureDatabricksDeltaLakeSource")
3487	populate(objectMap, "exportSettings", a.ExportSettings)
3488	populate(objectMap, "query", a.Query)
3489	return json.Marshal(objectMap)
3490}
3491
3492// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDatabricksDeltaLakeSource.
3493func (a *AzureDatabricksDeltaLakeSource) UnmarshalJSON(data []byte) error {
3494	var rawMsg map[string]json.RawMessage
3495	if err := json.Unmarshal(data, &rawMsg); err != nil {
3496		return err
3497	}
3498	for key, val := range rawMsg {
3499		var err error
3500		switch key {
3501		case "exportSettings":
3502			err = unpopulate(val, &a.ExportSettings)
3503			delete(rawMsg, key)
3504		case "query":
3505			err = unpopulate(val, &a.Query)
3506			delete(rawMsg, key)
3507		}
3508		if err != nil {
3509			return err
3510		}
3511	}
3512	return a.CopySource.unmarshalInternal(rawMsg)
3513}
3514
3515// AzureDatabricksDetltaLakeLinkedServiceTypeProperties - Azure Databricks Delta Lake linked service properties.
3516type AzureDatabricksDetltaLakeLinkedServiceTypeProperties struct {
3517	// REQUIRED; Access token for databricks REST API. Refer to https://docs.azuredatabricks.net/api/latest/authentication.html. Type: string, SecureString
3518	// or AzureKeyVaultSecretReference.
3519	AccessToken SecretBaseClassification `json:"accessToken,omitempty"`
3520
3521	// REQUIRED; .azuredatabricks.net, domain name of your Databricks deployment. Type: string (or Expression with resultType string).
3522	Domain interface{} `json:"domain,omitempty"`
3523
3524	// The id of an existing interactive cluster that will be used for all runs of this job. Type: string (or Expression with resultType string).
3525	ClusterID interface{} `json:"clusterId,omitempty"`
3526
3527	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
3528	// with resultType string).
3529	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
3530}
3531
3532// MarshalJSON implements the json.Marshaller interface for type AzureDatabricksDetltaLakeLinkedServiceTypeProperties.
3533func (a AzureDatabricksDetltaLakeLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
3534	objectMap := make(map[string]interface{})
3535	populate(objectMap, "accessToken", a.AccessToken)
3536	populate(objectMap, "clusterId", a.ClusterID)
3537	populate(objectMap, "domain", a.Domain)
3538	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
3539	return json.Marshal(objectMap)
3540}
3541
3542// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDatabricksDetltaLakeLinkedServiceTypeProperties.
3543func (a *AzureDatabricksDetltaLakeLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
3544	var rawMsg map[string]json.RawMessage
3545	if err := json.Unmarshal(data, &rawMsg); err != nil {
3546		return err
3547	}
3548	for key, val := range rawMsg {
3549		var err error
3550		switch key {
3551		case "accessToken":
3552			a.AccessToken, err = unmarshalSecretBaseClassification(val)
3553			delete(rawMsg, key)
3554		case "clusterId":
3555			err = unpopulate(val, &a.ClusterID)
3556			delete(rawMsg, key)
3557		case "domain":
3558			err = unpopulate(val, &a.Domain)
3559			delete(rawMsg, key)
3560		case "encryptedCredential":
3561			err = unpopulate(val, &a.EncryptedCredential)
3562			delete(rawMsg, key)
3563		}
3564		if err != nil {
3565			return err
3566		}
3567	}
3568	return nil
3569}
3570
3571// AzureDatabricksLinkedService - Azure Databricks linked service.
3572type AzureDatabricksLinkedService struct {
3573	LinkedService
3574	// REQUIRED; Azure Databricks linked service properties.
3575	TypeProperties *AzureDatabricksLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
3576}
3577
3578// MarshalJSON implements the json.Marshaller interface for type AzureDatabricksLinkedService.
3579func (a AzureDatabricksLinkedService) MarshalJSON() ([]byte, error) {
3580	objectMap := a.LinkedService.marshalInternal("AzureDatabricks")
3581	populate(objectMap, "typeProperties", a.TypeProperties)
3582	return json.Marshal(objectMap)
3583}
3584
3585// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDatabricksLinkedService.
3586func (a *AzureDatabricksLinkedService) UnmarshalJSON(data []byte) error {
3587	var rawMsg map[string]json.RawMessage
3588	if err := json.Unmarshal(data, &rawMsg); err != nil {
3589		return err
3590	}
3591	for key, val := range rawMsg {
3592		var err error
3593		switch key {
3594		case "typeProperties":
3595			err = unpopulate(val, &a.TypeProperties)
3596			delete(rawMsg, key)
3597		}
3598		if err != nil {
3599			return err
3600		}
3601	}
3602	return a.LinkedService.unmarshalInternal(rawMsg)
3603}
3604
3605// AzureDatabricksLinkedServiceTypeProperties - Azure Databricks linked service properties.
3606type AzureDatabricksLinkedServiceTypeProperties struct {
3607	// REQUIRED; .azuredatabricks.net, domain name of your Databricks deployment. Type: string (or Expression with resultType string).
3608	Domain interface{} `json:"domain,omitempty"`
3609
3610	// Access token for databricks REST API. Refer to https://docs.azuredatabricks.net/api/latest/authentication.html. Type: string (or Expression with resultType
3611	// string).
3612	AccessToken SecretBaseClassification `json:"accessToken,omitempty"`
3613
3614	// Required to specify MSI, if using Workspace resource id for databricks REST API. Type: string (or Expression with resultType string).
3615	Authentication interface{} `json:"authentication,omitempty"`
3616
3617	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
3618	// with resultType string).
3619	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
3620
3621	// The id of an existing interactive cluster that will be used for all runs of this activity. Type: string (or Expression with resultType string).
3622	ExistingClusterID interface{} `json:"existingClusterId,omitempty"`
3623
3624	// The id of an existing instance pool that will be used for all runs of this activity. Type: string (or Expression with resultType string).
3625	InstancePoolID interface{} `json:"instancePoolId,omitempty"`
3626
3627	// Additional tags for cluster resources. This property is ignored in instance pool configurations.
3628	NewClusterCustomTags map[string]interface{} `json:"newClusterCustomTags,omitempty"`
3629
3630	// The driver node type for the new job cluster. This property is ignored in instance pool configurations. Type: string (or Expression with resultType string).
3631	NewClusterDriverNodeType interface{} `json:"newClusterDriverNodeType,omitempty"`
3632
3633	// Enable the elastic disk on the new cluster. This property is now ignored, and takes the default elastic disk behavior in Databricks (elastic disks are
3634	// always enabled). Type: boolean (or Expression
3635	// with resultType boolean).
3636	NewClusterEnableElasticDisk interface{} `json:"newClusterEnableElasticDisk,omitempty"`
3637
3638	// User-defined initialization scripts for the new cluster. Type: array of strings (or Expression with resultType array of strings).
3639	NewClusterInitScripts interface{} `json:"newClusterInitScripts,omitempty"`
3640
3641	// Specify a location to deliver Spark driver, worker, and event logs. Type: string (or Expression with resultType string).
3642	NewClusterLogDestination interface{} `json:"newClusterLogDestination,omitempty"`
3643
3644	// The node type of the new job cluster. This property is required if newClusterVersion is specified and instancePoolId is not specified. If instancePoolId
3645	// is specified, this property is ignored. Type:
3646	// string (or Expression with resultType string).
3647	NewClusterNodeType interface{} `json:"newClusterNodeType,omitempty"`
3648
3649	// If not using an existing interactive cluster, this specifies the number of worker nodes to use for the new job cluster or instance pool. For new job
3650	// clusters, this a string-formatted Int32, like '1'
3651	// means numOfWorker is 1 or '1:10' means auto-scale from 1 (min) to 10 (max). For instance pools, this is a string-formatted Int32, and can only specify
3652	// a fixed number of worker nodes, such as '2'.
3653	// Required if newClusterVersion is specified. Type: string (or Expression with resultType string).
3654	NewClusterNumOfWorker interface{} `json:"newClusterNumOfWorker,omitempty"`
3655
3656	// A set of optional, user-specified Spark configuration key-value pairs.
3657	NewClusterSparkConf map[string]interface{} `json:"newClusterSparkConf,omitempty"`
3658
3659	// A set of optional, user-specified Spark environment variables key-value pairs.
3660	NewClusterSparkEnvVars map[string]interface{} `json:"newClusterSparkEnvVars,omitempty"`
3661
3662	// If not using an existing interactive cluster, this specifies the Spark version of a new job cluster or instance pool nodes created for each run of this
3663	// activity. Required if instancePoolId is
3664	// specified. Type: string (or Expression with resultType string).
3665	NewClusterVersion interface{} `json:"newClusterVersion,omitempty"`
3666
3667	// The policy id for limiting the ability to configure clusters based on a user defined set of rules. Type: string (or Expression with resultType string).
3668	PolicyID interface{} `json:"policyId,omitempty"`
3669
3670	// Workspace resource id for databricks REST API. Type: string (or Expression with resultType string).
3671	WorkspaceResourceID interface{} `json:"workspaceResourceId,omitempty"`
3672}
3673
3674// MarshalJSON implements the json.Marshaller interface for type AzureDatabricksLinkedServiceTypeProperties.
3675func (a AzureDatabricksLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
3676	objectMap := make(map[string]interface{})
3677	populate(objectMap, "accessToken", a.AccessToken)
3678	populate(objectMap, "authentication", a.Authentication)
3679	populate(objectMap, "domain", a.Domain)
3680	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
3681	populate(objectMap, "existingClusterId", a.ExistingClusterID)
3682	populate(objectMap, "instancePoolId", a.InstancePoolID)
3683	populate(objectMap, "newClusterCustomTags", a.NewClusterCustomTags)
3684	populate(objectMap, "newClusterDriverNodeType", a.NewClusterDriverNodeType)
3685	populate(objectMap, "newClusterEnableElasticDisk", a.NewClusterEnableElasticDisk)
3686	populate(objectMap, "newClusterInitScripts", a.NewClusterInitScripts)
3687	populate(objectMap, "newClusterLogDestination", a.NewClusterLogDestination)
3688	populate(objectMap, "newClusterNodeType", a.NewClusterNodeType)
3689	populate(objectMap, "newClusterNumOfWorker", a.NewClusterNumOfWorker)
3690	populate(objectMap, "newClusterSparkConf", a.NewClusterSparkConf)
3691	populate(objectMap, "newClusterSparkEnvVars", a.NewClusterSparkEnvVars)
3692	populate(objectMap, "newClusterVersion", a.NewClusterVersion)
3693	populate(objectMap, "policyId", a.PolicyID)
3694	populate(objectMap, "workspaceResourceId", a.WorkspaceResourceID)
3695	return json.Marshal(objectMap)
3696}
3697
3698// UnmarshalJSON implements the json.Unmarshaller interface for type AzureDatabricksLinkedServiceTypeProperties.
3699func (a *AzureDatabricksLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
3700	var rawMsg map[string]json.RawMessage
3701	if err := json.Unmarshal(data, &rawMsg); err != nil {
3702		return err
3703	}
3704	for key, val := range rawMsg {
3705		var err error
3706		switch key {
3707		case "accessToken":
3708			a.AccessToken, err = unmarshalSecretBaseClassification(val)
3709			delete(rawMsg, key)
3710		case "authentication":
3711			err = unpopulate(val, &a.Authentication)
3712			delete(rawMsg, key)
3713		case "domain":
3714			err = unpopulate(val, &a.Domain)
3715			delete(rawMsg, key)
3716		case "encryptedCredential":
3717			err = unpopulate(val, &a.EncryptedCredential)
3718			delete(rawMsg, key)
3719		case "existingClusterId":
3720			err = unpopulate(val, &a.ExistingClusterID)
3721			delete(rawMsg, key)
3722		case "instancePoolId":
3723			err = unpopulate(val, &a.InstancePoolID)
3724			delete(rawMsg, key)
3725		case "newClusterCustomTags":
3726			err = unpopulate(val, &a.NewClusterCustomTags)
3727			delete(rawMsg, key)
3728		case "newClusterDriverNodeType":
3729			err = unpopulate(val, &a.NewClusterDriverNodeType)
3730			delete(rawMsg, key)
3731		case "newClusterEnableElasticDisk":
3732			err = unpopulate(val, &a.NewClusterEnableElasticDisk)
3733			delete(rawMsg, key)
3734		case "newClusterInitScripts":
3735			err = unpopulate(val, &a.NewClusterInitScripts)
3736			delete(rawMsg, key)
3737		case "newClusterLogDestination":
3738			err = unpopulate(val, &a.NewClusterLogDestination)
3739			delete(rawMsg, key)
3740		case "newClusterNodeType":
3741			err = unpopulate(val, &a.NewClusterNodeType)
3742			delete(rawMsg, key)
3743		case "newClusterNumOfWorker":
3744			err = unpopulate(val, &a.NewClusterNumOfWorker)
3745			delete(rawMsg, key)
3746		case "newClusterSparkConf":
3747			err = unpopulate(val, &a.NewClusterSparkConf)
3748			delete(rawMsg, key)
3749		case "newClusterSparkEnvVars":
3750			err = unpopulate(val, &a.NewClusterSparkEnvVars)
3751			delete(rawMsg, key)
3752		case "newClusterVersion":
3753			err = unpopulate(val, &a.NewClusterVersion)
3754			delete(rawMsg, key)
3755		case "policyId":
3756			err = unpopulate(val, &a.PolicyID)
3757			delete(rawMsg, key)
3758		case "workspaceResourceId":
3759			err = unpopulate(val, &a.WorkspaceResourceID)
3760			delete(rawMsg, key)
3761		}
3762		if err != nil {
3763			return err
3764		}
3765	}
3766	return nil
3767}
3768
3769// AzureEntityResource - The resource model definition for an Azure Resource Manager resource with an etag.
3770type AzureEntityResource struct {
3771	Resource
3772	// READ-ONLY; Resource Etag.
3773	Etag *string `json:"etag,omitempty" azure:"ro"`
3774}
3775
3776// MarshalJSON implements the json.Marshaller interface for type AzureEntityResource.
3777func (a AzureEntityResource) MarshalJSON() ([]byte, error) {
3778	objectMap := a.marshalInternal()
3779	return json.Marshal(objectMap)
3780}
3781
3782// UnmarshalJSON implements the json.Unmarshaller interface for type AzureEntityResource.
3783func (a *AzureEntityResource) UnmarshalJSON(data []byte) error {
3784	var rawMsg map[string]json.RawMessage
3785	if err := json.Unmarshal(data, &rawMsg); err != nil {
3786		return err
3787	}
3788	return a.unmarshalInternal(rawMsg)
3789}
3790
3791func (a AzureEntityResource) marshalInternal() map[string]interface{} {
3792	objectMap := a.Resource.marshalInternal()
3793	populate(objectMap, "etag", a.Etag)
3794	return objectMap
3795}
3796
3797func (a *AzureEntityResource) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
3798	for key, val := range rawMsg {
3799		var err error
3800		switch key {
3801		case "etag":
3802			err = unpopulate(val, &a.Etag)
3803			delete(rawMsg, key)
3804		}
3805		if err != nil {
3806			return err
3807		}
3808	}
3809	return a.Resource.unmarshalInternal(rawMsg)
3810}
3811
3812// AzureFileStorageLinkedService - Azure File Storage linked service.
3813type AzureFileStorageLinkedService struct {
3814	LinkedService
3815	// REQUIRED; Azure File Storage linked service properties.
3816	TypeProperties *AzureFileStorageLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
3817}
3818
3819// MarshalJSON implements the json.Marshaller interface for type AzureFileStorageLinkedService.
3820func (a AzureFileStorageLinkedService) MarshalJSON() ([]byte, error) {
3821	objectMap := a.LinkedService.marshalInternal("AzureFileStorage")
3822	populate(objectMap, "typeProperties", a.TypeProperties)
3823	return json.Marshal(objectMap)
3824}
3825
3826// UnmarshalJSON implements the json.Unmarshaller interface for type AzureFileStorageLinkedService.
3827func (a *AzureFileStorageLinkedService) UnmarshalJSON(data []byte) error {
3828	var rawMsg map[string]json.RawMessage
3829	if err := json.Unmarshal(data, &rawMsg); err != nil {
3830		return err
3831	}
3832	for key, val := range rawMsg {
3833		var err error
3834		switch key {
3835		case "typeProperties":
3836			err = unpopulate(val, &a.TypeProperties)
3837			delete(rawMsg, key)
3838		}
3839		if err != nil {
3840			return err
3841		}
3842	}
3843	return a.LinkedService.unmarshalInternal(rawMsg)
3844}
3845
3846// AzureFileStorageLinkedServiceTypeProperties - Azure File Storage linked service properties.
3847type AzureFileStorageLinkedServiceTypeProperties struct {
3848	// REQUIRED; Host name of the server. Type: string (or Expression with resultType string).
3849	Host interface{} `json:"host,omitempty"`
3850
3851	// The Azure key vault secret reference of accountKey in connection string.
3852	AccountKey *AzureKeyVaultSecretReference `json:"accountKey,omitempty"`
3853
3854	// The connection string. It is mutually exclusive with sasUri property. Type: string, SecureString or AzureKeyVaultSecretReference.
3855	ConnectionString interface{} `json:"connectionString,omitempty"`
3856
3857	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
3858	// with resultType string).
3859	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
3860
3861	// The azure file share name. It is required when auth with accountKey/sasToken. Type: string (or Expression with resultType string).
3862	FileShare interface{} `json:"fileShare,omitempty"`
3863
3864	// Password to logon the server.
3865	Password SecretBaseClassification `json:"password,omitempty"`
3866
3867	// The Azure key vault secret reference of sasToken in sas uri.
3868	SasToken *AzureKeyVaultSecretReference `json:"sasToken,omitempty"`
3869
3870	// SAS URI of the Azure File resource. It is mutually exclusive with connectionString property. Type: string, SecureString or AzureKeyVaultSecretReference.
3871	SasURI interface{} `json:"sasUri,omitempty"`
3872
3873	// The azure file share snapshot version. Type: string (or Expression with resultType string).
3874	Snapshot interface{} `json:"snapshot,omitempty"`
3875
3876	// User ID to logon the server. Type: string (or Expression with resultType string).
3877	UserID interface{} `json:"userId,omitempty"`
3878}
3879
3880// MarshalJSON implements the json.Marshaller interface for type AzureFileStorageLinkedServiceTypeProperties.
3881func (a AzureFileStorageLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
3882	objectMap := make(map[string]interface{})
3883	populate(objectMap, "accountKey", a.AccountKey)
3884	populate(objectMap, "connectionString", a.ConnectionString)
3885	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
3886	populate(objectMap, "fileShare", a.FileShare)
3887	populate(objectMap, "host", a.Host)
3888	populate(objectMap, "password", a.Password)
3889	populate(objectMap, "sasToken", a.SasToken)
3890	populate(objectMap, "sasUri", a.SasURI)
3891	populate(objectMap, "snapshot", a.Snapshot)
3892	populate(objectMap, "userId", a.UserID)
3893	return json.Marshal(objectMap)
3894}
3895
3896// UnmarshalJSON implements the json.Unmarshaller interface for type AzureFileStorageLinkedServiceTypeProperties.
3897func (a *AzureFileStorageLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
3898	var rawMsg map[string]json.RawMessage
3899	if err := json.Unmarshal(data, &rawMsg); err != nil {
3900		return err
3901	}
3902	for key, val := range rawMsg {
3903		var err error
3904		switch key {
3905		case "accountKey":
3906			err = unpopulate(val, &a.AccountKey)
3907			delete(rawMsg, key)
3908		case "connectionString":
3909			err = unpopulate(val, &a.ConnectionString)
3910			delete(rawMsg, key)
3911		case "encryptedCredential":
3912			err = unpopulate(val, &a.EncryptedCredential)
3913			delete(rawMsg, key)
3914		case "fileShare":
3915			err = unpopulate(val, &a.FileShare)
3916			delete(rawMsg, key)
3917		case "host":
3918			err = unpopulate(val, &a.Host)
3919			delete(rawMsg, key)
3920		case "password":
3921			a.Password, err = unmarshalSecretBaseClassification(val)
3922			delete(rawMsg, key)
3923		case "sasToken":
3924			err = unpopulate(val, &a.SasToken)
3925			delete(rawMsg, key)
3926		case "sasUri":
3927			err = unpopulate(val, &a.SasURI)
3928			delete(rawMsg, key)
3929		case "snapshot":
3930			err = unpopulate(val, &a.Snapshot)
3931			delete(rawMsg, key)
3932		case "userId":
3933			err = unpopulate(val, &a.UserID)
3934			delete(rawMsg, key)
3935		}
3936		if err != nil {
3937			return err
3938		}
3939	}
3940	return nil
3941}
3942
3943// AzureFileStorageLocation - The location of file server dataset.
3944type AzureFileStorageLocation struct {
3945	DatasetLocation
3946}
3947
3948// MarshalJSON implements the json.Marshaller interface for type AzureFileStorageLocation.
3949func (a AzureFileStorageLocation) MarshalJSON() ([]byte, error) {
3950	objectMap := a.DatasetLocation.marshalInternal("AzureFileStorageLocation")
3951	return json.Marshal(objectMap)
3952}
3953
3954// AzureFileStorageReadSettings - Azure File Storage read settings.
3955type AzureFileStorageReadSettings struct {
3956	StoreReadSettings
3957	// Indicates whether the source files need to be deleted after copy completion. Default is false. Type: boolean (or Expression with resultType boolean).
3958	DeleteFilesAfterCompletion interface{} `json:"deleteFilesAfterCompletion,omitempty"`
3959
3960	// Indicates whether to enable partition discovery.
3961	EnablePartitionDiscovery *bool `json:"enablePartitionDiscovery,omitempty"`
3962
3963	// Point to a text file that lists each file (relative path to the path configured in the dataset) that you want to copy. Type: string (or Expression with
3964	// resultType string).
3965	FileListPath interface{} `json:"fileListPath,omitempty"`
3966
3967	// The end of file's modified datetime. Type: string (or Expression with resultType string).
3968	ModifiedDatetimeEnd interface{} `json:"modifiedDatetimeEnd,omitempty"`
3969
3970	// The start of file's modified datetime. Type: string (or Expression with resultType string).
3971	ModifiedDatetimeStart interface{} `json:"modifiedDatetimeStart,omitempty"`
3972
3973	// Specify the root path where partition discovery starts from. Type: string (or Expression with resultType string).
3974	PartitionRootPath interface{} `json:"partitionRootPath,omitempty"`
3975
3976	// The prefix filter for the Azure File name starting from root path. Type: string (or Expression with resultType string).
3977	Prefix interface{} `json:"prefix,omitempty"`
3978
3979	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
3980	Recursive interface{} `json:"recursive,omitempty"`
3981
3982	// Azure File Storage wildcardFileName. Type: string (or Expression with resultType string).
3983	WildcardFileName interface{} `json:"wildcardFileName,omitempty"`
3984
3985	// Azure File Storage wildcardFolderPath. Type: string (or Expression with resultType string).
3986	WildcardFolderPath interface{} `json:"wildcardFolderPath,omitempty"`
3987}
3988
3989// MarshalJSON implements the json.Marshaller interface for type AzureFileStorageReadSettings.
3990func (a AzureFileStorageReadSettings) MarshalJSON() ([]byte, error) {
3991	objectMap := a.StoreReadSettings.marshalInternal("AzureFileStorageReadSettings")
3992	populate(objectMap, "deleteFilesAfterCompletion", a.DeleteFilesAfterCompletion)
3993	populate(objectMap, "enablePartitionDiscovery", a.EnablePartitionDiscovery)
3994	populate(objectMap, "fileListPath", a.FileListPath)
3995	populate(objectMap, "modifiedDatetimeEnd", a.ModifiedDatetimeEnd)
3996	populate(objectMap, "modifiedDatetimeStart", a.ModifiedDatetimeStart)
3997	populate(objectMap, "partitionRootPath", a.PartitionRootPath)
3998	populate(objectMap, "prefix", a.Prefix)
3999	populate(objectMap, "recursive", a.Recursive)
4000	populate(objectMap, "wildcardFileName", a.WildcardFileName)
4001	populate(objectMap, "wildcardFolderPath", a.WildcardFolderPath)
4002	return json.Marshal(objectMap)
4003}
4004
4005// UnmarshalJSON implements the json.Unmarshaller interface for type AzureFileStorageReadSettings.
4006func (a *AzureFileStorageReadSettings) UnmarshalJSON(data []byte) error {
4007	var rawMsg map[string]json.RawMessage
4008	if err := json.Unmarshal(data, &rawMsg); err != nil {
4009		return err
4010	}
4011	for key, val := range rawMsg {
4012		var err error
4013		switch key {
4014		case "deleteFilesAfterCompletion":
4015			err = unpopulate(val, &a.DeleteFilesAfterCompletion)
4016			delete(rawMsg, key)
4017		case "enablePartitionDiscovery":
4018			err = unpopulate(val, &a.EnablePartitionDiscovery)
4019			delete(rawMsg, key)
4020		case "fileListPath":
4021			err = unpopulate(val, &a.FileListPath)
4022			delete(rawMsg, key)
4023		case "modifiedDatetimeEnd":
4024			err = unpopulate(val, &a.ModifiedDatetimeEnd)
4025			delete(rawMsg, key)
4026		case "modifiedDatetimeStart":
4027			err = unpopulate(val, &a.ModifiedDatetimeStart)
4028			delete(rawMsg, key)
4029		case "partitionRootPath":
4030			err = unpopulate(val, &a.PartitionRootPath)
4031			delete(rawMsg, key)
4032		case "prefix":
4033			err = unpopulate(val, &a.Prefix)
4034			delete(rawMsg, key)
4035		case "recursive":
4036			err = unpopulate(val, &a.Recursive)
4037			delete(rawMsg, key)
4038		case "wildcardFileName":
4039			err = unpopulate(val, &a.WildcardFileName)
4040			delete(rawMsg, key)
4041		case "wildcardFolderPath":
4042			err = unpopulate(val, &a.WildcardFolderPath)
4043			delete(rawMsg, key)
4044		}
4045		if err != nil {
4046			return err
4047		}
4048	}
4049	return a.StoreReadSettings.unmarshalInternal(rawMsg)
4050}
4051
4052// AzureFileStorageWriteSettings - Azure File Storage write settings.
4053type AzureFileStorageWriteSettings struct {
4054	StoreWriteSettings
4055}
4056
4057// MarshalJSON implements the json.Marshaller interface for type AzureFileStorageWriteSettings.
4058func (a AzureFileStorageWriteSettings) MarshalJSON() ([]byte, error) {
4059	objectMap := a.StoreWriteSettings.marshalInternal("AzureFileStorageWriteSettings")
4060	return json.Marshal(objectMap)
4061}
4062
4063// AzureFunctionActivity - Azure Function activity.
4064type AzureFunctionActivity struct {
4065	ExecutionActivity
4066	// REQUIRED; Azure Function activity properties.
4067	TypeProperties *AzureFunctionActivityTypeProperties `json:"typeProperties,omitempty"`
4068}
4069
4070// MarshalJSON implements the json.Marshaller interface for type AzureFunctionActivity.
4071func (a AzureFunctionActivity) MarshalJSON() ([]byte, error) {
4072	objectMap := a.ExecutionActivity.marshalInternal("AzureFunctionActivity")
4073	populate(objectMap, "typeProperties", a.TypeProperties)
4074	return json.Marshal(objectMap)
4075}
4076
4077// UnmarshalJSON implements the json.Unmarshaller interface for type AzureFunctionActivity.
4078func (a *AzureFunctionActivity) UnmarshalJSON(data []byte) error {
4079	var rawMsg map[string]json.RawMessage
4080	if err := json.Unmarshal(data, &rawMsg); err != nil {
4081		return err
4082	}
4083	for key, val := range rawMsg {
4084		var err error
4085		switch key {
4086		case "typeProperties":
4087			err = unpopulate(val, &a.TypeProperties)
4088			delete(rawMsg, key)
4089		}
4090		if err != nil {
4091			return err
4092		}
4093	}
4094	return a.ExecutionActivity.unmarshalInternal(rawMsg)
4095}
4096
4097// AzureFunctionActivityTypeProperties - Azure Function activity type properties.
4098type AzureFunctionActivityTypeProperties struct {
4099	// REQUIRED; Name of the Function that the Azure Function Activity will call. Type: string (or Expression with resultType string)
4100	FunctionName interface{} `json:"functionName,omitempty"`
4101
4102	// REQUIRED; Rest API method for target endpoint.
4103	Method *AzureFunctionActivityMethod `json:"method,omitempty"`
4104
4105	// Represents the payload that will be sent to the endpoint. Required for POST/PUT method, not allowed for GET method Type: string (or Expression with resultType
4106	// string).
4107	Body interface{} `json:"body,omitempty"`
4108
4109	// Represents the headers that will be sent to the request. For example, to set the language and type on a request: "headers" : { "Accept-Language": "en-us",
4110	// "Content-Type": "application/json" }. Type:
4111	// string (or Expression with resultType string).
4112	Headers interface{} `json:"headers,omitempty"`
4113}
4114
4115// AzureFunctionLinkedService - Azure Function linked service.
4116type AzureFunctionLinkedService struct {
4117	LinkedService
4118	// REQUIRED; Azure Function linked service properties.
4119	TypeProperties *AzureFunctionLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
4120}
4121
4122// MarshalJSON implements the json.Marshaller interface for type AzureFunctionLinkedService.
4123func (a AzureFunctionLinkedService) MarshalJSON() ([]byte, error) {
4124	objectMap := a.LinkedService.marshalInternal("AzureFunction")
4125	populate(objectMap, "typeProperties", a.TypeProperties)
4126	return json.Marshal(objectMap)
4127}
4128
4129// UnmarshalJSON implements the json.Unmarshaller interface for type AzureFunctionLinkedService.
4130func (a *AzureFunctionLinkedService) UnmarshalJSON(data []byte) error {
4131	var rawMsg map[string]json.RawMessage
4132	if err := json.Unmarshal(data, &rawMsg); err != nil {
4133		return err
4134	}
4135	for key, val := range rawMsg {
4136		var err error
4137		switch key {
4138		case "typeProperties":
4139			err = unpopulate(val, &a.TypeProperties)
4140			delete(rawMsg, key)
4141		}
4142		if err != nil {
4143			return err
4144		}
4145	}
4146	return a.LinkedService.unmarshalInternal(rawMsg)
4147}
4148
4149// AzureFunctionLinkedServiceTypeProperties - Azure Function linked service properties.
4150type AzureFunctionLinkedServiceTypeProperties struct {
4151	// REQUIRED; The endpoint of the Azure Function App. URL will be in the format https://.azurewebsites.net.
4152	FunctionAppURL interface{} `json:"functionAppUrl,omitempty"`
4153
4154	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
4155	// with resultType string).
4156	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
4157
4158	// Function or Host key for Azure Function App.
4159	FunctionKey SecretBaseClassification `json:"functionKey,omitempty"`
4160}
4161
4162// MarshalJSON implements the json.Marshaller interface for type AzureFunctionLinkedServiceTypeProperties.
4163func (a AzureFunctionLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
4164	objectMap := make(map[string]interface{})
4165	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
4166	populate(objectMap, "functionAppUrl", a.FunctionAppURL)
4167	populate(objectMap, "functionKey", a.FunctionKey)
4168	return json.Marshal(objectMap)
4169}
4170
4171// UnmarshalJSON implements the json.Unmarshaller interface for type AzureFunctionLinkedServiceTypeProperties.
4172func (a *AzureFunctionLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
4173	var rawMsg map[string]json.RawMessage
4174	if err := json.Unmarshal(data, &rawMsg); err != nil {
4175		return err
4176	}
4177	for key, val := range rawMsg {
4178		var err error
4179		switch key {
4180		case "encryptedCredential":
4181			err = unpopulate(val, &a.EncryptedCredential)
4182			delete(rawMsg, key)
4183		case "functionAppUrl":
4184			err = unpopulate(val, &a.FunctionAppURL)
4185			delete(rawMsg, key)
4186		case "functionKey":
4187			a.FunctionKey, err = unmarshalSecretBaseClassification(val)
4188			delete(rawMsg, key)
4189		}
4190		if err != nil {
4191			return err
4192		}
4193	}
4194	return nil
4195}
4196
4197// AzureKeyVaultLinkedService - Azure Key Vault linked service.
4198type AzureKeyVaultLinkedService struct {
4199	LinkedService
4200	// REQUIRED; Azure Key Vault linked service properties.
4201	TypeProperties *AzureKeyVaultLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
4202}
4203
4204// MarshalJSON implements the json.Marshaller interface for type AzureKeyVaultLinkedService.
4205func (a AzureKeyVaultLinkedService) MarshalJSON() ([]byte, error) {
4206	objectMap := a.LinkedService.marshalInternal("AzureKeyVault")
4207	populate(objectMap, "typeProperties", a.TypeProperties)
4208	return json.Marshal(objectMap)
4209}
4210
4211// UnmarshalJSON implements the json.Unmarshaller interface for type AzureKeyVaultLinkedService.
4212func (a *AzureKeyVaultLinkedService) UnmarshalJSON(data []byte) error {
4213	var rawMsg map[string]json.RawMessage
4214	if err := json.Unmarshal(data, &rawMsg); err != nil {
4215		return err
4216	}
4217	for key, val := range rawMsg {
4218		var err error
4219		switch key {
4220		case "typeProperties":
4221			err = unpopulate(val, &a.TypeProperties)
4222			delete(rawMsg, key)
4223		}
4224		if err != nil {
4225			return err
4226		}
4227	}
4228	return a.LinkedService.unmarshalInternal(rawMsg)
4229}
4230
4231// AzureKeyVaultLinkedServiceTypeProperties - Azure Key Vault linked service properties.
4232type AzureKeyVaultLinkedServiceTypeProperties struct {
4233	// REQUIRED; The base URL of the Azure Key Vault. e.g. https://myakv.vault.azure.net Type: string (or Expression with resultType string).
4234	BaseURL interface{} `json:"baseUrl,omitempty"`
4235}
4236
4237// AzureKeyVaultSecretReference - Azure Key Vault secret reference.
4238type AzureKeyVaultSecretReference struct {
4239	SecretBase
4240	// REQUIRED; The name of the secret in Azure Key Vault. Type: string (or Expression with resultType string).
4241	SecretName interface{} `json:"secretName,omitempty"`
4242
4243	// REQUIRED; The Azure Key Vault linked service reference.
4244	Store *LinkedServiceReference `json:"store,omitempty"`
4245
4246	// The version of the secret in Azure Key Vault. The default value is the latest version of the secret. Type: string (or Expression with resultType string).
4247	SecretVersion interface{} `json:"secretVersion,omitempty"`
4248}
4249
4250// MarshalJSON implements the json.Marshaller interface for type AzureKeyVaultSecretReference.
4251func (a AzureKeyVaultSecretReference) MarshalJSON() ([]byte, error) {
4252	objectMap := a.SecretBase.marshalInternal("AzureKeyVaultSecret")
4253	populate(objectMap, "secretName", a.SecretName)
4254	populate(objectMap, "secretVersion", a.SecretVersion)
4255	populate(objectMap, "store", a.Store)
4256	return json.Marshal(objectMap)
4257}
4258
4259// UnmarshalJSON implements the json.Unmarshaller interface for type AzureKeyVaultSecretReference.
4260func (a *AzureKeyVaultSecretReference) UnmarshalJSON(data []byte) error {
4261	var rawMsg map[string]json.RawMessage
4262	if err := json.Unmarshal(data, &rawMsg); err != nil {
4263		return err
4264	}
4265	for key, val := range rawMsg {
4266		var err error
4267		switch key {
4268		case "secretName":
4269			err = unpopulate(val, &a.SecretName)
4270			delete(rawMsg, key)
4271		case "secretVersion":
4272			err = unpopulate(val, &a.SecretVersion)
4273			delete(rawMsg, key)
4274		case "store":
4275			err = unpopulate(val, &a.Store)
4276			delete(rawMsg, key)
4277		}
4278		if err != nil {
4279			return err
4280		}
4281	}
4282	return a.SecretBase.unmarshalInternal(rawMsg)
4283}
4284
4285// AzureMLBatchExecutionActivity - Azure ML Batch Execution activity.
4286type AzureMLBatchExecutionActivity struct {
4287	ExecutionActivity
4288	// REQUIRED; Azure ML Batch Execution activity properties.
4289	TypeProperties *AzureMLBatchExecutionActivityTypeProperties `json:"typeProperties,omitempty"`
4290}
4291
4292// MarshalJSON implements the json.Marshaller interface for type AzureMLBatchExecutionActivity.
4293func (a AzureMLBatchExecutionActivity) MarshalJSON() ([]byte, error) {
4294	objectMap := a.ExecutionActivity.marshalInternal("AzureMLBatchExecution")
4295	populate(objectMap, "typeProperties", a.TypeProperties)
4296	return json.Marshal(objectMap)
4297}
4298
4299// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMLBatchExecutionActivity.
4300func (a *AzureMLBatchExecutionActivity) UnmarshalJSON(data []byte) error {
4301	var rawMsg map[string]json.RawMessage
4302	if err := json.Unmarshal(data, &rawMsg); err != nil {
4303		return err
4304	}
4305	for key, val := range rawMsg {
4306		var err error
4307		switch key {
4308		case "typeProperties":
4309			err = unpopulate(val, &a.TypeProperties)
4310			delete(rawMsg, key)
4311		}
4312		if err != nil {
4313			return err
4314		}
4315	}
4316	return a.ExecutionActivity.unmarshalInternal(rawMsg)
4317}
4318
4319// AzureMLBatchExecutionActivityTypeProperties - Azure ML Batch Execution activity properties.
4320type AzureMLBatchExecutionActivityTypeProperties struct {
4321	// Key,Value pairs to be passed to the Azure ML Batch Execution Service endpoint. Keys must match the names of web service parameters defined in the published
4322	// Azure ML web service. Values will be passed
4323	// in the GlobalParameters property of the Azure ML batch execution request.
4324	GlobalParameters map[string]interface{} `json:"globalParameters,omitempty"`
4325
4326	// Key,Value pairs, mapping the names of Azure ML endpoint's Web Service Inputs to AzureMLWebServiceFile objects specifying the input Blob locations.. This
4327	// information will be passed in the
4328	// WebServiceInputs property of the Azure ML batch execution request.
4329	WebServiceInputs map[string]*AzureMLWebServiceFile `json:"webServiceInputs,omitempty"`
4330
4331	// Key,Value pairs, mapping the names of Azure ML endpoint's Web Service Outputs to AzureMLWebServiceFile objects specifying the output Blob locations.
4332	// This information will be passed in the
4333	// WebServiceOutputs property of the Azure ML batch execution request.
4334	WebServiceOutputs map[string]*AzureMLWebServiceFile `json:"webServiceOutputs,omitempty"`
4335}
4336
4337// MarshalJSON implements the json.Marshaller interface for type AzureMLBatchExecutionActivityTypeProperties.
4338func (a AzureMLBatchExecutionActivityTypeProperties) MarshalJSON() ([]byte, error) {
4339	objectMap := make(map[string]interface{})
4340	populate(objectMap, "globalParameters", a.GlobalParameters)
4341	populate(objectMap, "webServiceInputs", a.WebServiceInputs)
4342	populate(objectMap, "webServiceOutputs", a.WebServiceOutputs)
4343	return json.Marshal(objectMap)
4344}
4345
4346// AzureMLExecutePipelineActivity - Azure ML Execute Pipeline activity.
4347type AzureMLExecutePipelineActivity struct {
4348	ExecutionActivity
4349	// REQUIRED; Azure ML Execute Pipeline activity properties.
4350	TypeProperties *AzureMLExecutePipelineActivityTypeProperties `json:"typeProperties,omitempty"`
4351}
4352
4353// MarshalJSON implements the json.Marshaller interface for type AzureMLExecutePipelineActivity.
4354func (a AzureMLExecutePipelineActivity) MarshalJSON() ([]byte, error) {
4355	objectMap := a.ExecutionActivity.marshalInternal("AzureMLExecutePipeline")
4356	populate(objectMap, "typeProperties", a.TypeProperties)
4357	return json.Marshal(objectMap)
4358}
4359
4360// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMLExecutePipelineActivity.
4361func (a *AzureMLExecutePipelineActivity) UnmarshalJSON(data []byte) error {
4362	var rawMsg map[string]json.RawMessage
4363	if err := json.Unmarshal(data, &rawMsg); err != nil {
4364		return err
4365	}
4366	for key, val := range rawMsg {
4367		var err error
4368		switch key {
4369		case "typeProperties":
4370			err = unpopulate(val, &a.TypeProperties)
4371			delete(rawMsg, key)
4372		}
4373		if err != nil {
4374			return err
4375		}
4376	}
4377	return a.ExecutionActivity.unmarshalInternal(rawMsg)
4378}
4379
4380// AzureMLExecutePipelineActivityTypeProperties - Azure ML Execute Pipeline activity properties.
4381type AzureMLExecutePipelineActivityTypeProperties struct {
4382	// REQUIRED; ID of the published Azure ML pipeline. Type: string (or Expression with resultType string).
4383	MlPipelineID interface{} `json:"mlPipelineId,omitempty"`
4384
4385	// Whether to continue execution of other steps in the PipelineRun if a step fails. This information will be passed in the continueOnStepFailure property
4386	// of the published pipeline execution request.
4387	// Type: boolean (or Expression with resultType boolean).
4388	ContinueOnStepFailure interface{} `json:"continueOnStepFailure,omitempty"`
4389
4390	// Run history experiment name of the pipeline run. This information will be passed in the ExperimentName property of the published pipeline execution request.
4391	// Type: string (or Expression with resultType
4392	// string).
4393	ExperimentName interface{} `json:"experimentName,omitempty"`
4394
4395	// The parent Azure ML Service pipeline run id. This information will be passed in the ParentRunId property of the published pipeline execution request.
4396	// Type: string (or Expression with resultType
4397	// string).
4398	MlParentRunID interface{} `json:"mlParentRunId,omitempty"`
4399
4400	// Key,Value pairs to be passed to the published Azure ML pipeline endpoint. Keys must match the names of pipeline parameters defined in the published pipeline.
4401	// Values will be passed in the
4402	// ParameterAssignments property of the published pipeline execution request. Type: object with key value pairs (or Expression with resultType object).
4403	MlPipelineParameters interface{} `json:"mlPipelineParameters,omitempty"`
4404}
4405
4406// AzureMLLinkedService - Azure ML Studio Web Service linked service.
4407type AzureMLLinkedService struct {
4408	LinkedService
4409	// REQUIRED; Azure ML Studio Web Service linked service properties.
4410	TypeProperties *AzureMLLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
4411}
4412
4413// MarshalJSON implements the json.Marshaller interface for type AzureMLLinkedService.
4414func (a AzureMLLinkedService) MarshalJSON() ([]byte, error) {
4415	objectMap := a.LinkedService.marshalInternal("AzureML")
4416	populate(objectMap, "typeProperties", a.TypeProperties)
4417	return json.Marshal(objectMap)
4418}
4419
4420// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMLLinkedService.
4421func (a *AzureMLLinkedService) UnmarshalJSON(data []byte) error {
4422	var rawMsg map[string]json.RawMessage
4423	if err := json.Unmarshal(data, &rawMsg); err != nil {
4424		return err
4425	}
4426	for key, val := range rawMsg {
4427		var err error
4428		switch key {
4429		case "typeProperties":
4430			err = unpopulate(val, &a.TypeProperties)
4431			delete(rawMsg, key)
4432		}
4433		if err != nil {
4434			return err
4435		}
4436	}
4437	return a.LinkedService.unmarshalInternal(rawMsg)
4438}
4439
4440// AzureMLLinkedServiceTypeProperties - Azure ML Studio Web Service linked service properties.
4441type AzureMLLinkedServiceTypeProperties struct {
4442	// REQUIRED; The API key for accessing the Azure ML model endpoint.
4443	APIKey SecretBaseClassification `json:"apiKey,omitempty"`
4444
4445	// REQUIRED; The Batch Execution REST URL for an Azure ML Studio Web Service endpoint. Type: string (or Expression with resultType string).
4446	MlEndpoint interface{} `json:"mlEndpoint,omitempty"`
4447
4448	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
4449	// with resultType string).
4450	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
4451
4452	// The ID of the service principal used to authenticate against the ARM-based updateResourceEndpoint of an Azure ML Studio web service. Type: string (or
4453	// Expression with resultType string).
4454	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
4455
4456	// The key of the service principal used to authenticate against the ARM-based updateResourceEndpoint of an Azure ML Studio web service.
4457	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
4458
4459	// The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
4460	Tenant interface{} `json:"tenant,omitempty"`
4461
4462	// The Update Resource REST URL for an Azure ML Studio Web Service endpoint. Type: string (or Expression with resultType string).
4463	UpdateResourceEndpoint interface{} `json:"updateResourceEndpoint,omitempty"`
4464}
4465
4466// MarshalJSON implements the json.Marshaller interface for type AzureMLLinkedServiceTypeProperties.
4467func (a AzureMLLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
4468	objectMap := make(map[string]interface{})
4469	populate(objectMap, "apiKey", a.APIKey)
4470	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
4471	populate(objectMap, "mlEndpoint", a.MlEndpoint)
4472	populate(objectMap, "servicePrincipalId", a.ServicePrincipalID)
4473	populate(objectMap, "servicePrincipalKey", a.ServicePrincipalKey)
4474	populate(objectMap, "tenant", a.Tenant)
4475	populate(objectMap, "updateResourceEndpoint", a.UpdateResourceEndpoint)
4476	return json.Marshal(objectMap)
4477}
4478
4479// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMLLinkedServiceTypeProperties.
4480func (a *AzureMLLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
4481	var rawMsg map[string]json.RawMessage
4482	if err := json.Unmarshal(data, &rawMsg); err != nil {
4483		return err
4484	}
4485	for key, val := range rawMsg {
4486		var err error
4487		switch key {
4488		case "apiKey":
4489			a.APIKey, err = unmarshalSecretBaseClassification(val)
4490			delete(rawMsg, key)
4491		case "encryptedCredential":
4492			err = unpopulate(val, &a.EncryptedCredential)
4493			delete(rawMsg, key)
4494		case "mlEndpoint":
4495			err = unpopulate(val, &a.MlEndpoint)
4496			delete(rawMsg, key)
4497		case "servicePrincipalId":
4498			err = unpopulate(val, &a.ServicePrincipalID)
4499			delete(rawMsg, key)
4500		case "servicePrincipalKey":
4501			a.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
4502			delete(rawMsg, key)
4503		case "tenant":
4504			err = unpopulate(val, &a.Tenant)
4505			delete(rawMsg, key)
4506		case "updateResourceEndpoint":
4507			err = unpopulate(val, &a.UpdateResourceEndpoint)
4508			delete(rawMsg, key)
4509		}
4510		if err != nil {
4511			return err
4512		}
4513	}
4514	return nil
4515}
4516
4517// AzureMLServiceLinkedService - Azure ML Service linked service.
4518type AzureMLServiceLinkedService struct {
4519	LinkedService
4520	// REQUIRED; Azure ML Service linked service properties.
4521	TypeProperties *AzureMLServiceLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
4522}
4523
4524// MarshalJSON implements the json.Marshaller interface for type AzureMLServiceLinkedService.
4525func (a AzureMLServiceLinkedService) MarshalJSON() ([]byte, error) {
4526	objectMap := a.LinkedService.marshalInternal("AzureMLService")
4527	populate(objectMap, "typeProperties", a.TypeProperties)
4528	return json.Marshal(objectMap)
4529}
4530
4531// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMLServiceLinkedService.
4532func (a *AzureMLServiceLinkedService) UnmarshalJSON(data []byte) error {
4533	var rawMsg map[string]json.RawMessage
4534	if err := json.Unmarshal(data, &rawMsg); err != nil {
4535		return err
4536	}
4537	for key, val := range rawMsg {
4538		var err error
4539		switch key {
4540		case "typeProperties":
4541			err = unpopulate(val, &a.TypeProperties)
4542			delete(rawMsg, key)
4543		}
4544		if err != nil {
4545			return err
4546		}
4547	}
4548	return a.LinkedService.unmarshalInternal(rawMsg)
4549}
4550
4551// AzureMLServiceLinkedServiceTypeProperties - Azure ML Service linked service properties.
4552type AzureMLServiceLinkedServiceTypeProperties struct {
4553	// REQUIRED; Azure ML Service workspace name. Type: string (or Expression with resultType string).
4554	MlWorkspaceName interface{} `json:"mlWorkspaceName,omitempty"`
4555
4556	// REQUIRED; Azure ML Service workspace resource group name. Type: string (or Expression with resultType string).
4557	ResourceGroupName interface{} `json:"resourceGroupName,omitempty"`
4558
4559	// REQUIRED; Azure ML Service workspace subscription ID. Type: string (or Expression with resultType string).
4560	SubscriptionID interface{} `json:"subscriptionId,omitempty"`
4561
4562	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
4563	// with resultType string).
4564	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
4565
4566	// The ID of the service principal used to authenticate against the endpoint of a published Azure ML Service pipeline. Type: string (or Expression with
4567	// resultType string).
4568	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
4569
4570	// The key of the service principal used to authenticate against the endpoint of a published Azure ML Service pipeline.
4571	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
4572
4573	// The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
4574	Tenant interface{} `json:"tenant,omitempty"`
4575}
4576
4577// MarshalJSON implements the json.Marshaller interface for type AzureMLServiceLinkedServiceTypeProperties.
4578func (a AzureMLServiceLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
4579	objectMap := make(map[string]interface{})
4580	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
4581	populate(objectMap, "mlWorkspaceName", a.MlWorkspaceName)
4582	populate(objectMap, "resourceGroupName", a.ResourceGroupName)
4583	populate(objectMap, "servicePrincipalId", a.ServicePrincipalID)
4584	populate(objectMap, "servicePrincipalKey", a.ServicePrincipalKey)
4585	populate(objectMap, "subscriptionId", a.SubscriptionID)
4586	populate(objectMap, "tenant", a.Tenant)
4587	return json.Marshal(objectMap)
4588}
4589
4590// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMLServiceLinkedServiceTypeProperties.
4591func (a *AzureMLServiceLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
4592	var rawMsg map[string]json.RawMessage
4593	if err := json.Unmarshal(data, &rawMsg); err != nil {
4594		return err
4595	}
4596	for key, val := range rawMsg {
4597		var err error
4598		switch key {
4599		case "encryptedCredential":
4600			err = unpopulate(val, &a.EncryptedCredential)
4601			delete(rawMsg, key)
4602		case "mlWorkspaceName":
4603			err = unpopulate(val, &a.MlWorkspaceName)
4604			delete(rawMsg, key)
4605		case "resourceGroupName":
4606			err = unpopulate(val, &a.ResourceGroupName)
4607			delete(rawMsg, key)
4608		case "servicePrincipalId":
4609			err = unpopulate(val, &a.ServicePrincipalID)
4610			delete(rawMsg, key)
4611		case "servicePrincipalKey":
4612			a.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
4613			delete(rawMsg, key)
4614		case "subscriptionId":
4615			err = unpopulate(val, &a.SubscriptionID)
4616			delete(rawMsg, key)
4617		case "tenant":
4618			err = unpopulate(val, &a.Tenant)
4619			delete(rawMsg, key)
4620		}
4621		if err != nil {
4622			return err
4623		}
4624	}
4625	return nil
4626}
4627
4628// AzureMLUpdateResourceActivity - Azure ML Update Resource management activity.
4629type AzureMLUpdateResourceActivity struct {
4630	ExecutionActivity
4631	// REQUIRED; Azure ML Update Resource management activity properties.
4632	TypeProperties *AzureMLUpdateResourceActivityTypeProperties `json:"typeProperties,omitempty"`
4633}
4634
4635// MarshalJSON implements the json.Marshaller interface for type AzureMLUpdateResourceActivity.
4636func (a AzureMLUpdateResourceActivity) MarshalJSON() ([]byte, error) {
4637	objectMap := a.ExecutionActivity.marshalInternal("AzureMLUpdateResource")
4638	populate(objectMap, "typeProperties", a.TypeProperties)
4639	return json.Marshal(objectMap)
4640}
4641
4642// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMLUpdateResourceActivity.
4643func (a *AzureMLUpdateResourceActivity) UnmarshalJSON(data []byte) error {
4644	var rawMsg map[string]json.RawMessage
4645	if err := json.Unmarshal(data, &rawMsg); err != nil {
4646		return err
4647	}
4648	for key, val := range rawMsg {
4649		var err error
4650		switch key {
4651		case "typeProperties":
4652			err = unpopulate(val, &a.TypeProperties)
4653			delete(rawMsg, key)
4654		}
4655		if err != nil {
4656			return err
4657		}
4658	}
4659	return a.ExecutionActivity.unmarshalInternal(rawMsg)
4660}
4661
4662// AzureMLUpdateResourceActivityTypeProperties - Azure ML Update Resource activity properties.
4663type AzureMLUpdateResourceActivityTypeProperties struct {
4664	// REQUIRED; The relative file path in trainedModelLinkedService to represent the .ilearner file that will be uploaded by the update operation. Type: string
4665	// (or Expression with resultType string).
4666	TrainedModelFilePath interface{} `json:"trainedModelFilePath,omitempty"`
4667
4668	// REQUIRED; Name of Azure Storage linked service holding the .ilearner file that will be uploaded by the update operation.
4669	TrainedModelLinkedServiceName *LinkedServiceReference `json:"trainedModelLinkedServiceName,omitempty"`
4670
4671	// REQUIRED; Name of the Trained Model module in the Web Service experiment to be updated. Type: string (or Expression with resultType string).
4672	TrainedModelName interface{} `json:"trainedModelName,omitempty"`
4673}
4674
4675// AzureMLWebServiceFile - Azure ML WebService Input/Output file
4676type AzureMLWebServiceFile struct {
4677	// REQUIRED; The relative file path, including container name, in the Azure Blob Storage specified by the LinkedService. Type: string (or Expression with
4678	// resultType string).
4679	FilePath interface{} `json:"filePath,omitempty"`
4680
4681	// REQUIRED; Reference to an Azure Storage LinkedService, where Azure ML WebService Input/Output file located.
4682	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
4683}
4684
4685// AzureMariaDBLinkedService - Azure Database for MariaDB linked service.
4686type AzureMariaDBLinkedService struct {
4687	LinkedService
4688	// REQUIRED; Azure Database for MariaDB linked service properties.
4689	TypeProperties *AzureMariaDBLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
4690}
4691
4692// MarshalJSON implements the json.Marshaller interface for type AzureMariaDBLinkedService.
4693func (a AzureMariaDBLinkedService) MarshalJSON() ([]byte, error) {
4694	objectMap := a.LinkedService.marshalInternal("AzureMariaDB")
4695	populate(objectMap, "typeProperties", a.TypeProperties)
4696	return json.Marshal(objectMap)
4697}
4698
4699// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMariaDBLinkedService.
4700func (a *AzureMariaDBLinkedService) UnmarshalJSON(data []byte) error {
4701	var rawMsg map[string]json.RawMessage
4702	if err := json.Unmarshal(data, &rawMsg); err != nil {
4703		return err
4704	}
4705	for key, val := range rawMsg {
4706		var err error
4707		switch key {
4708		case "typeProperties":
4709			err = unpopulate(val, &a.TypeProperties)
4710			delete(rawMsg, key)
4711		}
4712		if err != nil {
4713			return err
4714		}
4715	}
4716	return a.LinkedService.unmarshalInternal(rawMsg)
4717}
4718
4719// AzureMariaDBLinkedServiceTypeProperties - Azure Database for MariaDB linked service properties.
4720type AzureMariaDBLinkedServiceTypeProperties struct {
4721	// An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
4722	ConnectionString interface{} `json:"connectionString,omitempty"`
4723
4724	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
4725	// with resultType string).
4726	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
4727
4728	// The Azure key vault secret reference of password in connection string.
4729	Pwd *AzureKeyVaultSecretReference `json:"pwd,omitempty"`
4730}
4731
4732// AzureMariaDBSource - A copy activity Azure MariaDB source.
4733type AzureMariaDBSource struct {
4734	TabularSource
4735	// A query to retrieve data from source. Type: string (or Expression with resultType string).
4736	Query interface{} `json:"query,omitempty"`
4737}
4738
4739// MarshalJSON implements the json.Marshaller interface for type AzureMariaDBSource.
4740func (a AzureMariaDBSource) MarshalJSON() ([]byte, error) {
4741	objectMap := a.TabularSource.marshalInternal("AzureMariaDBSource")
4742	populate(objectMap, "query", a.Query)
4743	return json.Marshal(objectMap)
4744}
4745
4746// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMariaDBSource.
4747func (a *AzureMariaDBSource) UnmarshalJSON(data []byte) error {
4748	var rawMsg map[string]json.RawMessage
4749	if err := json.Unmarshal(data, &rawMsg); err != nil {
4750		return err
4751	}
4752	for key, val := range rawMsg {
4753		var err error
4754		switch key {
4755		case "query":
4756			err = unpopulate(val, &a.Query)
4757			delete(rawMsg, key)
4758		}
4759		if err != nil {
4760			return err
4761		}
4762	}
4763	return a.TabularSource.unmarshalInternal(rawMsg)
4764}
4765
4766// AzureMariaDBTableDataset - Azure Database for MariaDB dataset.
4767type AzureMariaDBTableDataset struct {
4768	Dataset
4769	// Properties specific to this dataset type.
4770	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
4771}
4772
4773// MarshalJSON implements the json.Marshaller interface for type AzureMariaDBTableDataset.
4774func (a AzureMariaDBTableDataset) MarshalJSON() ([]byte, error) {
4775	objectMap := a.Dataset.marshalInternal("AzureMariaDBTable")
4776	populate(objectMap, "typeProperties", a.TypeProperties)
4777	return json.Marshal(objectMap)
4778}
4779
4780// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMariaDBTableDataset.
4781func (a *AzureMariaDBTableDataset) UnmarshalJSON(data []byte) error {
4782	var rawMsg map[string]json.RawMessage
4783	if err := json.Unmarshal(data, &rawMsg); err != nil {
4784		return err
4785	}
4786	for key, val := range rawMsg {
4787		var err error
4788		switch key {
4789		case "typeProperties":
4790			err = unpopulate(val, &a.TypeProperties)
4791			delete(rawMsg, key)
4792		}
4793		if err != nil {
4794			return err
4795		}
4796	}
4797	return a.Dataset.unmarshalInternal(rawMsg)
4798}
4799
4800// AzureMySQLLinkedService - Azure MySQL database linked service.
4801type AzureMySQLLinkedService struct {
4802	LinkedService
4803	// REQUIRED; Azure MySQL database linked service properties.
4804	TypeProperties *AzureMySQLLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
4805}
4806
4807// MarshalJSON implements the json.Marshaller interface for type AzureMySQLLinkedService.
4808func (a AzureMySQLLinkedService) MarshalJSON() ([]byte, error) {
4809	objectMap := a.LinkedService.marshalInternal("AzureMySql")
4810	populate(objectMap, "typeProperties", a.TypeProperties)
4811	return json.Marshal(objectMap)
4812}
4813
4814// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMySQLLinkedService.
4815func (a *AzureMySQLLinkedService) UnmarshalJSON(data []byte) error {
4816	var rawMsg map[string]json.RawMessage
4817	if err := json.Unmarshal(data, &rawMsg); err != nil {
4818		return err
4819	}
4820	for key, val := range rawMsg {
4821		var err error
4822		switch key {
4823		case "typeProperties":
4824			err = unpopulate(val, &a.TypeProperties)
4825			delete(rawMsg, key)
4826		}
4827		if err != nil {
4828			return err
4829		}
4830	}
4831	return a.LinkedService.unmarshalInternal(rawMsg)
4832}
4833
4834// AzureMySQLLinkedServiceTypeProperties - Azure MySQL database linked service properties.
4835type AzureMySQLLinkedServiceTypeProperties struct {
4836	// REQUIRED; The connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
4837	ConnectionString interface{} `json:"connectionString,omitempty"`
4838
4839	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
4840	// with resultType string).
4841	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
4842
4843	// The Azure key vault secret reference of password in connection string.
4844	Password *AzureKeyVaultSecretReference `json:"password,omitempty"`
4845}
4846
4847// AzureMySQLSink - A copy activity Azure MySql sink.
4848type AzureMySQLSink struct {
4849	CopySink
4850	// A query to execute before starting the copy. Type: string (or Expression with resultType string).
4851	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
4852}
4853
4854// MarshalJSON implements the json.Marshaller interface for type AzureMySQLSink.
4855func (a AzureMySQLSink) MarshalJSON() ([]byte, error) {
4856	objectMap := a.CopySink.marshalInternal("AzureMySqlSink")
4857	populate(objectMap, "preCopyScript", a.PreCopyScript)
4858	return json.Marshal(objectMap)
4859}
4860
4861// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMySQLSink.
4862func (a *AzureMySQLSink) UnmarshalJSON(data []byte) error {
4863	var rawMsg map[string]json.RawMessage
4864	if err := json.Unmarshal(data, &rawMsg); err != nil {
4865		return err
4866	}
4867	for key, val := range rawMsg {
4868		var err error
4869		switch key {
4870		case "preCopyScript":
4871			err = unpopulate(val, &a.PreCopyScript)
4872			delete(rawMsg, key)
4873		}
4874		if err != nil {
4875			return err
4876		}
4877	}
4878	return a.CopySink.unmarshalInternal(rawMsg)
4879}
4880
4881// AzureMySQLSource - A copy activity Azure MySQL source.
4882type AzureMySQLSource struct {
4883	TabularSource
4884	// Database query. Type: string (or Expression with resultType string).
4885	Query interface{} `json:"query,omitempty"`
4886}
4887
4888// MarshalJSON implements the json.Marshaller interface for type AzureMySQLSource.
4889func (a AzureMySQLSource) MarshalJSON() ([]byte, error) {
4890	objectMap := a.TabularSource.marshalInternal("AzureMySqlSource")
4891	populate(objectMap, "query", a.Query)
4892	return json.Marshal(objectMap)
4893}
4894
4895// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMySQLSource.
4896func (a *AzureMySQLSource) UnmarshalJSON(data []byte) error {
4897	var rawMsg map[string]json.RawMessage
4898	if err := json.Unmarshal(data, &rawMsg); err != nil {
4899		return err
4900	}
4901	for key, val := range rawMsg {
4902		var err error
4903		switch key {
4904		case "query":
4905			err = unpopulate(val, &a.Query)
4906			delete(rawMsg, key)
4907		}
4908		if err != nil {
4909			return err
4910		}
4911	}
4912	return a.TabularSource.unmarshalInternal(rawMsg)
4913}
4914
4915// AzureMySQLTableDataset - The Azure MySQL database dataset.
4916type AzureMySQLTableDataset struct {
4917	Dataset
4918	// REQUIRED; Azure MySQL database dataset properties.
4919	TypeProperties *AzureMySQLTableDatasetTypeProperties `json:"typeProperties,omitempty"`
4920}
4921
4922// MarshalJSON implements the json.Marshaller interface for type AzureMySQLTableDataset.
4923func (a AzureMySQLTableDataset) MarshalJSON() ([]byte, error) {
4924	objectMap := a.Dataset.marshalInternal("AzureMySqlTable")
4925	populate(objectMap, "typeProperties", a.TypeProperties)
4926	return json.Marshal(objectMap)
4927}
4928
4929// UnmarshalJSON implements the json.Unmarshaller interface for type AzureMySQLTableDataset.
4930func (a *AzureMySQLTableDataset) UnmarshalJSON(data []byte) error {
4931	var rawMsg map[string]json.RawMessage
4932	if err := json.Unmarshal(data, &rawMsg); err != nil {
4933		return err
4934	}
4935	for key, val := range rawMsg {
4936		var err error
4937		switch key {
4938		case "typeProperties":
4939			err = unpopulate(val, &a.TypeProperties)
4940			delete(rawMsg, key)
4941		}
4942		if err != nil {
4943			return err
4944		}
4945	}
4946	return a.Dataset.unmarshalInternal(rawMsg)
4947}
4948
4949// AzureMySQLTableDatasetTypeProperties - Azure MySQL database dataset properties.
4950type AzureMySQLTableDatasetTypeProperties struct {
4951	// The name of Azure MySQL database table. Type: string (or Expression with resultType string).
4952	Table interface{} `json:"table,omitempty"`
4953
4954	// The Azure MySQL database table name. Type: string (or Expression with resultType string).
4955	TableName interface{} `json:"tableName,omitempty"`
4956}
4957
4958// AzurePostgreSQLLinkedService - Azure PostgreSQL linked service.
4959type AzurePostgreSQLLinkedService struct {
4960	LinkedService
4961	// REQUIRED; Azure PostgreSQL linked service properties.
4962	TypeProperties *AzurePostgreSQLLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
4963}
4964
4965// MarshalJSON implements the json.Marshaller interface for type AzurePostgreSQLLinkedService.
4966func (a AzurePostgreSQLLinkedService) MarshalJSON() ([]byte, error) {
4967	objectMap := a.LinkedService.marshalInternal("AzurePostgreSql")
4968	populate(objectMap, "typeProperties", a.TypeProperties)
4969	return json.Marshal(objectMap)
4970}
4971
4972// UnmarshalJSON implements the json.Unmarshaller interface for type AzurePostgreSQLLinkedService.
4973func (a *AzurePostgreSQLLinkedService) UnmarshalJSON(data []byte) error {
4974	var rawMsg map[string]json.RawMessage
4975	if err := json.Unmarshal(data, &rawMsg); err != nil {
4976		return err
4977	}
4978	for key, val := range rawMsg {
4979		var err error
4980		switch key {
4981		case "typeProperties":
4982			err = unpopulate(val, &a.TypeProperties)
4983			delete(rawMsg, key)
4984		}
4985		if err != nil {
4986			return err
4987		}
4988	}
4989	return a.LinkedService.unmarshalInternal(rawMsg)
4990}
4991
4992// AzurePostgreSQLLinkedServiceTypeProperties - Azure PostgreSQL linked service properties.
4993type AzurePostgreSQLLinkedServiceTypeProperties struct {
4994	// An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
4995	ConnectionString interface{} `json:"connectionString,omitempty"`
4996
4997	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
4998	// with resultType string).
4999	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
5000
5001	// The Azure key vault secret reference of password in connection string.
5002	Password *AzureKeyVaultSecretReference `json:"password,omitempty"`
5003}
5004
5005// AzurePostgreSQLSink - A copy activity Azure PostgreSQL sink.
5006type AzurePostgreSQLSink struct {
5007	CopySink
5008	// A query to execute before starting the copy. Type: string (or Expression with resultType string).
5009	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
5010}
5011
5012// MarshalJSON implements the json.Marshaller interface for type AzurePostgreSQLSink.
5013func (a AzurePostgreSQLSink) MarshalJSON() ([]byte, error) {
5014	objectMap := a.CopySink.marshalInternal("AzurePostgreSqlSink")
5015	populate(objectMap, "preCopyScript", a.PreCopyScript)
5016	return json.Marshal(objectMap)
5017}
5018
5019// UnmarshalJSON implements the json.Unmarshaller interface for type AzurePostgreSQLSink.
5020func (a *AzurePostgreSQLSink) UnmarshalJSON(data []byte) error {
5021	var rawMsg map[string]json.RawMessage
5022	if err := json.Unmarshal(data, &rawMsg); err != nil {
5023		return err
5024	}
5025	for key, val := range rawMsg {
5026		var err error
5027		switch key {
5028		case "preCopyScript":
5029			err = unpopulate(val, &a.PreCopyScript)
5030			delete(rawMsg, key)
5031		}
5032		if err != nil {
5033			return err
5034		}
5035	}
5036	return a.CopySink.unmarshalInternal(rawMsg)
5037}
5038
5039// AzurePostgreSQLSource - A copy activity Azure PostgreSQL source.
5040type AzurePostgreSQLSource struct {
5041	TabularSource
5042	// A query to retrieve data from source. Type: string (or Expression with resultType string).
5043	Query interface{} `json:"query,omitempty"`
5044}
5045
5046// MarshalJSON implements the json.Marshaller interface for type AzurePostgreSQLSource.
5047func (a AzurePostgreSQLSource) MarshalJSON() ([]byte, error) {
5048	objectMap := a.TabularSource.marshalInternal("AzurePostgreSqlSource")
5049	populate(objectMap, "query", a.Query)
5050	return json.Marshal(objectMap)
5051}
5052
5053// UnmarshalJSON implements the json.Unmarshaller interface for type AzurePostgreSQLSource.
5054func (a *AzurePostgreSQLSource) UnmarshalJSON(data []byte) error {
5055	var rawMsg map[string]json.RawMessage
5056	if err := json.Unmarshal(data, &rawMsg); err != nil {
5057		return err
5058	}
5059	for key, val := range rawMsg {
5060		var err error
5061		switch key {
5062		case "query":
5063			err = unpopulate(val, &a.Query)
5064			delete(rawMsg, key)
5065		}
5066		if err != nil {
5067			return err
5068		}
5069	}
5070	return a.TabularSource.unmarshalInternal(rawMsg)
5071}
5072
5073// AzurePostgreSQLTableDataset - Azure PostgreSQL dataset.
5074type AzurePostgreSQLTableDataset struct {
5075	Dataset
5076	// Properties specific to this dataset type.
5077	TypeProperties *AzurePostgreSQLTableDatasetTypeProperties `json:"typeProperties,omitempty"`
5078}
5079
5080// MarshalJSON implements the json.Marshaller interface for type AzurePostgreSQLTableDataset.
5081func (a AzurePostgreSQLTableDataset) MarshalJSON() ([]byte, error) {
5082	objectMap := a.Dataset.marshalInternal("AzurePostgreSqlTable")
5083	populate(objectMap, "typeProperties", a.TypeProperties)
5084	return json.Marshal(objectMap)
5085}
5086
5087// UnmarshalJSON implements the json.Unmarshaller interface for type AzurePostgreSQLTableDataset.
5088func (a *AzurePostgreSQLTableDataset) UnmarshalJSON(data []byte) error {
5089	var rawMsg map[string]json.RawMessage
5090	if err := json.Unmarshal(data, &rawMsg); err != nil {
5091		return err
5092	}
5093	for key, val := range rawMsg {
5094		var err error
5095		switch key {
5096		case "typeProperties":
5097			err = unpopulate(val, &a.TypeProperties)
5098			delete(rawMsg, key)
5099		}
5100		if err != nil {
5101			return err
5102		}
5103	}
5104	return a.Dataset.unmarshalInternal(rawMsg)
5105}
5106
5107// AzurePostgreSQLTableDatasetTypeProperties - Azure PostgreSQL dataset properties.
5108type AzurePostgreSQLTableDatasetTypeProperties struct {
5109	// The schema name of the Azure PostgreSQL database. Type: string (or Expression with resultType string).
5110	Schema interface{} `json:"schema,omitempty"`
5111
5112	// The table name of the Azure PostgreSQL database. Type: string (or Expression with resultType string).
5113	Table interface{} `json:"table,omitempty"`
5114
5115	// The table name of the Azure PostgreSQL database which includes both schema and table. Type: string (or Expression with resultType string).
5116	TableName interface{} `json:"tableName,omitempty"`
5117}
5118
5119// AzureQueueSink - A copy activity Azure Queue sink.
5120type AzureQueueSink struct {
5121	CopySink
5122}
5123
5124// MarshalJSON implements the json.Marshaller interface for type AzureQueueSink.
5125func (a AzureQueueSink) MarshalJSON() ([]byte, error) {
5126	objectMap := a.CopySink.marshalInternal("AzureQueueSink")
5127	return json.Marshal(objectMap)
5128}
5129
5130// AzureSQLDWLinkedService - Azure SQL Data Warehouse linked service.
5131type AzureSQLDWLinkedService struct {
5132	LinkedService
5133	// REQUIRED; Azure SQL Data Warehouse linked service properties.
5134	TypeProperties *AzureSQLDWLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
5135}
5136
5137// MarshalJSON implements the json.Marshaller interface for type AzureSQLDWLinkedService.
5138func (a AzureSQLDWLinkedService) MarshalJSON() ([]byte, error) {
5139	objectMap := a.LinkedService.marshalInternal("AzureSqlDW")
5140	populate(objectMap, "typeProperties", a.TypeProperties)
5141	return json.Marshal(objectMap)
5142}
5143
5144// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSQLDWLinkedService.
5145func (a *AzureSQLDWLinkedService) UnmarshalJSON(data []byte) error {
5146	var rawMsg map[string]json.RawMessage
5147	if err := json.Unmarshal(data, &rawMsg); err != nil {
5148		return err
5149	}
5150	for key, val := range rawMsg {
5151		var err error
5152		switch key {
5153		case "typeProperties":
5154			err = unpopulate(val, &a.TypeProperties)
5155			delete(rawMsg, key)
5156		}
5157		if err != nil {
5158			return err
5159		}
5160	}
5161	return a.LinkedService.unmarshalInternal(rawMsg)
5162}
5163
5164// AzureSQLDWLinkedServiceTypeProperties - Azure SQL Data Warehouse linked service properties.
5165type AzureSQLDWLinkedServiceTypeProperties struct {
5166	// REQUIRED; The connection string. Type: string, SecureString or AzureKeyVaultSecretReference. Type: string, SecureString or AzureKeyVaultSecretReference.
5167	ConnectionString interface{} `json:"connectionString,omitempty"`
5168
5169	// Indicates the azure cloud type of the service principle auth. Allowed values are AzurePublic, AzureChina, AzureUsGovernment, AzureGermany. Default value
5170	// is the data factory regions’ cloud type. Type:
5171	// string (or Expression with resultType string).
5172	AzureCloudType interface{} `json:"azureCloudType,omitempty"`
5173
5174	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
5175	// with resultType string).
5176	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
5177
5178	// The Azure key vault secret reference of password in connection string.
5179	Password *AzureKeyVaultSecretReference `json:"password,omitempty"`
5180
5181	// The ID of the service principal used to authenticate against Azure SQL Data Warehouse. Type: string (or Expression with resultType string).
5182	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
5183
5184	// The key of the service principal used to authenticate against Azure SQL Data Warehouse.
5185	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
5186
5187	// The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
5188	Tenant interface{} `json:"tenant,omitempty"`
5189}
5190
5191// MarshalJSON implements the json.Marshaller interface for type AzureSQLDWLinkedServiceTypeProperties.
5192func (a AzureSQLDWLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
5193	objectMap := make(map[string]interface{})
5194	populate(objectMap, "azureCloudType", a.AzureCloudType)
5195	populate(objectMap, "connectionString", a.ConnectionString)
5196	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
5197	populate(objectMap, "password", a.Password)
5198	populate(objectMap, "servicePrincipalId", a.ServicePrincipalID)
5199	populate(objectMap, "servicePrincipalKey", a.ServicePrincipalKey)
5200	populate(objectMap, "tenant", a.Tenant)
5201	return json.Marshal(objectMap)
5202}
5203
5204// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSQLDWLinkedServiceTypeProperties.
5205func (a *AzureSQLDWLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
5206	var rawMsg map[string]json.RawMessage
5207	if err := json.Unmarshal(data, &rawMsg); err != nil {
5208		return err
5209	}
5210	for key, val := range rawMsg {
5211		var err error
5212		switch key {
5213		case "azureCloudType":
5214			err = unpopulate(val, &a.AzureCloudType)
5215			delete(rawMsg, key)
5216		case "connectionString":
5217			err = unpopulate(val, &a.ConnectionString)
5218			delete(rawMsg, key)
5219		case "encryptedCredential":
5220			err = unpopulate(val, &a.EncryptedCredential)
5221			delete(rawMsg, key)
5222		case "password":
5223			err = unpopulate(val, &a.Password)
5224			delete(rawMsg, key)
5225		case "servicePrincipalId":
5226			err = unpopulate(val, &a.ServicePrincipalID)
5227			delete(rawMsg, key)
5228		case "servicePrincipalKey":
5229			a.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
5230			delete(rawMsg, key)
5231		case "tenant":
5232			err = unpopulate(val, &a.Tenant)
5233			delete(rawMsg, key)
5234		}
5235		if err != nil {
5236			return err
5237		}
5238	}
5239	return nil
5240}
5241
5242// AzureSQLDWTableDataset - The Azure SQL Data Warehouse dataset.
5243type AzureSQLDWTableDataset struct {
5244	Dataset
5245	// Azure SQL Data Warehouse dataset properties.
5246	TypeProperties *AzureSQLDWTableDatasetTypeProperties `json:"typeProperties,omitempty"`
5247}
5248
5249// MarshalJSON implements the json.Marshaller interface for type AzureSQLDWTableDataset.
5250func (a AzureSQLDWTableDataset) MarshalJSON() ([]byte, error) {
5251	objectMap := a.Dataset.marshalInternal("AzureSqlDWTable")
5252	populate(objectMap, "typeProperties", a.TypeProperties)
5253	return json.Marshal(objectMap)
5254}
5255
5256// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSQLDWTableDataset.
5257func (a *AzureSQLDWTableDataset) UnmarshalJSON(data []byte) error {
5258	var rawMsg map[string]json.RawMessage
5259	if err := json.Unmarshal(data, &rawMsg); err != nil {
5260		return err
5261	}
5262	for key, val := range rawMsg {
5263		var err error
5264		switch key {
5265		case "typeProperties":
5266			err = unpopulate(val, &a.TypeProperties)
5267			delete(rawMsg, key)
5268		}
5269		if err != nil {
5270			return err
5271		}
5272	}
5273	return a.Dataset.unmarshalInternal(rawMsg)
5274}
5275
5276// AzureSQLDWTableDatasetTypeProperties - Azure SQL Data Warehouse dataset properties.
5277type AzureSQLDWTableDatasetTypeProperties struct {
5278	// The schema name of the Azure SQL Data Warehouse. Type: string (or Expression with resultType string).
5279	Schema interface{} `json:"schema,omitempty"`
5280
5281	// The table name of the Azure SQL Data Warehouse. Type: string (or Expression with resultType string).
5282	Table interface{} `json:"table,omitempty"`
5283
5284	// This property will be retired. Please consider using schema + table properties instead.
5285	TableName interface{} `json:"tableName,omitempty"`
5286}
5287
5288// AzureSQLDatabaseLinkedService - Microsoft Azure SQL Database linked service.
5289type AzureSQLDatabaseLinkedService struct {
5290	LinkedService
5291	// REQUIRED; Azure SQL Database linked service properties.
5292	TypeProperties *AzureSQLDatabaseLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
5293}
5294
5295// MarshalJSON implements the json.Marshaller interface for type AzureSQLDatabaseLinkedService.
5296func (a AzureSQLDatabaseLinkedService) MarshalJSON() ([]byte, error) {
5297	objectMap := a.LinkedService.marshalInternal("AzureSqlDatabase")
5298	populate(objectMap, "typeProperties", a.TypeProperties)
5299	return json.Marshal(objectMap)
5300}
5301
5302// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSQLDatabaseLinkedService.
5303func (a *AzureSQLDatabaseLinkedService) UnmarshalJSON(data []byte) error {
5304	var rawMsg map[string]json.RawMessage
5305	if err := json.Unmarshal(data, &rawMsg); err != nil {
5306		return err
5307	}
5308	for key, val := range rawMsg {
5309		var err error
5310		switch key {
5311		case "typeProperties":
5312			err = unpopulate(val, &a.TypeProperties)
5313			delete(rawMsg, key)
5314		}
5315		if err != nil {
5316			return err
5317		}
5318	}
5319	return a.LinkedService.unmarshalInternal(rawMsg)
5320}
5321
5322// AzureSQLDatabaseLinkedServiceTypeProperties - Azure SQL Database linked service properties.
5323type AzureSQLDatabaseLinkedServiceTypeProperties struct {
5324	// REQUIRED; The connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
5325	ConnectionString interface{} `json:"connectionString,omitempty"`
5326
5327	// Indicates the azure cloud type of the service principle auth. Allowed values are AzurePublic, AzureChina, AzureUsGovernment, AzureGermany. Default value
5328	// is the data factory regions’ cloud type. Type:
5329	// string (or Expression with resultType string).
5330	AzureCloudType interface{} `json:"azureCloudType,omitempty"`
5331
5332	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
5333	// with resultType string).
5334	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
5335
5336	// The Azure key vault secret reference of password in connection string.
5337	Password *AzureKeyVaultSecretReference `json:"password,omitempty"`
5338
5339	// The ID of the service principal used to authenticate against Azure SQL Database. Type: string (or Expression with resultType string).
5340	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
5341
5342	// The key of the service principal used to authenticate against Azure SQL Database.
5343	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
5344
5345	// The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
5346	Tenant interface{} `json:"tenant,omitempty"`
5347}
5348
5349// MarshalJSON implements the json.Marshaller interface for type AzureSQLDatabaseLinkedServiceTypeProperties.
5350func (a AzureSQLDatabaseLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
5351	objectMap := make(map[string]interface{})
5352	populate(objectMap, "azureCloudType", a.AzureCloudType)
5353	populate(objectMap, "connectionString", a.ConnectionString)
5354	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
5355	populate(objectMap, "password", a.Password)
5356	populate(objectMap, "servicePrincipalId", a.ServicePrincipalID)
5357	populate(objectMap, "servicePrincipalKey", a.ServicePrincipalKey)
5358	populate(objectMap, "tenant", a.Tenant)
5359	return json.Marshal(objectMap)
5360}
5361
5362// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSQLDatabaseLinkedServiceTypeProperties.
5363func (a *AzureSQLDatabaseLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
5364	var rawMsg map[string]json.RawMessage
5365	if err := json.Unmarshal(data, &rawMsg); err != nil {
5366		return err
5367	}
5368	for key, val := range rawMsg {
5369		var err error
5370		switch key {
5371		case "azureCloudType":
5372			err = unpopulate(val, &a.AzureCloudType)
5373			delete(rawMsg, key)
5374		case "connectionString":
5375			err = unpopulate(val, &a.ConnectionString)
5376			delete(rawMsg, key)
5377		case "encryptedCredential":
5378			err = unpopulate(val, &a.EncryptedCredential)
5379			delete(rawMsg, key)
5380		case "password":
5381			err = unpopulate(val, &a.Password)
5382			delete(rawMsg, key)
5383		case "servicePrincipalId":
5384			err = unpopulate(val, &a.ServicePrincipalID)
5385			delete(rawMsg, key)
5386		case "servicePrincipalKey":
5387			a.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
5388			delete(rawMsg, key)
5389		case "tenant":
5390			err = unpopulate(val, &a.Tenant)
5391			delete(rawMsg, key)
5392		}
5393		if err != nil {
5394			return err
5395		}
5396	}
5397	return nil
5398}
5399
5400// AzureSQLMILinkedService - Azure SQL Managed Instance linked service.
5401type AzureSQLMILinkedService struct {
5402	LinkedService
5403	// REQUIRED; Azure SQL Managed Instance linked service properties.
5404	TypeProperties *AzureSQLMILinkedServiceTypeProperties `json:"typeProperties,omitempty"`
5405}
5406
5407// MarshalJSON implements the json.Marshaller interface for type AzureSQLMILinkedService.
5408func (a AzureSQLMILinkedService) MarshalJSON() ([]byte, error) {
5409	objectMap := a.LinkedService.marshalInternal("AzureSqlMI")
5410	populate(objectMap, "typeProperties", a.TypeProperties)
5411	return json.Marshal(objectMap)
5412}
5413
5414// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSQLMILinkedService.
5415func (a *AzureSQLMILinkedService) UnmarshalJSON(data []byte) error {
5416	var rawMsg map[string]json.RawMessage
5417	if err := json.Unmarshal(data, &rawMsg); err != nil {
5418		return err
5419	}
5420	for key, val := range rawMsg {
5421		var err error
5422		switch key {
5423		case "typeProperties":
5424			err = unpopulate(val, &a.TypeProperties)
5425			delete(rawMsg, key)
5426		}
5427		if err != nil {
5428			return err
5429		}
5430	}
5431	return a.LinkedService.unmarshalInternal(rawMsg)
5432}
5433
5434// AzureSQLMILinkedServiceTypeProperties - Azure SQL Managed Instance linked service properties.
5435type AzureSQLMILinkedServiceTypeProperties struct {
5436	// REQUIRED; The connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
5437	ConnectionString interface{} `json:"connectionString,omitempty"`
5438
5439	// Indicates the azure cloud type of the service principle auth. Allowed values are AzurePublic, AzureChina, AzureUsGovernment, AzureGermany. Default value
5440	// is the data factory regions’ cloud type. Type:
5441	// string (or Expression with resultType string).
5442	AzureCloudType interface{} `json:"azureCloudType,omitempty"`
5443
5444	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
5445	// with resultType string).
5446	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
5447
5448	// The Azure key vault secret reference of password in connection string.
5449	Password *AzureKeyVaultSecretReference `json:"password,omitempty"`
5450
5451	// The ID of the service principal used to authenticate against Azure SQL Managed Instance. Type: string (or Expression with resultType string).
5452	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
5453
5454	// The key of the service principal used to authenticate against Azure SQL Managed Instance.
5455	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
5456
5457	// The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
5458	Tenant interface{} `json:"tenant,omitempty"`
5459}
5460
5461// MarshalJSON implements the json.Marshaller interface for type AzureSQLMILinkedServiceTypeProperties.
5462func (a AzureSQLMILinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
5463	objectMap := make(map[string]interface{})
5464	populate(objectMap, "azureCloudType", a.AzureCloudType)
5465	populate(objectMap, "connectionString", a.ConnectionString)
5466	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
5467	populate(objectMap, "password", a.Password)
5468	populate(objectMap, "servicePrincipalId", a.ServicePrincipalID)
5469	populate(objectMap, "servicePrincipalKey", a.ServicePrincipalKey)
5470	populate(objectMap, "tenant", a.Tenant)
5471	return json.Marshal(objectMap)
5472}
5473
5474// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSQLMILinkedServiceTypeProperties.
5475func (a *AzureSQLMILinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
5476	var rawMsg map[string]json.RawMessage
5477	if err := json.Unmarshal(data, &rawMsg); err != nil {
5478		return err
5479	}
5480	for key, val := range rawMsg {
5481		var err error
5482		switch key {
5483		case "azureCloudType":
5484			err = unpopulate(val, &a.AzureCloudType)
5485			delete(rawMsg, key)
5486		case "connectionString":
5487			err = unpopulate(val, &a.ConnectionString)
5488			delete(rawMsg, key)
5489		case "encryptedCredential":
5490			err = unpopulate(val, &a.EncryptedCredential)
5491			delete(rawMsg, key)
5492		case "password":
5493			err = unpopulate(val, &a.Password)
5494			delete(rawMsg, key)
5495		case "servicePrincipalId":
5496			err = unpopulate(val, &a.ServicePrincipalID)
5497			delete(rawMsg, key)
5498		case "servicePrincipalKey":
5499			a.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
5500			delete(rawMsg, key)
5501		case "tenant":
5502			err = unpopulate(val, &a.Tenant)
5503			delete(rawMsg, key)
5504		}
5505		if err != nil {
5506			return err
5507		}
5508	}
5509	return nil
5510}
5511
5512// AzureSQLMITableDataset - The Azure SQL Managed Instance dataset.
5513type AzureSQLMITableDataset struct {
5514	Dataset
5515	// Azure SQL Managed Instance dataset properties.
5516	TypeProperties *AzureSQLMITableDatasetTypeProperties `json:"typeProperties,omitempty"`
5517}
5518
5519// MarshalJSON implements the json.Marshaller interface for type AzureSQLMITableDataset.
5520func (a AzureSQLMITableDataset) MarshalJSON() ([]byte, error) {
5521	objectMap := a.Dataset.marshalInternal("AzureSqlMITable")
5522	populate(objectMap, "typeProperties", a.TypeProperties)
5523	return json.Marshal(objectMap)
5524}
5525
5526// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSQLMITableDataset.
5527func (a *AzureSQLMITableDataset) UnmarshalJSON(data []byte) error {
5528	var rawMsg map[string]json.RawMessage
5529	if err := json.Unmarshal(data, &rawMsg); err != nil {
5530		return err
5531	}
5532	for key, val := range rawMsg {
5533		var err error
5534		switch key {
5535		case "typeProperties":
5536			err = unpopulate(val, &a.TypeProperties)
5537			delete(rawMsg, key)
5538		}
5539		if err != nil {
5540			return err
5541		}
5542	}
5543	return a.Dataset.unmarshalInternal(rawMsg)
5544}
5545
5546// AzureSQLMITableDatasetTypeProperties - Azure SQL Managed Instance dataset properties.
5547type AzureSQLMITableDatasetTypeProperties struct {
5548	// The schema name of the Azure SQL Managed Instance. Type: string (or Expression with resultType string).
5549	Schema interface{} `json:"schema,omitempty"`
5550
5551	// The table name of the Azure SQL Managed Instance dataset. Type: string (or Expression with resultType string).
5552	Table interface{} `json:"table,omitempty"`
5553
5554	// This property will be retired. Please consider using schema + table properties instead.
5555	TableName interface{} `json:"tableName,omitempty"`
5556}
5557
5558// AzureSQLSink - A copy activity Azure SQL sink.
5559type AzureSQLSink struct {
5560	CopySink
5561	// SQL pre-copy script. Type: string (or Expression with resultType string).
5562	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
5563
5564	// SQL writer stored procedure name. Type: string (or Expression with resultType string).
5565	SQLWriterStoredProcedureName interface{} `json:"sqlWriterStoredProcedureName,omitempty"`
5566
5567	// SQL writer table type. Type: string (or Expression with resultType string).
5568	SQLWriterTableType interface{} `json:"sqlWriterTableType,omitempty"`
5569
5570	// SQL stored procedure parameters.
5571	StoredProcedureParameters map[string]*StoredProcedureParameter `json:"storedProcedureParameters,omitempty"`
5572
5573	// The stored procedure parameter name of the table type. Type: string (or Expression with resultType string).
5574	StoredProcedureTableTypeParameterName interface{} `json:"storedProcedureTableTypeParameterName,omitempty"`
5575
5576	// The option to handle sink table, such as autoCreate. For now only 'autoCreate' value is supported. Type: string (or Expression with resultType string).
5577	TableOption interface{} `json:"tableOption,omitempty"`
5578}
5579
5580// MarshalJSON implements the json.Marshaller interface for type AzureSQLSink.
5581func (a AzureSQLSink) MarshalJSON() ([]byte, error) {
5582	objectMap := a.CopySink.marshalInternal("AzureSqlSink")
5583	populate(objectMap, "preCopyScript", a.PreCopyScript)
5584	populate(objectMap, "sqlWriterStoredProcedureName", a.SQLWriterStoredProcedureName)
5585	populate(objectMap, "sqlWriterTableType", a.SQLWriterTableType)
5586	populate(objectMap, "storedProcedureParameters", a.StoredProcedureParameters)
5587	populate(objectMap, "storedProcedureTableTypeParameterName", a.StoredProcedureTableTypeParameterName)
5588	populate(objectMap, "tableOption", a.TableOption)
5589	return json.Marshal(objectMap)
5590}
5591
5592// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSQLSink.
5593func (a *AzureSQLSink) UnmarshalJSON(data []byte) error {
5594	var rawMsg map[string]json.RawMessage
5595	if err := json.Unmarshal(data, &rawMsg); err != nil {
5596		return err
5597	}
5598	for key, val := range rawMsg {
5599		var err error
5600		switch key {
5601		case "preCopyScript":
5602			err = unpopulate(val, &a.PreCopyScript)
5603			delete(rawMsg, key)
5604		case "sqlWriterStoredProcedureName":
5605			err = unpopulate(val, &a.SQLWriterStoredProcedureName)
5606			delete(rawMsg, key)
5607		case "sqlWriterTableType":
5608			err = unpopulate(val, &a.SQLWriterTableType)
5609			delete(rawMsg, key)
5610		case "storedProcedureParameters":
5611			err = unpopulate(val, &a.StoredProcedureParameters)
5612			delete(rawMsg, key)
5613		case "storedProcedureTableTypeParameterName":
5614			err = unpopulate(val, &a.StoredProcedureTableTypeParameterName)
5615			delete(rawMsg, key)
5616		case "tableOption":
5617			err = unpopulate(val, &a.TableOption)
5618			delete(rawMsg, key)
5619		}
5620		if err != nil {
5621			return err
5622		}
5623	}
5624	return a.CopySink.unmarshalInternal(rawMsg)
5625}
5626
5627// AzureSQLSource - A copy activity Azure SQL source.
5628type AzureSQLSource struct {
5629	TabularSource
5630	// The partition mechanism that will be used for Sql read in parallel. Possible values include: "None", "PhysicalPartitionsOfTable", "DynamicRange".
5631	PartitionOption interface{} `json:"partitionOption,omitempty"`
5632
5633	// The settings that will be leveraged for Sql source partitioning.
5634	PartitionSettings *SQLPartitionSettings `json:"partitionSettings,omitempty"`
5635
5636	// Which additional types to produce.
5637	ProduceAdditionalTypes interface{} `json:"produceAdditionalTypes,omitempty"`
5638
5639	// SQL reader query. Type: string (or Expression with resultType string).
5640	SQLReaderQuery interface{} `json:"sqlReaderQuery,omitempty"`
5641
5642	// Name of the stored procedure for a SQL Database source. This cannot be used at the same time as SqlReaderQuery. Type: string (or Expression with resultType
5643	// string).
5644	SQLReaderStoredProcedureName interface{} `json:"sqlReaderStoredProcedureName,omitempty"`
5645
5646	// Value and type setting for stored procedure parameters. Example: "{Parameter1: {value: "1", type: "int"}}".
5647	StoredProcedureParameters map[string]*StoredProcedureParameter `json:"storedProcedureParameters,omitempty"`
5648}
5649
5650// MarshalJSON implements the json.Marshaller interface for type AzureSQLSource.
5651func (a AzureSQLSource) MarshalJSON() ([]byte, error) {
5652	objectMap := a.TabularSource.marshalInternal("AzureSqlSource")
5653	populate(objectMap, "partitionOption", a.PartitionOption)
5654	populate(objectMap, "partitionSettings", a.PartitionSettings)
5655	populate(objectMap, "produceAdditionalTypes", a.ProduceAdditionalTypes)
5656	populate(objectMap, "sqlReaderQuery", a.SQLReaderQuery)
5657	populate(objectMap, "sqlReaderStoredProcedureName", a.SQLReaderStoredProcedureName)
5658	populate(objectMap, "storedProcedureParameters", a.StoredProcedureParameters)
5659	return json.Marshal(objectMap)
5660}
5661
5662// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSQLSource.
5663func (a *AzureSQLSource) UnmarshalJSON(data []byte) error {
5664	var rawMsg map[string]json.RawMessage
5665	if err := json.Unmarshal(data, &rawMsg); err != nil {
5666		return err
5667	}
5668	for key, val := range rawMsg {
5669		var err error
5670		switch key {
5671		case "partitionOption":
5672			err = unpopulate(val, &a.PartitionOption)
5673			delete(rawMsg, key)
5674		case "partitionSettings":
5675			err = unpopulate(val, &a.PartitionSettings)
5676			delete(rawMsg, key)
5677		case "produceAdditionalTypes":
5678			err = unpopulate(val, &a.ProduceAdditionalTypes)
5679			delete(rawMsg, key)
5680		case "sqlReaderQuery":
5681			err = unpopulate(val, &a.SQLReaderQuery)
5682			delete(rawMsg, key)
5683		case "sqlReaderStoredProcedureName":
5684			err = unpopulate(val, &a.SQLReaderStoredProcedureName)
5685			delete(rawMsg, key)
5686		case "storedProcedureParameters":
5687			err = unpopulate(val, &a.StoredProcedureParameters)
5688			delete(rawMsg, key)
5689		}
5690		if err != nil {
5691			return err
5692		}
5693	}
5694	return a.TabularSource.unmarshalInternal(rawMsg)
5695}
5696
5697// AzureSQLTableDataset - The Azure SQL Server database dataset.
5698type AzureSQLTableDataset struct {
5699	Dataset
5700	// Azure SQL dataset properties.
5701	TypeProperties *AzureSQLTableDatasetTypeProperties `json:"typeProperties,omitempty"`
5702}
5703
5704// MarshalJSON implements the json.Marshaller interface for type AzureSQLTableDataset.
5705func (a AzureSQLTableDataset) MarshalJSON() ([]byte, error) {
5706	objectMap := a.Dataset.marshalInternal("AzureSqlTable")
5707	populate(objectMap, "typeProperties", a.TypeProperties)
5708	return json.Marshal(objectMap)
5709}
5710
5711// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSQLTableDataset.
5712func (a *AzureSQLTableDataset) UnmarshalJSON(data []byte) error {
5713	var rawMsg map[string]json.RawMessage
5714	if err := json.Unmarshal(data, &rawMsg); err != nil {
5715		return err
5716	}
5717	for key, val := range rawMsg {
5718		var err error
5719		switch key {
5720		case "typeProperties":
5721			err = unpopulate(val, &a.TypeProperties)
5722			delete(rawMsg, key)
5723		}
5724		if err != nil {
5725			return err
5726		}
5727	}
5728	return a.Dataset.unmarshalInternal(rawMsg)
5729}
5730
5731// AzureSQLTableDatasetTypeProperties - Azure SQL dataset properties.
5732type AzureSQLTableDatasetTypeProperties struct {
5733	// The schema name of the Azure SQL database. Type: string (or Expression with resultType string).
5734	Schema interface{} `json:"schema,omitempty"`
5735
5736	// The table name of the Azure SQL database. Type: string (or Expression with resultType string).
5737	Table interface{} `json:"table,omitempty"`
5738
5739	// This property will be retired. Please consider using schema + table properties instead.
5740	TableName interface{} `json:"tableName,omitempty"`
5741}
5742
5743// AzureSearchIndexDataset - The Azure Search Index.
5744type AzureSearchIndexDataset struct {
5745	Dataset
5746	// REQUIRED; Properties specific to this dataset type.
5747	TypeProperties *AzureSearchIndexDatasetTypeProperties `json:"typeProperties,omitempty"`
5748}
5749
5750// MarshalJSON implements the json.Marshaller interface for type AzureSearchIndexDataset.
5751func (a AzureSearchIndexDataset) MarshalJSON() ([]byte, error) {
5752	objectMap := a.Dataset.marshalInternal("AzureSearchIndex")
5753	populate(objectMap, "typeProperties", a.TypeProperties)
5754	return json.Marshal(objectMap)
5755}
5756
5757// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSearchIndexDataset.
5758func (a *AzureSearchIndexDataset) UnmarshalJSON(data []byte) error {
5759	var rawMsg map[string]json.RawMessage
5760	if err := json.Unmarshal(data, &rawMsg); err != nil {
5761		return err
5762	}
5763	for key, val := range rawMsg {
5764		var err error
5765		switch key {
5766		case "typeProperties":
5767			err = unpopulate(val, &a.TypeProperties)
5768			delete(rawMsg, key)
5769		}
5770		if err != nil {
5771			return err
5772		}
5773	}
5774	return a.Dataset.unmarshalInternal(rawMsg)
5775}
5776
5777// AzureSearchIndexDatasetTypeProperties - Properties specific to this dataset type.
5778type AzureSearchIndexDatasetTypeProperties struct {
5779	// REQUIRED; The name of the Azure Search Index. Type: string (or Expression with resultType string).
5780	IndexName interface{} `json:"indexName,omitempty"`
5781}
5782
5783// AzureSearchIndexSink - A copy activity Azure Search Index sink.
5784type AzureSearchIndexSink struct {
5785	CopySink
5786	// Specify the write behavior when upserting documents into Azure Search Index.
5787	WriteBehavior *AzureSearchIndexWriteBehaviorType `json:"writeBehavior,omitempty"`
5788}
5789
5790// MarshalJSON implements the json.Marshaller interface for type AzureSearchIndexSink.
5791func (a AzureSearchIndexSink) MarshalJSON() ([]byte, error) {
5792	objectMap := a.CopySink.marshalInternal("AzureSearchIndexSink")
5793	populate(objectMap, "writeBehavior", a.WriteBehavior)
5794	return json.Marshal(objectMap)
5795}
5796
5797// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSearchIndexSink.
5798func (a *AzureSearchIndexSink) UnmarshalJSON(data []byte) error {
5799	var rawMsg map[string]json.RawMessage
5800	if err := json.Unmarshal(data, &rawMsg); err != nil {
5801		return err
5802	}
5803	for key, val := range rawMsg {
5804		var err error
5805		switch key {
5806		case "writeBehavior":
5807			err = unpopulate(val, &a.WriteBehavior)
5808			delete(rawMsg, key)
5809		}
5810		if err != nil {
5811			return err
5812		}
5813	}
5814	return a.CopySink.unmarshalInternal(rawMsg)
5815}
5816
5817// AzureSearchLinkedService - Linked service for Windows Azure Search Service.
5818type AzureSearchLinkedService struct {
5819	LinkedService
5820	// REQUIRED; Windows Azure Search Service linked service properties.
5821	TypeProperties *AzureSearchLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
5822}
5823
5824// MarshalJSON implements the json.Marshaller interface for type AzureSearchLinkedService.
5825func (a AzureSearchLinkedService) MarshalJSON() ([]byte, error) {
5826	objectMap := a.LinkedService.marshalInternal("AzureSearch")
5827	populate(objectMap, "typeProperties", a.TypeProperties)
5828	return json.Marshal(objectMap)
5829}
5830
5831// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSearchLinkedService.
5832func (a *AzureSearchLinkedService) UnmarshalJSON(data []byte) error {
5833	var rawMsg map[string]json.RawMessage
5834	if err := json.Unmarshal(data, &rawMsg); err != nil {
5835		return err
5836	}
5837	for key, val := range rawMsg {
5838		var err error
5839		switch key {
5840		case "typeProperties":
5841			err = unpopulate(val, &a.TypeProperties)
5842			delete(rawMsg, key)
5843		}
5844		if err != nil {
5845			return err
5846		}
5847	}
5848	return a.LinkedService.unmarshalInternal(rawMsg)
5849}
5850
5851// AzureSearchLinkedServiceTypeProperties - Windows Azure Search Service linked service properties.
5852type AzureSearchLinkedServiceTypeProperties struct {
5853	// REQUIRED; URL for Azure Search service. Type: string (or Expression with resultType string).
5854	URL interface{} `json:"url,omitempty"`
5855
5856	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
5857	// with resultType string).
5858	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
5859
5860	// Admin Key for Azure Search service
5861	Key SecretBaseClassification `json:"key,omitempty"`
5862}
5863
5864// MarshalJSON implements the json.Marshaller interface for type AzureSearchLinkedServiceTypeProperties.
5865func (a AzureSearchLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
5866	objectMap := make(map[string]interface{})
5867	populate(objectMap, "encryptedCredential", a.EncryptedCredential)
5868	populate(objectMap, "key", a.Key)
5869	populate(objectMap, "url", a.URL)
5870	return json.Marshal(objectMap)
5871}
5872
5873// UnmarshalJSON implements the json.Unmarshaller interface for type AzureSearchLinkedServiceTypeProperties.
5874func (a *AzureSearchLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
5875	var rawMsg map[string]json.RawMessage
5876	if err := json.Unmarshal(data, &rawMsg); err != nil {
5877		return err
5878	}
5879	for key, val := range rawMsg {
5880		var err error
5881		switch key {
5882		case "encryptedCredential":
5883			err = unpopulate(val, &a.EncryptedCredential)
5884			delete(rawMsg, key)
5885		case "key":
5886			a.Key, err = unmarshalSecretBaseClassification(val)
5887			delete(rawMsg, key)
5888		case "url":
5889			err = unpopulate(val, &a.URL)
5890			delete(rawMsg, key)
5891		}
5892		if err != nil {
5893			return err
5894		}
5895	}
5896	return nil
5897}
5898
5899// AzureStorageLinkedService - The storage account linked service.
5900type AzureStorageLinkedService struct {
5901	LinkedService
5902	// REQUIRED; Azure Storage linked service properties.
5903	TypeProperties *AzureStorageLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
5904}
5905
5906// MarshalJSON implements the json.Marshaller interface for type AzureStorageLinkedService.
5907func (a AzureStorageLinkedService) MarshalJSON() ([]byte, error) {
5908	objectMap := a.LinkedService.marshalInternal("AzureStorage")
5909	populate(objectMap, "typeProperties", a.TypeProperties)
5910	return json.Marshal(objectMap)
5911}
5912
5913// UnmarshalJSON implements the json.Unmarshaller interface for type AzureStorageLinkedService.
5914func (a *AzureStorageLinkedService) UnmarshalJSON(data []byte) error {
5915	var rawMsg map[string]json.RawMessage
5916	if err := json.Unmarshal(data, &rawMsg); err != nil {
5917		return err
5918	}
5919	for key, val := range rawMsg {
5920		var err error
5921		switch key {
5922		case "typeProperties":
5923			err = unpopulate(val, &a.TypeProperties)
5924			delete(rawMsg, key)
5925		}
5926		if err != nil {
5927			return err
5928		}
5929	}
5930	return a.LinkedService.unmarshalInternal(rawMsg)
5931}
5932
5933// AzureStorageLinkedServiceTypeProperties - Azure Storage linked service properties.
5934type AzureStorageLinkedServiceTypeProperties struct {
5935	// The Azure key vault secret reference of accountKey in connection string.
5936	AccountKey *AzureKeyVaultSecretReference `json:"accountKey,omitempty"`
5937
5938	// The connection string. It is mutually exclusive with sasUri property. Type: string, SecureString or AzureKeyVaultSecretReference.
5939	ConnectionString interface{} `json:"connectionString,omitempty"`
5940
5941	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
5942	// with resultType string).
5943	EncryptedCredential *string `json:"encryptedCredential,omitempty"`
5944
5945	// The Azure key vault secret reference of sasToken in sas uri.
5946	SasToken *AzureKeyVaultSecretReference `json:"sasToken,omitempty"`
5947
5948	// SAS URI of the Azure Storage resource. It is mutually exclusive with connectionString property. Type: string, SecureString or AzureKeyVaultSecretReference.
5949	SasURI interface{} `json:"sasUri,omitempty"`
5950}
5951
5952// AzureTableDataset - The Azure Table storage dataset.
5953type AzureTableDataset struct {
5954	Dataset
5955	// REQUIRED; Azure Table dataset properties.
5956	TypeProperties *AzureTableDatasetTypeProperties `json:"typeProperties,omitempty"`
5957}
5958
5959// MarshalJSON implements the json.Marshaller interface for type AzureTableDataset.
5960func (a AzureTableDataset) MarshalJSON() ([]byte, error) {
5961	objectMap := a.Dataset.marshalInternal("AzureTable")
5962	populate(objectMap, "typeProperties", a.TypeProperties)
5963	return json.Marshal(objectMap)
5964}
5965
5966// UnmarshalJSON implements the json.Unmarshaller interface for type AzureTableDataset.
5967func (a *AzureTableDataset) UnmarshalJSON(data []byte) error {
5968	var rawMsg map[string]json.RawMessage
5969	if err := json.Unmarshal(data, &rawMsg); err != nil {
5970		return err
5971	}
5972	for key, val := range rawMsg {
5973		var err error
5974		switch key {
5975		case "typeProperties":
5976			err = unpopulate(val, &a.TypeProperties)
5977			delete(rawMsg, key)
5978		}
5979		if err != nil {
5980			return err
5981		}
5982	}
5983	return a.Dataset.unmarshalInternal(rawMsg)
5984}
5985
5986// AzureTableDatasetTypeProperties - Azure Table dataset properties.
5987type AzureTableDatasetTypeProperties struct {
5988	// REQUIRED; The table name of the Azure Table storage. Type: string (or Expression with resultType string).
5989	TableName interface{} `json:"tableName,omitempty"`
5990}
5991
5992// AzureTableSink - A copy activity Azure Table sink.
5993type AzureTableSink struct {
5994	CopySink
5995	// Azure Table default partition key value. Type: string (or Expression with resultType string).
5996	AzureTableDefaultPartitionKeyValue interface{} `json:"azureTableDefaultPartitionKeyValue,omitempty"`
5997
5998	// Azure Table insert type. Type: string (or Expression with resultType string).
5999	AzureTableInsertType interface{} `json:"azureTableInsertType,omitempty"`
6000
6001	// Azure Table partition key name. Type: string (or Expression with resultType string).
6002	AzureTablePartitionKeyName interface{} `json:"azureTablePartitionKeyName,omitempty"`
6003
6004	// Azure Table row key name. Type: string (or Expression with resultType string).
6005	AzureTableRowKeyName interface{} `json:"azureTableRowKeyName,omitempty"`
6006}
6007
6008// MarshalJSON implements the json.Marshaller interface for type AzureTableSink.
6009func (a AzureTableSink) MarshalJSON() ([]byte, error) {
6010	objectMap := a.CopySink.marshalInternal("AzureTableSink")
6011	populate(objectMap, "azureTableDefaultPartitionKeyValue", a.AzureTableDefaultPartitionKeyValue)
6012	populate(objectMap, "azureTableInsertType", a.AzureTableInsertType)
6013	populate(objectMap, "azureTablePartitionKeyName", a.AzureTablePartitionKeyName)
6014	populate(objectMap, "azureTableRowKeyName", a.AzureTableRowKeyName)
6015	return json.Marshal(objectMap)
6016}
6017
6018// UnmarshalJSON implements the json.Unmarshaller interface for type AzureTableSink.
6019func (a *AzureTableSink) UnmarshalJSON(data []byte) error {
6020	var rawMsg map[string]json.RawMessage
6021	if err := json.Unmarshal(data, &rawMsg); err != nil {
6022		return err
6023	}
6024	for key, val := range rawMsg {
6025		var err error
6026		switch key {
6027		case "azureTableDefaultPartitionKeyValue":
6028			err = unpopulate(val, &a.AzureTableDefaultPartitionKeyValue)
6029			delete(rawMsg, key)
6030		case "azureTableInsertType":
6031			err = unpopulate(val, &a.AzureTableInsertType)
6032			delete(rawMsg, key)
6033		case "azureTablePartitionKeyName":
6034			err = unpopulate(val, &a.AzureTablePartitionKeyName)
6035			delete(rawMsg, key)
6036		case "azureTableRowKeyName":
6037			err = unpopulate(val, &a.AzureTableRowKeyName)
6038			delete(rawMsg, key)
6039		}
6040		if err != nil {
6041			return err
6042		}
6043	}
6044	return a.CopySink.unmarshalInternal(rawMsg)
6045}
6046
6047// AzureTableSource - A copy activity Azure Table source.
6048type AzureTableSource struct {
6049	TabularSource
6050	// Azure Table source ignore table not found. Type: boolean (or Expression with resultType boolean).
6051	AzureTableSourceIgnoreTableNotFound interface{} `json:"azureTableSourceIgnoreTableNotFound,omitempty"`
6052
6053	// Azure Table source query. Type: string (or Expression with resultType string).
6054	AzureTableSourceQuery interface{} `json:"azureTableSourceQuery,omitempty"`
6055}
6056
6057// MarshalJSON implements the json.Marshaller interface for type AzureTableSource.
6058func (a AzureTableSource) MarshalJSON() ([]byte, error) {
6059	objectMap := a.TabularSource.marshalInternal("AzureTableSource")
6060	populate(objectMap, "azureTableSourceIgnoreTableNotFound", a.AzureTableSourceIgnoreTableNotFound)
6061	populate(objectMap, "azureTableSourceQuery", a.AzureTableSourceQuery)
6062	return json.Marshal(objectMap)
6063}
6064
6065// UnmarshalJSON implements the json.Unmarshaller interface for type AzureTableSource.
6066func (a *AzureTableSource) UnmarshalJSON(data []byte) error {
6067	var rawMsg map[string]json.RawMessage
6068	if err := json.Unmarshal(data, &rawMsg); err != nil {
6069		return err
6070	}
6071	for key, val := range rawMsg {
6072		var err error
6073		switch key {
6074		case "azureTableSourceIgnoreTableNotFound":
6075			err = unpopulate(val, &a.AzureTableSourceIgnoreTableNotFound)
6076			delete(rawMsg, key)
6077		case "azureTableSourceQuery":
6078			err = unpopulate(val, &a.AzureTableSourceQuery)
6079			delete(rawMsg, key)
6080		}
6081		if err != nil {
6082			return err
6083		}
6084	}
6085	return a.TabularSource.unmarshalInternal(rawMsg)
6086}
6087
6088// AzureTableStorageLinkedService - The azure table storage linked service.
6089type AzureTableStorageLinkedService struct {
6090	LinkedService
6091	// REQUIRED; Azure Table Storage linked service properties.
6092	TypeProperties *AzureStorageLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
6093}
6094
6095// MarshalJSON implements the json.Marshaller interface for type AzureTableStorageLinkedService.
6096func (a AzureTableStorageLinkedService) MarshalJSON() ([]byte, error) {
6097	objectMap := a.LinkedService.marshalInternal("AzureTableStorage")
6098	populate(objectMap, "typeProperties", a.TypeProperties)
6099	return json.Marshal(objectMap)
6100}
6101
6102// UnmarshalJSON implements the json.Unmarshaller interface for type AzureTableStorageLinkedService.
6103func (a *AzureTableStorageLinkedService) UnmarshalJSON(data []byte) error {
6104	var rawMsg map[string]json.RawMessage
6105	if err := json.Unmarshal(data, &rawMsg); err != nil {
6106		return err
6107	}
6108	for key, val := range rawMsg {
6109		var err error
6110		switch key {
6111		case "typeProperties":
6112			err = unpopulate(val, &a.TypeProperties)
6113			delete(rawMsg, key)
6114		}
6115		if err != nil {
6116			return err
6117		}
6118	}
6119	return a.LinkedService.unmarshalInternal(rawMsg)
6120}
6121
6122// BigDataPoolReference - Big data pool reference.
6123type BigDataPoolReference struct {
6124	// REQUIRED; Reference big data pool name.
6125	ReferenceName *string `json:"referenceName,omitempty"`
6126
6127	// REQUIRED; Big data pool reference type.
6128	Type *BigDataPoolReferenceType `json:"type,omitempty"`
6129}
6130
6131// BigDataPoolResourceInfo - A Big Data pool
6132type BigDataPoolResourceInfo struct {
6133	TrackedResource
6134	// Big Data pool properties
6135	Properties *BigDataPoolResourceProperties `json:"properties,omitempty"`
6136}
6137
6138// MarshalJSON implements the json.Marshaller interface for type BigDataPoolResourceInfo.
6139func (b BigDataPoolResourceInfo) MarshalJSON() ([]byte, error) {
6140	objectMap := b.TrackedResource.marshalInternal()
6141	populate(objectMap, "properties", b.Properties)
6142	return json.Marshal(objectMap)
6143}
6144
6145// BigDataPoolResourceInfoListResult - Collection of Big Data pool information
6146type BigDataPoolResourceInfoListResult struct {
6147	// Link to the next page of results
6148	NextLink *string `json:"nextLink,omitempty"`
6149
6150	// List of Big Data pools
6151	Value []*BigDataPoolResourceInfo `json:"value,omitempty"`
6152}
6153
6154// MarshalJSON implements the json.Marshaller interface for type BigDataPoolResourceInfoListResult.
6155func (b BigDataPoolResourceInfoListResult) MarshalJSON() ([]byte, error) {
6156	objectMap := make(map[string]interface{})
6157	populate(objectMap, "nextLink", b.NextLink)
6158	populate(objectMap, "value", b.Value)
6159	return json.Marshal(objectMap)
6160}
6161
6162// BigDataPoolResourceProperties - Properties of a Big Data pool powered by Apache Spark
6163type BigDataPoolResourceProperties struct {
6164	// Auto-pausing properties
6165	AutoPause *AutoPauseProperties `json:"autoPause,omitempty"`
6166
6167	// Auto-scaling properties
6168	AutoScale *AutoScaleProperties `json:"autoScale,omitempty"`
6169
6170	// The cache size
6171	CacheSize *int32 `json:"cacheSize,omitempty"`
6172
6173	// The time when the Big Data pool was created.
6174	CreationDate *time.Time `json:"creationDate,omitempty"`
6175
6176	// List of custom libraries/packages associated with the spark pool.
6177	CustomLibraries []*LibraryInfo `json:"customLibraries,omitempty"`
6178
6179	// The default folder where Spark logs will be written.
6180	DefaultSparkLogFolder *string `json:"defaultSparkLogFolder,omitempty"`
6181
6182	// Dynamic Executor Allocation
6183	DynamicExecutorAllocation *DynamicExecutorAllocation `json:"dynamicExecutorAllocation,omitempty"`
6184
6185	// Whether compute isolation is required or not.
6186	IsComputeIsolationEnabled *bool `json:"isComputeIsolationEnabled,omitempty"`
6187
6188	// Library version requirements
6189	LibraryRequirements *LibraryRequirements `json:"libraryRequirements,omitempty"`
6190
6191	// The number of nodes in the Big Data pool.
6192	NodeCount *int32 `json:"nodeCount,omitempty"`
6193
6194	// The level of compute power that each node in the Big Data pool has.
6195	NodeSize *NodeSize `json:"nodeSize,omitempty"`
6196
6197	// The kind of nodes that the Big Data pool provides.
6198	NodeSizeFamily *NodeSizeFamily `json:"nodeSizeFamily,omitempty"`
6199
6200	// The state of the Big Data pool.
6201	ProvisioningState *string `json:"provisioningState,omitempty"`
6202
6203	// Whether session level packages enabled.
6204	SessionLevelPackagesEnabled *bool `json:"sessionLevelPackagesEnabled,omitempty"`
6205
6206	// Spark configuration file to specify additional properties
6207	SparkConfigProperties *LibraryRequirements `json:"sparkConfigProperties,omitempty"`
6208
6209	// The Spark events folder
6210	SparkEventsFolder *string `json:"sparkEventsFolder,omitempty"`
6211
6212	// The Apache Spark version.
6213	SparkVersion *string `json:"sparkVersion,omitempty"`
6214
6215	// READ-ONLY; The time when the Big Data pool was updated successfully.
6216	LastSucceededTimestamp *time.Time `json:"lastSucceededTimestamp,omitempty" azure:"ro"`
6217}
6218
6219// MarshalJSON implements the json.Marshaller interface for type BigDataPoolResourceProperties.
6220func (b BigDataPoolResourceProperties) MarshalJSON() ([]byte, error) {
6221	objectMap := make(map[string]interface{})
6222	populate(objectMap, "autoPause", b.AutoPause)
6223	populate(objectMap, "autoScale", b.AutoScale)
6224	populate(objectMap, "cacheSize", b.CacheSize)
6225	populate(objectMap, "creationDate", (*timeRFC3339)(b.CreationDate))
6226	populate(objectMap, "customLibraries", b.CustomLibraries)
6227	populate(objectMap, "defaultSparkLogFolder", b.DefaultSparkLogFolder)
6228	populate(objectMap, "dynamicExecutorAllocation", b.DynamicExecutorAllocation)
6229	populate(objectMap, "isComputeIsolationEnabled", b.IsComputeIsolationEnabled)
6230	populate(objectMap, "lastSucceededTimestamp", (*timeRFC3339)(b.LastSucceededTimestamp))
6231	populate(objectMap, "libraryRequirements", b.LibraryRequirements)
6232	populate(objectMap, "nodeCount", b.NodeCount)
6233	populate(objectMap, "nodeSize", b.NodeSize)
6234	populate(objectMap, "nodeSizeFamily", b.NodeSizeFamily)
6235	populate(objectMap, "provisioningState", b.ProvisioningState)
6236	populate(objectMap, "sessionLevelPackagesEnabled", b.SessionLevelPackagesEnabled)
6237	populate(objectMap, "sparkConfigProperties", b.SparkConfigProperties)
6238	populate(objectMap, "sparkEventsFolder", b.SparkEventsFolder)
6239	populate(objectMap, "sparkVersion", b.SparkVersion)
6240	return json.Marshal(objectMap)
6241}
6242
6243// UnmarshalJSON implements the json.Unmarshaller interface for type BigDataPoolResourceProperties.
6244func (b *BigDataPoolResourceProperties) UnmarshalJSON(data []byte) error {
6245	var rawMsg map[string]json.RawMessage
6246	if err := json.Unmarshal(data, &rawMsg); err != nil {
6247		return err
6248	}
6249	for key, val := range rawMsg {
6250		var err error
6251		switch key {
6252		case "autoPause":
6253			err = unpopulate(val, &b.AutoPause)
6254			delete(rawMsg, key)
6255		case "autoScale":
6256			err = unpopulate(val, &b.AutoScale)
6257			delete(rawMsg, key)
6258		case "cacheSize":
6259			err = unpopulate(val, &b.CacheSize)
6260			delete(rawMsg, key)
6261		case "creationDate":
6262			var aux timeRFC3339
6263			err = unpopulate(val, &aux)
6264			b.CreationDate = (*time.Time)(&aux)
6265			delete(rawMsg, key)
6266		case "customLibraries":
6267			err = unpopulate(val, &b.CustomLibraries)
6268			delete(rawMsg, key)
6269		case "defaultSparkLogFolder":
6270			err = unpopulate(val, &b.DefaultSparkLogFolder)
6271			delete(rawMsg, key)
6272		case "dynamicExecutorAllocation":
6273			err = unpopulate(val, &b.DynamicExecutorAllocation)
6274			delete(rawMsg, key)
6275		case "isComputeIsolationEnabled":
6276			err = unpopulate(val, &b.IsComputeIsolationEnabled)
6277			delete(rawMsg, key)
6278		case "lastSucceededTimestamp":
6279			var aux timeRFC3339
6280			err = unpopulate(val, &aux)
6281			b.LastSucceededTimestamp = (*time.Time)(&aux)
6282			delete(rawMsg, key)
6283		case "libraryRequirements":
6284			err = unpopulate(val, &b.LibraryRequirements)
6285			delete(rawMsg, key)
6286		case "nodeCount":
6287			err = unpopulate(val, &b.NodeCount)
6288			delete(rawMsg, key)
6289		case "nodeSize":
6290			err = unpopulate(val, &b.NodeSize)
6291			delete(rawMsg, key)
6292		case "nodeSizeFamily":
6293			err = unpopulate(val, &b.NodeSizeFamily)
6294			delete(rawMsg, key)
6295		case "provisioningState":
6296			err = unpopulate(val, &b.ProvisioningState)
6297			delete(rawMsg, key)
6298		case "sessionLevelPackagesEnabled":
6299			err = unpopulate(val, &b.SessionLevelPackagesEnabled)
6300			delete(rawMsg, key)
6301		case "sparkConfigProperties":
6302			err = unpopulate(val, &b.SparkConfigProperties)
6303			delete(rawMsg, key)
6304		case "sparkEventsFolder":
6305			err = unpopulate(val, &b.SparkEventsFolder)
6306			delete(rawMsg, key)
6307		case "sparkVersion":
6308			err = unpopulate(val, &b.SparkVersion)
6309			delete(rawMsg, key)
6310		}
6311		if err != nil {
6312			return err
6313		}
6314	}
6315	return nil
6316}
6317
6318// BigDataPoolsGetOptions contains the optional parameters for the BigDataPools.Get method.
6319type BigDataPoolsGetOptions struct {
6320	// placeholder for future optional parameters
6321}
6322
6323// BigDataPoolsListOptions contains the optional parameters for the BigDataPools.List method.
6324type BigDataPoolsListOptions struct {
6325	// placeholder for future optional parameters
6326}
6327
6328// BinaryDataset - Binary dataset.
6329type BinaryDataset struct {
6330	Dataset
6331	// Binary dataset properties.
6332	TypeProperties *BinaryDatasetTypeProperties `json:"typeProperties,omitempty"`
6333}
6334
6335// MarshalJSON implements the json.Marshaller interface for type BinaryDataset.
6336func (b BinaryDataset) MarshalJSON() ([]byte, error) {
6337	objectMap := b.Dataset.marshalInternal("Binary")
6338	populate(objectMap, "typeProperties", b.TypeProperties)
6339	return json.Marshal(objectMap)
6340}
6341
6342// UnmarshalJSON implements the json.Unmarshaller interface for type BinaryDataset.
6343func (b *BinaryDataset) UnmarshalJSON(data []byte) error {
6344	var rawMsg map[string]json.RawMessage
6345	if err := json.Unmarshal(data, &rawMsg); err != nil {
6346		return err
6347	}
6348	for key, val := range rawMsg {
6349		var err error
6350		switch key {
6351		case "typeProperties":
6352			err = unpopulate(val, &b.TypeProperties)
6353			delete(rawMsg, key)
6354		}
6355		if err != nil {
6356			return err
6357		}
6358	}
6359	return b.Dataset.unmarshalInternal(rawMsg)
6360}
6361
6362// BinaryDatasetTypeProperties - Binary dataset properties.
6363type BinaryDatasetTypeProperties struct {
6364	// REQUIRED; The location of the Binary storage.
6365	Location DatasetLocationClassification `json:"location,omitempty"`
6366
6367	// The data compression method used for the binary dataset.
6368	Compression DatasetCompressionClassification `json:"compression,omitempty"`
6369}
6370
6371// MarshalJSON implements the json.Marshaller interface for type BinaryDatasetTypeProperties.
6372func (b BinaryDatasetTypeProperties) MarshalJSON() ([]byte, error) {
6373	objectMap := make(map[string]interface{})
6374	populate(objectMap, "compression", b.Compression)
6375	populate(objectMap, "location", b.Location)
6376	return json.Marshal(objectMap)
6377}
6378
6379// UnmarshalJSON implements the json.Unmarshaller interface for type BinaryDatasetTypeProperties.
6380func (b *BinaryDatasetTypeProperties) UnmarshalJSON(data []byte) error {
6381	var rawMsg map[string]json.RawMessage
6382	if err := json.Unmarshal(data, &rawMsg); err != nil {
6383		return err
6384	}
6385	for key, val := range rawMsg {
6386		var err error
6387		switch key {
6388		case "compression":
6389			b.Compression, err = unmarshalDatasetCompressionClassification(val)
6390			delete(rawMsg, key)
6391		case "location":
6392			b.Location, err = unmarshalDatasetLocationClassification(val)
6393			delete(rawMsg, key)
6394		}
6395		if err != nil {
6396			return err
6397		}
6398	}
6399	return nil
6400}
6401
6402// BinaryReadSettings - Binary read settings.
6403type BinaryReadSettings struct {
6404	FormatReadSettings
6405	// Compression settings.
6406	CompressionProperties CompressionReadSettingsClassification `json:"compressionProperties,omitempty"`
6407}
6408
6409// MarshalJSON implements the json.Marshaller interface for type BinaryReadSettings.
6410func (b BinaryReadSettings) MarshalJSON() ([]byte, error) {
6411	objectMap := b.FormatReadSettings.marshalInternal("BinaryReadSettings")
6412	populate(objectMap, "compressionProperties", b.CompressionProperties)
6413	return json.Marshal(objectMap)
6414}
6415
6416// UnmarshalJSON implements the json.Unmarshaller interface for type BinaryReadSettings.
6417func (b *BinaryReadSettings) UnmarshalJSON(data []byte) error {
6418	var rawMsg map[string]json.RawMessage
6419	if err := json.Unmarshal(data, &rawMsg); err != nil {
6420		return err
6421	}
6422	for key, val := range rawMsg {
6423		var err error
6424		switch key {
6425		case "compressionProperties":
6426			b.CompressionProperties, err = unmarshalCompressionReadSettingsClassification(val)
6427			delete(rawMsg, key)
6428		}
6429		if err != nil {
6430			return err
6431		}
6432	}
6433	return b.FormatReadSettings.unmarshalInternal(rawMsg)
6434}
6435
6436// BinarySink - A copy activity Binary sink.
6437type BinarySink struct {
6438	CopySink
6439	// Binary store settings.
6440	StoreSettings StoreWriteSettingsClassification `json:"storeSettings,omitempty"`
6441}
6442
6443// MarshalJSON implements the json.Marshaller interface for type BinarySink.
6444func (b BinarySink) MarshalJSON() ([]byte, error) {
6445	objectMap := b.CopySink.marshalInternal("BinarySink")
6446	populate(objectMap, "storeSettings", b.StoreSettings)
6447	return json.Marshal(objectMap)
6448}
6449
6450// UnmarshalJSON implements the json.Unmarshaller interface for type BinarySink.
6451func (b *BinarySink) UnmarshalJSON(data []byte) error {
6452	var rawMsg map[string]json.RawMessage
6453	if err := json.Unmarshal(data, &rawMsg); err != nil {
6454		return err
6455	}
6456	for key, val := range rawMsg {
6457		var err error
6458		switch key {
6459		case "storeSettings":
6460			b.StoreSettings, err = unmarshalStoreWriteSettingsClassification(val)
6461			delete(rawMsg, key)
6462		}
6463		if err != nil {
6464			return err
6465		}
6466	}
6467	return b.CopySink.unmarshalInternal(rawMsg)
6468}
6469
6470// BinarySource - A copy activity Binary source.
6471type BinarySource struct {
6472	CopySource
6473	// Binary format settings.
6474	FormatSettings *BinaryReadSettings `json:"formatSettings,omitempty"`
6475
6476	// Binary store settings.
6477	StoreSettings StoreReadSettingsClassification `json:"storeSettings,omitempty"`
6478}
6479
6480// MarshalJSON implements the json.Marshaller interface for type BinarySource.
6481func (b BinarySource) MarshalJSON() ([]byte, error) {
6482	objectMap := b.CopySource.marshalInternal("BinarySource")
6483	populate(objectMap, "formatSettings", b.FormatSettings)
6484	populate(objectMap, "storeSettings", b.StoreSettings)
6485	return json.Marshal(objectMap)
6486}
6487
6488// UnmarshalJSON implements the json.Unmarshaller interface for type BinarySource.
6489func (b *BinarySource) UnmarshalJSON(data []byte) error {
6490	var rawMsg map[string]json.RawMessage
6491	if err := json.Unmarshal(data, &rawMsg); err != nil {
6492		return err
6493	}
6494	for key, val := range rawMsg {
6495		var err error
6496		switch key {
6497		case "formatSettings":
6498			err = unpopulate(val, &b.FormatSettings)
6499			delete(rawMsg, key)
6500		case "storeSettings":
6501			b.StoreSettings, err = unmarshalStoreReadSettingsClassification(val)
6502			delete(rawMsg, key)
6503		}
6504		if err != nil {
6505			return err
6506		}
6507	}
6508	return b.CopySource.unmarshalInternal(rawMsg)
6509}
6510
6511// BlobEventsTrigger - Trigger that runs every time a Blob event occurs.
6512type BlobEventsTrigger struct {
6513	MultiplePipelineTrigger
6514	// REQUIRED; Blob Events Trigger properties.
6515	TypeProperties *BlobEventsTriggerTypeProperties `json:"typeProperties,omitempty"`
6516}
6517
6518// MarshalJSON implements the json.Marshaller interface for type BlobEventsTrigger.
6519func (b BlobEventsTrigger) MarshalJSON() ([]byte, error) {
6520	objectMap := b.MultiplePipelineTrigger.marshalInternal("BlobEventsTrigger")
6521	populate(objectMap, "typeProperties", b.TypeProperties)
6522	return json.Marshal(objectMap)
6523}
6524
6525// UnmarshalJSON implements the json.Unmarshaller interface for type BlobEventsTrigger.
6526func (b *BlobEventsTrigger) UnmarshalJSON(data []byte) error {
6527	var rawMsg map[string]json.RawMessage
6528	if err := json.Unmarshal(data, &rawMsg); err != nil {
6529		return err
6530	}
6531	for key, val := range rawMsg {
6532		var err error
6533		switch key {
6534		case "typeProperties":
6535			err = unpopulate(val, &b.TypeProperties)
6536			delete(rawMsg, key)
6537		}
6538		if err != nil {
6539			return err
6540		}
6541	}
6542	return b.MultiplePipelineTrigger.unmarshalInternal(rawMsg)
6543}
6544
6545// BlobEventsTriggerTypeProperties - Blob Events Trigger properties.
6546type BlobEventsTriggerTypeProperties struct {
6547	// REQUIRED; The type of events that cause this trigger to fire.
6548	Events []*BlobEventType `json:"events,omitempty"`
6549
6550	// REQUIRED; The ARM resource ID of the Storage Account.
6551	Scope *string `json:"scope,omitempty"`
6552
6553	// The blob path must begin with the pattern provided for trigger to fire. For example, '/records/blobs/december/' will only fire the trigger for blobs
6554	// in the december folder under the records container.
6555	// At least one of these must be provided: blobPathBeginsWith, blobPathEndsWith.
6556	BlobPathBeginsWith *string `json:"blobPathBeginsWith,omitempty"`
6557
6558	// The blob path must end with the pattern provided for trigger to fire. For example, 'december/boxes.csv' will only fire the trigger for blobs named boxes
6559	// in a december folder. At least one of these
6560	// must be provided: blobPathBeginsWith, blobPathEndsWith.
6561	BlobPathEndsWith *string `json:"blobPathEndsWith,omitempty"`
6562
6563	// If set to true, blobs with zero bytes will be ignored.
6564	IgnoreEmptyBlobs *bool `json:"ignoreEmptyBlobs,omitempty"`
6565}
6566
6567// MarshalJSON implements the json.Marshaller interface for type BlobEventsTriggerTypeProperties.
6568func (b BlobEventsTriggerTypeProperties) MarshalJSON() ([]byte, error) {
6569	objectMap := make(map[string]interface{})
6570	populate(objectMap, "blobPathBeginsWith", b.BlobPathBeginsWith)
6571	populate(objectMap, "blobPathEndsWith", b.BlobPathEndsWith)
6572	populate(objectMap, "events", b.Events)
6573	populate(objectMap, "ignoreEmptyBlobs", b.IgnoreEmptyBlobs)
6574	populate(objectMap, "scope", b.Scope)
6575	return json.Marshal(objectMap)
6576}
6577
6578// BlobSink - A copy activity Azure Blob sink.
6579type BlobSink struct {
6580	CopySink
6581	// Blob writer add header. Type: boolean (or Expression with resultType boolean).
6582	BlobWriterAddHeader interface{} `json:"blobWriterAddHeader,omitempty"`
6583
6584	// Blob writer date time format. Type: string (or Expression with resultType string).
6585	BlobWriterDateTimeFormat interface{} `json:"blobWriterDateTimeFormat,omitempty"`
6586
6587	// Blob writer overwrite files. Type: boolean (or Expression with resultType boolean).
6588	BlobWriterOverwriteFiles interface{} `json:"blobWriterOverwriteFiles,omitempty"`
6589
6590	// The type of copy behavior for copy sink.
6591	CopyBehavior interface{} `json:"copyBehavior,omitempty"`
6592}
6593
6594// MarshalJSON implements the json.Marshaller interface for type BlobSink.
6595func (b BlobSink) MarshalJSON() ([]byte, error) {
6596	objectMap := b.CopySink.marshalInternal("BlobSink")
6597	populate(objectMap, "blobWriterAddHeader", b.BlobWriterAddHeader)
6598	populate(objectMap, "blobWriterDateTimeFormat", b.BlobWriterDateTimeFormat)
6599	populate(objectMap, "blobWriterOverwriteFiles", b.BlobWriterOverwriteFiles)
6600	populate(objectMap, "copyBehavior", b.CopyBehavior)
6601	return json.Marshal(objectMap)
6602}
6603
6604// UnmarshalJSON implements the json.Unmarshaller interface for type BlobSink.
6605func (b *BlobSink) UnmarshalJSON(data []byte) error {
6606	var rawMsg map[string]json.RawMessage
6607	if err := json.Unmarshal(data, &rawMsg); err != nil {
6608		return err
6609	}
6610	for key, val := range rawMsg {
6611		var err error
6612		switch key {
6613		case "blobWriterAddHeader":
6614			err = unpopulate(val, &b.BlobWriterAddHeader)
6615			delete(rawMsg, key)
6616		case "blobWriterDateTimeFormat":
6617			err = unpopulate(val, &b.BlobWriterDateTimeFormat)
6618			delete(rawMsg, key)
6619		case "blobWriterOverwriteFiles":
6620			err = unpopulate(val, &b.BlobWriterOverwriteFiles)
6621			delete(rawMsg, key)
6622		case "copyBehavior":
6623			err = unpopulate(val, &b.CopyBehavior)
6624			delete(rawMsg, key)
6625		}
6626		if err != nil {
6627			return err
6628		}
6629	}
6630	return b.CopySink.unmarshalInternal(rawMsg)
6631}
6632
6633// BlobSource - A copy activity Azure Blob source.
6634type BlobSource struct {
6635	CopySource
6636	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
6637	Recursive interface{} `json:"recursive,omitempty"`
6638
6639	// Number of header lines to skip from each blob. Type: integer (or Expression with resultType integer).
6640	SkipHeaderLineCount interface{} `json:"skipHeaderLineCount,omitempty"`
6641
6642	// Treat empty as null. Type: boolean (or Expression with resultType boolean).
6643	TreatEmptyAsNull interface{} `json:"treatEmptyAsNull,omitempty"`
6644}
6645
6646// MarshalJSON implements the json.Marshaller interface for type BlobSource.
6647func (b BlobSource) MarshalJSON() ([]byte, error) {
6648	objectMap := b.CopySource.marshalInternal("BlobSource")
6649	populate(objectMap, "recursive", b.Recursive)
6650	populate(objectMap, "skipHeaderLineCount", b.SkipHeaderLineCount)
6651	populate(objectMap, "treatEmptyAsNull", b.TreatEmptyAsNull)
6652	return json.Marshal(objectMap)
6653}
6654
6655// UnmarshalJSON implements the json.Unmarshaller interface for type BlobSource.
6656func (b *BlobSource) UnmarshalJSON(data []byte) error {
6657	var rawMsg map[string]json.RawMessage
6658	if err := json.Unmarshal(data, &rawMsg); err != nil {
6659		return err
6660	}
6661	for key, val := range rawMsg {
6662		var err error
6663		switch key {
6664		case "recursive":
6665			err = unpopulate(val, &b.Recursive)
6666			delete(rawMsg, key)
6667		case "skipHeaderLineCount":
6668			err = unpopulate(val, &b.SkipHeaderLineCount)
6669			delete(rawMsg, key)
6670		case "treatEmptyAsNull":
6671			err = unpopulate(val, &b.TreatEmptyAsNull)
6672			delete(rawMsg, key)
6673		}
6674		if err != nil {
6675			return err
6676		}
6677	}
6678	return b.CopySource.unmarshalInternal(rawMsg)
6679}
6680
6681// BlobTrigger - Trigger that runs every time the selected Blob container changes.
6682type BlobTrigger struct {
6683	MultiplePipelineTrigger
6684	// REQUIRED; Blob Trigger properties.
6685	TypeProperties *BlobTriggerTypeProperties `json:"typeProperties,omitempty"`
6686}
6687
6688// MarshalJSON implements the json.Marshaller interface for type BlobTrigger.
6689func (b BlobTrigger) MarshalJSON() ([]byte, error) {
6690	objectMap := b.MultiplePipelineTrigger.marshalInternal("BlobTrigger")
6691	populate(objectMap, "typeProperties", b.TypeProperties)
6692	return json.Marshal(objectMap)
6693}
6694
6695// UnmarshalJSON implements the json.Unmarshaller interface for type BlobTrigger.
6696func (b *BlobTrigger) UnmarshalJSON(data []byte) error {
6697	var rawMsg map[string]json.RawMessage
6698	if err := json.Unmarshal(data, &rawMsg); err != nil {
6699		return err
6700	}
6701	for key, val := range rawMsg {
6702		var err error
6703		switch key {
6704		case "typeProperties":
6705			err = unpopulate(val, &b.TypeProperties)
6706			delete(rawMsg, key)
6707		}
6708		if err != nil {
6709			return err
6710		}
6711	}
6712	return b.MultiplePipelineTrigger.unmarshalInternal(rawMsg)
6713}
6714
6715// BlobTriggerTypeProperties - Blob Trigger properties.
6716type BlobTriggerTypeProperties struct {
6717	// REQUIRED; The path of the container/folder that will trigger the pipeline.
6718	FolderPath *string `json:"folderPath,omitempty"`
6719
6720	// REQUIRED; The Azure Storage linked service reference.
6721	LinkedService *LinkedServiceReference `json:"linkedService,omitempty"`
6722
6723	// REQUIRED; The max number of parallel files to handle when it is triggered.
6724	MaxConcurrency *int32 `json:"maxConcurrency,omitempty"`
6725}
6726
6727// CassandraLinkedService - Linked service for Cassandra data source.
6728type CassandraLinkedService struct {
6729	LinkedService
6730	// REQUIRED; Cassandra linked service properties.
6731	TypeProperties *CassandraLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
6732}
6733
6734// MarshalJSON implements the json.Marshaller interface for type CassandraLinkedService.
6735func (c CassandraLinkedService) MarshalJSON() ([]byte, error) {
6736	objectMap := c.LinkedService.marshalInternal("Cassandra")
6737	populate(objectMap, "typeProperties", c.TypeProperties)
6738	return json.Marshal(objectMap)
6739}
6740
6741// UnmarshalJSON implements the json.Unmarshaller interface for type CassandraLinkedService.
6742func (c *CassandraLinkedService) UnmarshalJSON(data []byte) error {
6743	var rawMsg map[string]json.RawMessage
6744	if err := json.Unmarshal(data, &rawMsg); err != nil {
6745		return err
6746	}
6747	for key, val := range rawMsg {
6748		var err error
6749		switch key {
6750		case "typeProperties":
6751			err = unpopulate(val, &c.TypeProperties)
6752			delete(rawMsg, key)
6753		}
6754		if err != nil {
6755			return err
6756		}
6757	}
6758	return c.LinkedService.unmarshalInternal(rawMsg)
6759}
6760
6761// CassandraLinkedServiceTypeProperties - Cassandra linked service properties.
6762type CassandraLinkedServiceTypeProperties struct {
6763	// REQUIRED; Host name for connection. Type: string (or Expression with resultType string).
6764	Host interface{} `json:"host,omitempty"`
6765
6766	// AuthenticationType to be used for connection. Type: string (or Expression with resultType string).
6767	AuthenticationType interface{} `json:"authenticationType,omitempty"`
6768
6769	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
6770	// with resultType string).
6771	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
6772
6773	// Password for authentication.
6774	Password SecretBaseClassification `json:"password,omitempty"`
6775
6776	// The port for the connection. Type: integer (or Expression with resultType integer).
6777	Port interface{} `json:"port,omitempty"`
6778
6779	// Username for authentication. Type: string (or Expression with resultType string).
6780	Username interface{} `json:"username,omitempty"`
6781}
6782
6783// MarshalJSON implements the json.Marshaller interface for type CassandraLinkedServiceTypeProperties.
6784func (c CassandraLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
6785	objectMap := make(map[string]interface{})
6786	populate(objectMap, "authenticationType", c.AuthenticationType)
6787	populate(objectMap, "encryptedCredential", c.EncryptedCredential)
6788	populate(objectMap, "host", c.Host)
6789	populate(objectMap, "password", c.Password)
6790	populate(objectMap, "port", c.Port)
6791	populate(objectMap, "username", c.Username)
6792	return json.Marshal(objectMap)
6793}
6794
6795// UnmarshalJSON implements the json.Unmarshaller interface for type CassandraLinkedServiceTypeProperties.
6796func (c *CassandraLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
6797	var rawMsg map[string]json.RawMessage
6798	if err := json.Unmarshal(data, &rawMsg); err != nil {
6799		return err
6800	}
6801	for key, val := range rawMsg {
6802		var err error
6803		switch key {
6804		case "authenticationType":
6805			err = unpopulate(val, &c.AuthenticationType)
6806			delete(rawMsg, key)
6807		case "encryptedCredential":
6808			err = unpopulate(val, &c.EncryptedCredential)
6809			delete(rawMsg, key)
6810		case "host":
6811			err = unpopulate(val, &c.Host)
6812			delete(rawMsg, key)
6813		case "password":
6814			c.Password, err = unmarshalSecretBaseClassification(val)
6815			delete(rawMsg, key)
6816		case "port":
6817			err = unpopulate(val, &c.Port)
6818			delete(rawMsg, key)
6819		case "username":
6820			err = unpopulate(val, &c.Username)
6821			delete(rawMsg, key)
6822		}
6823		if err != nil {
6824			return err
6825		}
6826	}
6827	return nil
6828}
6829
6830// CassandraSource - A copy activity source for a Cassandra database.
6831type CassandraSource struct {
6832	TabularSource
6833	// The consistency level specifies how many Cassandra servers must respond to a read request before returning data to the client application. Cassandra
6834	// checks the specified number of Cassandra servers
6835	// for data to satisfy the read request. Must be one of cassandraSourceReadConsistencyLevels. The default value is 'ONE'. It is case-insensitive.
6836	ConsistencyLevel *CassandraSourceReadConsistencyLevels `json:"consistencyLevel,omitempty"`
6837
6838	// Database query. Should be a SQL-92 query expression or Cassandra Query Language (CQL) command. Type: string (or Expression with resultType string).
6839	Query interface{} `json:"query,omitempty"`
6840}
6841
6842// MarshalJSON implements the json.Marshaller interface for type CassandraSource.
6843func (c CassandraSource) MarshalJSON() ([]byte, error) {
6844	objectMap := c.TabularSource.marshalInternal("CassandraSource")
6845	populate(objectMap, "consistencyLevel", c.ConsistencyLevel)
6846	populate(objectMap, "query", c.Query)
6847	return json.Marshal(objectMap)
6848}
6849
6850// UnmarshalJSON implements the json.Unmarshaller interface for type CassandraSource.
6851func (c *CassandraSource) UnmarshalJSON(data []byte) error {
6852	var rawMsg map[string]json.RawMessage
6853	if err := json.Unmarshal(data, &rawMsg); err != nil {
6854		return err
6855	}
6856	for key, val := range rawMsg {
6857		var err error
6858		switch key {
6859		case "consistencyLevel":
6860			err = unpopulate(val, &c.ConsistencyLevel)
6861			delete(rawMsg, key)
6862		case "query":
6863			err = unpopulate(val, &c.Query)
6864			delete(rawMsg, key)
6865		}
6866		if err != nil {
6867			return err
6868		}
6869	}
6870	return c.TabularSource.unmarshalInternal(rawMsg)
6871}
6872
6873// CassandraTableDataset - The Cassandra database dataset.
6874type CassandraTableDataset struct {
6875	Dataset
6876	// Cassandra dataset properties.
6877	TypeProperties *CassandraTableDatasetTypeProperties `json:"typeProperties,omitempty"`
6878}
6879
6880// MarshalJSON implements the json.Marshaller interface for type CassandraTableDataset.
6881func (c CassandraTableDataset) MarshalJSON() ([]byte, error) {
6882	objectMap := c.Dataset.marshalInternal("CassandraTable")
6883	populate(objectMap, "typeProperties", c.TypeProperties)
6884	return json.Marshal(objectMap)
6885}
6886
6887// UnmarshalJSON implements the json.Unmarshaller interface for type CassandraTableDataset.
6888func (c *CassandraTableDataset) UnmarshalJSON(data []byte) error {
6889	var rawMsg map[string]json.RawMessage
6890	if err := json.Unmarshal(data, &rawMsg); err != nil {
6891		return err
6892	}
6893	for key, val := range rawMsg {
6894		var err error
6895		switch key {
6896		case "typeProperties":
6897			err = unpopulate(val, &c.TypeProperties)
6898			delete(rawMsg, key)
6899		}
6900		if err != nil {
6901			return err
6902		}
6903	}
6904	return c.Dataset.unmarshalInternal(rawMsg)
6905}
6906
6907// CassandraTableDatasetTypeProperties - Cassandra dataset properties.
6908type CassandraTableDatasetTypeProperties struct {
6909	// The keyspace of the Cassandra database. Type: string (or Expression with resultType string).
6910	Keyspace interface{} `json:"keyspace,omitempty"`
6911
6912	// The table name of the Cassandra database. Type: string (or Expression with resultType string).
6913	TableName interface{} `json:"tableName,omitempty"`
6914}
6915
6916// ChainingTrigger - Trigger that allows the referenced pipeline to depend on other pipeline runs based on runDimension Name/Value pairs. Upstream pipelines
6917// should declare the same runDimension Name and their runs should
6918// have the values for those runDimensions. The referenced pipeline run would be triggered if the values for the runDimension match for all upstream pipeline
6919// runs.
6920type ChainingTrigger struct {
6921	Trigger
6922	// REQUIRED; Pipeline for which runs are created when all upstream pipelines complete successfully.
6923	Pipeline *TriggerPipelineReference `json:"pipeline,omitempty"`
6924
6925	// REQUIRED; Chaining Trigger properties.
6926	TypeProperties *ChainingTriggerTypeProperties `json:"typeProperties,omitempty"`
6927}
6928
6929// MarshalJSON implements the json.Marshaller interface for type ChainingTrigger.
6930func (c ChainingTrigger) MarshalJSON() ([]byte, error) {
6931	objectMap := c.Trigger.marshalInternal("ChainingTrigger")
6932	populate(objectMap, "pipeline", c.Pipeline)
6933	populate(objectMap, "typeProperties", c.TypeProperties)
6934	return json.Marshal(objectMap)
6935}
6936
6937// UnmarshalJSON implements the json.Unmarshaller interface for type ChainingTrigger.
6938func (c *ChainingTrigger) UnmarshalJSON(data []byte) error {
6939	var rawMsg map[string]json.RawMessage
6940	if err := json.Unmarshal(data, &rawMsg); err != nil {
6941		return err
6942	}
6943	for key, val := range rawMsg {
6944		var err error
6945		switch key {
6946		case "pipeline":
6947			err = unpopulate(val, &c.Pipeline)
6948			delete(rawMsg, key)
6949		case "typeProperties":
6950			err = unpopulate(val, &c.TypeProperties)
6951			delete(rawMsg, key)
6952		}
6953		if err != nil {
6954			return err
6955		}
6956	}
6957	return c.Trigger.unmarshalInternal(rawMsg)
6958}
6959
6960// ChainingTriggerTypeProperties - Chaining Trigger properties.
6961type ChainingTriggerTypeProperties struct {
6962	// REQUIRED; Upstream Pipelines.
6963	DependsOn []*PipelineReference `json:"dependsOn,omitempty"`
6964
6965	// REQUIRED; Run Dimension property that needs to be emitted by upstream pipelines.
6966	RunDimension *string `json:"runDimension,omitempty"`
6967}
6968
6969// MarshalJSON implements the json.Marshaller interface for type ChainingTriggerTypeProperties.
6970func (c ChainingTriggerTypeProperties) MarshalJSON() ([]byte, error) {
6971	objectMap := make(map[string]interface{})
6972	populate(objectMap, "dependsOn", c.DependsOn)
6973	populate(objectMap, "runDimension", c.RunDimension)
6974	return json.Marshal(objectMap)
6975}
6976
6977// CloudError - The object that defines the structure of an Azure Synapse error response.
6978// Implements the error and azcore.HTTPResponse interfaces.
6979type CloudError struct {
6980	raw string
6981	// REQUIRED; Error data
6982	InnerError *CloudErrorBody `json:"error,omitempty"`
6983}
6984
6985// Error implements the error interface for type CloudError.
6986// The contents of the error text are not contractual and subject to change.
6987func (e CloudError) Error() string {
6988	return e.raw
6989}
6990
6991// CloudErrorBody - The object that defines the structure of an Azure Synapse error.
6992type CloudErrorBody struct {
6993	// REQUIRED; Error code.
6994	Code *string `json:"code,omitempty"`
6995
6996	// REQUIRED; Error message.
6997	Message *string `json:"message,omitempty"`
6998
6999	// Array with additional error details.
7000	Details []*CloudError `json:"details,omitempty"`
7001
7002	// Property name/path in request associated with error.
7003	Target *string `json:"target,omitempty"`
7004}
7005
7006// MarshalJSON implements the json.Marshaller interface for type CloudErrorBody.
7007func (c CloudErrorBody) MarshalJSON() ([]byte, error) {
7008	objectMap := make(map[string]interface{})
7009	populate(objectMap, "code", c.Code)
7010	populate(objectMap, "details", c.Details)
7011	populate(objectMap, "message", c.Message)
7012	populate(objectMap, "target", c.Target)
7013	return json.Marshal(objectMap)
7014}
7015
7016// CommonDataServiceForAppsEntityDataset - The Common Data Service for Apps entity dataset.
7017type CommonDataServiceForAppsEntityDataset struct {
7018	Dataset
7019	// Common Data Service for Apps entity dataset properties.
7020	TypeProperties *CommonDataServiceForAppsEntityDatasetTypeProperties `json:"typeProperties,omitempty"`
7021}
7022
7023// MarshalJSON implements the json.Marshaller interface for type CommonDataServiceForAppsEntityDataset.
7024func (c CommonDataServiceForAppsEntityDataset) MarshalJSON() ([]byte, error) {
7025	objectMap := c.Dataset.marshalInternal("CommonDataServiceForAppsEntity")
7026	populate(objectMap, "typeProperties", c.TypeProperties)
7027	return json.Marshal(objectMap)
7028}
7029
7030// UnmarshalJSON implements the json.Unmarshaller interface for type CommonDataServiceForAppsEntityDataset.
7031func (c *CommonDataServiceForAppsEntityDataset) UnmarshalJSON(data []byte) error {
7032	var rawMsg map[string]json.RawMessage
7033	if err := json.Unmarshal(data, &rawMsg); err != nil {
7034		return err
7035	}
7036	for key, val := range rawMsg {
7037		var err error
7038		switch key {
7039		case "typeProperties":
7040			err = unpopulate(val, &c.TypeProperties)
7041			delete(rawMsg, key)
7042		}
7043		if err != nil {
7044			return err
7045		}
7046	}
7047	return c.Dataset.unmarshalInternal(rawMsg)
7048}
7049
7050// CommonDataServiceForAppsEntityDatasetTypeProperties - Common Data Service for Apps entity dataset properties.
7051type CommonDataServiceForAppsEntityDatasetTypeProperties struct {
7052	// The logical name of the entity. Type: string (or Expression with resultType string).
7053	EntityName interface{} `json:"entityName,omitempty"`
7054}
7055
7056// CommonDataServiceForAppsLinkedService - Common Data Service for Apps linked service.
7057type CommonDataServiceForAppsLinkedService struct {
7058	LinkedService
7059	// REQUIRED; Common Data Service for Apps linked service properties.
7060	TypeProperties *CommonDataServiceForAppsLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
7061}
7062
7063// MarshalJSON implements the json.Marshaller interface for type CommonDataServiceForAppsLinkedService.
7064func (c CommonDataServiceForAppsLinkedService) MarshalJSON() ([]byte, error) {
7065	objectMap := c.LinkedService.marshalInternal("CommonDataServiceForApps")
7066	populate(objectMap, "typeProperties", c.TypeProperties)
7067	return json.Marshal(objectMap)
7068}
7069
7070// UnmarshalJSON implements the json.Unmarshaller interface for type CommonDataServiceForAppsLinkedService.
7071func (c *CommonDataServiceForAppsLinkedService) UnmarshalJSON(data []byte) error {
7072	var rawMsg map[string]json.RawMessage
7073	if err := json.Unmarshal(data, &rawMsg); err != nil {
7074		return err
7075	}
7076	for key, val := range rawMsg {
7077		var err error
7078		switch key {
7079		case "typeProperties":
7080			err = unpopulate(val, &c.TypeProperties)
7081			delete(rawMsg, key)
7082		}
7083		if err != nil {
7084			return err
7085		}
7086	}
7087	return c.LinkedService.unmarshalInternal(rawMsg)
7088}
7089
7090// CommonDataServiceForAppsLinkedServiceTypeProperties - Common Data Service for Apps linked service properties.
7091type CommonDataServiceForAppsLinkedServiceTypeProperties struct {
7092	// REQUIRED; The authentication type to connect to Common Data Service for Apps server. 'Office365' for online scenario, 'Ifd' for on-premises with Ifd
7093	// scenario. 'AADServicePrincipal' for Server-To-Server
7094	// authentication in online scenario. Type: string (or Expression with resultType string).
7095	AuthenticationType *DynamicsAuthenticationType `json:"authenticationType,omitempty"`
7096
7097	// REQUIRED; The deployment type of the Common Data Service for Apps instance. 'Online' for Common Data Service for Apps Online and 'OnPremisesWithIfd'
7098	// for Common Data Service for Apps on-premises with Ifd. Type:
7099	// string (or Expression with resultType string).
7100	DeploymentType *DynamicsDeploymentType `json:"deploymentType,omitempty"`
7101
7102	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
7103	// with resultType string).
7104	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
7105
7106	// The host name of the on-premises Common Data Service for Apps server. The property is required for on-prem and not allowed for online. Type: string (or
7107	// Expression with resultType string).
7108	HostName interface{} `json:"hostName,omitempty"`
7109
7110	// The organization name of the Common Data Service for Apps instance. The property is required for on-prem and required for online when there are more
7111	// than one Common Data Service for Apps instances
7112	// associated with the user. Type: string (or Expression with resultType string).
7113	OrganizationName interface{} `json:"organizationName,omitempty"`
7114
7115	// Password to access the Common Data Service for Apps instance.
7116	Password SecretBaseClassification `json:"password,omitempty"`
7117
7118	// The port of on-premises Common Data Service for Apps server. The property is required for on-prem and not allowed for online. Default is 443. Type: integer
7119	// (or Expression with resultType integer),
7120	// minimum: 0.
7121	Port interface{} `json:"port,omitempty"`
7122
7123	// The credential of the service principal object in Azure Active Directory. If servicePrincipalCredentialType is 'ServicePrincipalKey', servicePrincipalCredential
7124	// can be SecureString or
7125	// AzureKeyVaultSecretReference. If servicePrincipalCredentialType is 'ServicePrincipalCert', servicePrincipalCredential can only be AzureKeyVaultSecretReference.
7126	ServicePrincipalCredential SecretBaseClassification `json:"servicePrincipalCredential,omitempty"`
7127
7128	// A string from ServicePrincipalCredentialEnum or an expression
7129	ServicePrincipalCredentialType interface{} `json:"servicePrincipalCredentialType,omitempty"`
7130
7131	// The client ID of the application in Azure Active Directory used for Server-To-Server authentication. Type: string (or Expression with resultType string).
7132	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
7133
7134	// The URL to the Microsoft Common Data Service for Apps server. The property is required for on-line and not allowed for on-prem. Type: string (or Expression
7135	// with resultType string).
7136	ServiceURI interface{} `json:"serviceUri,omitempty"`
7137
7138	// User name to access the Common Data Service for Apps instance. Type: string (or Expression with resultType string).
7139	Username interface{} `json:"username,omitempty"`
7140}
7141
7142// MarshalJSON implements the json.Marshaller interface for type CommonDataServiceForAppsLinkedServiceTypeProperties.
7143func (c CommonDataServiceForAppsLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
7144	objectMap := make(map[string]interface{})
7145	populate(objectMap, "authenticationType", c.AuthenticationType)
7146	populate(objectMap, "deploymentType", c.DeploymentType)
7147	populate(objectMap, "encryptedCredential", c.EncryptedCredential)
7148	populate(objectMap, "hostName", c.HostName)
7149	populate(objectMap, "organizationName", c.OrganizationName)
7150	populate(objectMap, "password", c.Password)
7151	populate(objectMap, "port", c.Port)
7152	populate(objectMap, "servicePrincipalCredential", c.ServicePrincipalCredential)
7153	populate(objectMap, "servicePrincipalCredentialType", c.ServicePrincipalCredentialType)
7154	populate(objectMap, "servicePrincipalId", c.ServicePrincipalID)
7155	populate(objectMap, "serviceUri", c.ServiceURI)
7156	populate(objectMap, "username", c.Username)
7157	return json.Marshal(objectMap)
7158}
7159
7160// UnmarshalJSON implements the json.Unmarshaller interface for type CommonDataServiceForAppsLinkedServiceTypeProperties.
7161func (c *CommonDataServiceForAppsLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
7162	var rawMsg map[string]json.RawMessage
7163	if err := json.Unmarshal(data, &rawMsg); err != nil {
7164		return err
7165	}
7166	for key, val := range rawMsg {
7167		var err error
7168		switch key {
7169		case "authenticationType":
7170			err = unpopulate(val, &c.AuthenticationType)
7171			delete(rawMsg, key)
7172		case "deploymentType":
7173			err = unpopulate(val, &c.DeploymentType)
7174			delete(rawMsg, key)
7175		case "encryptedCredential":
7176			err = unpopulate(val, &c.EncryptedCredential)
7177			delete(rawMsg, key)
7178		case "hostName":
7179			err = unpopulate(val, &c.HostName)
7180			delete(rawMsg, key)
7181		case "organizationName":
7182			err = unpopulate(val, &c.OrganizationName)
7183			delete(rawMsg, key)
7184		case "password":
7185			c.Password, err = unmarshalSecretBaseClassification(val)
7186			delete(rawMsg, key)
7187		case "port":
7188			err = unpopulate(val, &c.Port)
7189			delete(rawMsg, key)
7190		case "servicePrincipalCredential":
7191			c.ServicePrincipalCredential, err = unmarshalSecretBaseClassification(val)
7192			delete(rawMsg, key)
7193		case "servicePrincipalCredentialType":
7194			err = unpopulate(val, &c.ServicePrincipalCredentialType)
7195			delete(rawMsg, key)
7196		case "servicePrincipalId":
7197			err = unpopulate(val, &c.ServicePrincipalID)
7198			delete(rawMsg, key)
7199		case "serviceUri":
7200			err = unpopulate(val, &c.ServiceURI)
7201			delete(rawMsg, key)
7202		case "username":
7203			err = unpopulate(val, &c.Username)
7204			delete(rawMsg, key)
7205		}
7206		if err != nil {
7207			return err
7208		}
7209	}
7210	return nil
7211}
7212
7213// CommonDataServiceForAppsSink - A copy activity Common Data Service for Apps sink.
7214type CommonDataServiceForAppsSink struct {
7215	CopySink
7216	// REQUIRED; The write behavior for the operation.
7217	WriteBehavior *DynamicsSinkWriteBehavior `json:"writeBehavior,omitempty"`
7218
7219	// The logical name of the alternate key which will be used when upserting records. Type: string (or Expression with resultType string).
7220	AlternateKeyName interface{} `json:"alternateKeyName,omitempty"`
7221
7222	// The flag indicating whether to ignore null values from input dataset (except key fields) during write operation. Default is false. Type: boolean (or
7223	// Expression with resultType boolean).
7224	IgnoreNullValues interface{} `json:"ignoreNullValues,omitempty"`
7225}
7226
7227// MarshalJSON implements the json.Marshaller interface for type CommonDataServiceForAppsSink.
7228func (c CommonDataServiceForAppsSink) MarshalJSON() ([]byte, error) {
7229	objectMap := c.CopySink.marshalInternal("CommonDataServiceForAppsSink")
7230	populate(objectMap, "alternateKeyName", c.AlternateKeyName)
7231	populate(objectMap, "ignoreNullValues", c.IgnoreNullValues)
7232	populate(objectMap, "writeBehavior", c.WriteBehavior)
7233	return json.Marshal(objectMap)
7234}
7235
7236// UnmarshalJSON implements the json.Unmarshaller interface for type CommonDataServiceForAppsSink.
7237func (c *CommonDataServiceForAppsSink) UnmarshalJSON(data []byte) error {
7238	var rawMsg map[string]json.RawMessage
7239	if err := json.Unmarshal(data, &rawMsg); err != nil {
7240		return err
7241	}
7242	for key, val := range rawMsg {
7243		var err error
7244		switch key {
7245		case "alternateKeyName":
7246			err = unpopulate(val, &c.AlternateKeyName)
7247			delete(rawMsg, key)
7248		case "ignoreNullValues":
7249			err = unpopulate(val, &c.IgnoreNullValues)
7250			delete(rawMsg, key)
7251		case "writeBehavior":
7252			err = unpopulate(val, &c.WriteBehavior)
7253			delete(rawMsg, key)
7254		}
7255		if err != nil {
7256			return err
7257		}
7258	}
7259	return c.CopySink.unmarshalInternal(rawMsg)
7260}
7261
7262// CommonDataServiceForAppsSource - A copy activity Common Data Service for Apps source.
7263type CommonDataServiceForAppsSource struct {
7264	CopySource
7265	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
7266	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
7267
7268	// FetchXML is a proprietary query language that is used in Microsoft Common Data Service for Apps (online & on-premises). Type: string (or Expression with
7269	// resultType string).
7270	Query interface{} `json:"query,omitempty"`
7271}
7272
7273// MarshalJSON implements the json.Marshaller interface for type CommonDataServiceForAppsSource.
7274func (c CommonDataServiceForAppsSource) MarshalJSON() ([]byte, error) {
7275	objectMap := c.CopySource.marshalInternal("CommonDataServiceForAppsSource")
7276	populate(objectMap, "additionalColumns", c.AdditionalColumns)
7277	populate(objectMap, "query", c.Query)
7278	return json.Marshal(objectMap)
7279}
7280
7281// UnmarshalJSON implements the json.Unmarshaller interface for type CommonDataServiceForAppsSource.
7282func (c *CommonDataServiceForAppsSource) UnmarshalJSON(data []byte) error {
7283	var rawMsg map[string]json.RawMessage
7284	if err := json.Unmarshal(data, &rawMsg); err != nil {
7285		return err
7286	}
7287	for key, val := range rawMsg {
7288		var err error
7289		switch key {
7290		case "additionalColumns":
7291			err = unpopulate(val, &c.AdditionalColumns)
7292			delete(rawMsg, key)
7293		case "query":
7294			err = unpopulate(val, &c.Query)
7295			delete(rawMsg, key)
7296		}
7297		if err != nil {
7298			return err
7299		}
7300	}
7301	return c.CopySource.unmarshalInternal(rawMsg)
7302}
7303
7304// CompressionReadSettingsClassification provides polymorphic access to related types.
7305// Call the interface's GetCompressionReadSettings() method to access the common type.
7306// Use a type switch to determine the concrete type.  The possible types are:
7307// - *CompressionReadSettings, *TarGZipReadSettings, *TarReadSettings, *ZipDeflateReadSettings
7308type CompressionReadSettingsClassification interface {
7309	// GetCompressionReadSettings returns the CompressionReadSettings content of the underlying type.
7310	GetCompressionReadSettings() *CompressionReadSettings
7311}
7312
7313// CompressionReadSettings - Compression read settings.
7314type CompressionReadSettings struct {
7315	// REQUIRED; The Compression setting type.
7316	Type *string `json:"type,omitempty"`
7317
7318	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
7319	AdditionalProperties map[string]interface{}
7320}
7321
7322// GetCompressionReadSettings implements the CompressionReadSettingsClassification interface for type CompressionReadSettings.
7323func (c *CompressionReadSettings) GetCompressionReadSettings() *CompressionReadSettings { return c }
7324
7325// UnmarshalJSON implements the json.Unmarshaller interface for type CompressionReadSettings.
7326func (c *CompressionReadSettings) UnmarshalJSON(data []byte) error {
7327	var rawMsg map[string]json.RawMessage
7328	if err := json.Unmarshal(data, &rawMsg); err != nil {
7329		return err
7330	}
7331	return c.unmarshalInternal(rawMsg)
7332}
7333
7334func (c CompressionReadSettings) marshalInternal(discValue string) map[string]interface{} {
7335	objectMap := make(map[string]interface{})
7336	c.Type = &discValue
7337	objectMap["type"] = c.Type
7338	if c.AdditionalProperties != nil {
7339		for key, val := range c.AdditionalProperties {
7340			objectMap[key] = val
7341		}
7342	}
7343	return objectMap
7344}
7345
7346func (c *CompressionReadSettings) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
7347	for key, val := range rawMsg {
7348		var err error
7349		switch key {
7350		case "type":
7351			err = unpopulate(val, &c.Type)
7352			delete(rawMsg, key)
7353		default:
7354			if c.AdditionalProperties == nil {
7355				c.AdditionalProperties = map[string]interface{}{}
7356			}
7357			if val != nil {
7358				var aux interface{}
7359				err = json.Unmarshal(val, &aux)
7360				c.AdditionalProperties[key] = aux
7361			}
7362			delete(rawMsg, key)
7363		}
7364		if err != nil {
7365			return err
7366		}
7367	}
7368	return nil
7369}
7370
7371// ConcurLinkedService - Concur Service linked service.
7372type ConcurLinkedService struct {
7373	LinkedService
7374	// REQUIRED; Concur Service linked service properties.
7375	TypeProperties *ConcurLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
7376}
7377
7378// MarshalJSON implements the json.Marshaller interface for type ConcurLinkedService.
7379func (c ConcurLinkedService) MarshalJSON() ([]byte, error) {
7380	objectMap := c.LinkedService.marshalInternal("Concur")
7381	populate(objectMap, "typeProperties", c.TypeProperties)
7382	return json.Marshal(objectMap)
7383}
7384
7385// UnmarshalJSON implements the json.Unmarshaller interface for type ConcurLinkedService.
7386func (c *ConcurLinkedService) UnmarshalJSON(data []byte) error {
7387	var rawMsg map[string]json.RawMessage
7388	if err := json.Unmarshal(data, &rawMsg); err != nil {
7389		return err
7390	}
7391	for key, val := range rawMsg {
7392		var err error
7393		switch key {
7394		case "typeProperties":
7395			err = unpopulate(val, &c.TypeProperties)
7396			delete(rawMsg, key)
7397		}
7398		if err != nil {
7399			return err
7400		}
7401	}
7402	return c.LinkedService.unmarshalInternal(rawMsg)
7403}
7404
7405// ConcurLinkedServiceTypeProperties - Concur Service linked service properties.
7406type ConcurLinkedServiceTypeProperties struct {
7407	// REQUIRED; Application client_id supplied by Concur App Management.
7408	ClientID interface{} `json:"clientId,omitempty"`
7409
7410	// REQUIRED; The user name that you use to access Concur Service.
7411	Username interface{} `json:"username,omitempty"`
7412
7413	// Properties used to connect to Concur. It is mutually exclusive with any other properties in the linked service. Type: object.
7414	ConnectionProperties interface{} `json:"connectionProperties,omitempty"`
7415
7416	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
7417	// with resultType string).
7418	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
7419
7420	// The password corresponding to the user name that you provided in the username field.
7421	Password SecretBaseClassification `json:"password,omitempty"`
7422
7423	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
7424	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
7425
7426	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
7427	// is true.
7428	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
7429
7430	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
7431	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
7432}
7433
7434// MarshalJSON implements the json.Marshaller interface for type ConcurLinkedServiceTypeProperties.
7435func (c ConcurLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
7436	objectMap := make(map[string]interface{})
7437	populate(objectMap, "clientId", c.ClientID)
7438	populate(objectMap, "connectionProperties", c.ConnectionProperties)
7439	populate(objectMap, "encryptedCredential", c.EncryptedCredential)
7440	populate(objectMap, "password", c.Password)
7441	populate(objectMap, "useEncryptedEndpoints", c.UseEncryptedEndpoints)
7442	populate(objectMap, "useHostVerification", c.UseHostVerification)
7443	populate(objectMap, "usePeerVerification", c.UsePeerVerification)
7444	populate(objectMap, "username", c.Username)
7445	return json.Marshal(objectMap)
7446}
7447
7448// UnmarshalJSON implements the json.Unmarshaller interface for type ConcurLinkedServiceTypeProperties.
7449func (c *ConcurLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
7450	var rawMsg map[string]json.RawMessage
7451	if err := json.Unmarshal(data, &rawMsg); err != nil {
7452		return err
7453	}
7454	for key, val := range rawMsg {
7455		var err error
7456		switch key {
7457		case "clientId":
7458			err = unpopulate(val, &c.ClientID)
7459			delete(rawMsg, key)
7460		case "connectionProperties":
7461			err = unpopulate(val, &c.ConnectionProperties)
7462			delete(rawMsg, key)
7463		case "encryptedCredential":
7464			err = unpopulate(val, &c.EncryptedCredential)
7465			delete(rawMsg, key)
7466		case "password":
7467			c.Password, err = unmarshalSecretBaseClassification(val)
7468			delete(rawMsg, key)
7469		case "useEncryptedEndpoints":
7470			err = unpopulate(val, &c.UseEncryptedEndpoints)
7471			delete(rawMsg, key)
7472		case "useHostVerification":
7473			err = unpopulate(val, &c.UseHostVerification)
7474			delete(rawMsg, key)
7475		case "usePeerVerification":
7476			err = unpopulate(val, &c.UsePeerVerification)
7477			delete(rawMsg, key)
7478		case "username":
7479			err = unpopulate(val, &c.Username)
7480			delete(rawMsg, key)
7481		}
7482		if err != nil {
7483			return err
7484		}
7485	}
7486	return nil
7487}
7488
7489// ConcurObjectDataset - Concur Service dataset.
7490type ConcurObjectDataset struct {
7491	Dataset
7492	// Properties specific to this dataset type.
7493	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
7494}
7495
7496// MarshalJSON implements the json.Marshaller interface for type ConcurObjectDataset.
7497func (c ConcurObjectDataset) MarshalJSON() ([]byte, error) {
7498	objectMap := c.Dataset.marshalInternal("ConcurObject")
7499	populate(objectMap, "typeProperties", c.TypeProperties)
7500	return json.Marshal(objectMap)
7501}
7502
7503// UnmarshalJSON implements the json.Unmarshaller interface for type ConcurObjectDataset.
7504func (c *ConcurObjectDataset) UnmarshalJSON(data []byte) error {
7505	var rawMsg map[string]json.RawMessage
7506	if err := json.Unmarshal(data, &rawMsg); err != nil {
7507		return err
7508	}
7509	for key, val := range rawMsg {
7510		var err error
7511		switch key {
7512		case "typeProperties":
7513			err = unpopulate(val, &c.TypeProperties)
7514			delete(rawMsg, key)
7515		}
7516		if err != nil {
7517			return err
7518		}
7519	}
7520	return c.Dataset.unmarshalInternal(rawMsg)
7521}
7522
7523// ConcurSource - A copy activity Concur Service source.
7524type ConcurSource struct {
7525	TabularSource
7526	// A query to retrieve data from source. Type: string (or Expression with resultType string).
7527	Query interface{} `json:"query,omitempty"`
7528}
7529
7530// MarshalJSON implements the json.Marshaller interface for type ConcurSource.
7531func (c ConcurSource) MarshalJSON() ([]byte, error) {
7532	objectMap := c.TabularSource.marshalInternal("ConcurSource")
7533	populate(objectMap, "query", c.Query)
7534	return json.Marshal(objectMap)
7535}
7536
7537// UnmarshalJSON implements the json.Unmarshaller interface for type ConcurSource.
7538func (c *ConcurSource) UnmarshalJSON(data []byte) error {
7539	var rawMsg map[string]json.RawMessage
7540	if err := json.Unmarshal(data, &rawMsg); err != nil {
7541		return err
7542	}
7543	for key, val := range rawMsg {
7544		var err error
7545		switch key {
7546		case "query":
7547			err = unpopulate(val, &c.Query)
7548			delete(rawMsg, key)
7549		}
7550		if err != nil {
7551			return err
7552		}
7553	}
7554	return c.TabularSource.unmarshalInternal(rawMsg)
7555}
7556
7557// ControlActivityClassification provides polymorphic access to related types.
7558// Call the interface's GetControlActivity() method to access the common type.
7559// Use a type switch to determine the concrete type.  The possible types are:
7560// - *AppendVariableActivity, *ControlActivity, *ExecutePipelineActivity, *FilterActivity, *ForEachActivity, *IfConditionActivity,
7561// - *SetVariableActivity, *SwitchActivity, *UntilActivity, *ValidationActivity, *WaitActivity, *WebHookActivity
7562type ControlActivityClassification interface {
7563	ActivityClassification
7564	// GetControlActivity returns the ControlActivity content of the underlying type.
7565	GetControlActivity() *ControlActivity
7566}
7567
7568// ControlActivity - Base class for all control activities like IfCondition, ForEach , Until.
7569type ControlActivity struct {
7570	Activity
7571}
7572
7573// GetControlActivity implements the ControlActivityClassification interface for type ControlActivity.
7574func (c *ControlActivity) GetControlActivity() *ControlActivity { return c }
7575
7576// MarshalJSON implements the json.Marshaller interface for type ControlActivity.
7577func (c ControlActivity) MarshalJSON() ([]byte, error) {
7578	objectMap := c.marshalInternal("Container")
7579	return json.Marshal(objectMap)
7580}
7581
7582func (c ControlActivity) marshalInternal(discValue string) map[string]interface{} {
7583	objectMap := c.Activity.marshalInternal(discValue)
7584	return objectMap
7585}
7586
7587func (c *ControlActivity) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
7588	return c.Activity.unmarshalInternal(rawMsg)
7589}
7590
7591// CopyActivity - Copy activity.
7592type CopyActivity struct {
7593	ExecutionActivity
7594	// REQUIRED; Copy activity properties.
7595	TypeProperties *CopyActivityTypeProperties `json:"typeProperties,omitempty"`
7596
7597	// List of inputs for the activity.
7598	Inputs []*DatasetReference `json:"inputs,omitempty"`
7599
7600	// List of outputs for the activity.
7601	Outputs []*DatasetReference `json:"outputs,omitempty"`
7602}
7603
7604// MarshalJSON implements the json.Marshaller interface for type CopyActivity.
7605func (c CopyActivity) MarshalJSON() ([]byte, error) {
7606	objectMap := c.ExecutionActivity.marshalInternal("Copy")
7607	populate(objectMap, "inputs", c.Inputs)
7608	populate(objectMap, "outputs", c.Outputs)
7609	populate(objectMap, "typeProperties", c.TypeProperties)
7610	return json.Marshal(objectMap)
7611}
7612
7613// UnmarshalJSON implements the json.Unmarshaller interface for type CopyActivity.
7614func (c *CopyActivity) UnmarshalJSON(data []byte) error {
7615	var rawMsg map[string]json.RawMessage
7616	if err := json.Unmarshal(data, &rawMsg); err != nil {
7617		return err
7618	}
7619	for key, val := range rawMsg {
7620		var err error
7621		switch key {
7622		case "inputs":
7623			err = unpopulate(val, &c.Inputs)
7624			delete(rawMsg, key)
7625		case "outputs":
7626			err = unpopulate(val, &c.Outputs)
7627			delete(rawMsg, key)
7628		case "typeProperties":
7629			err = unpopulate(val, &c.TypeProperties)
7630			delete(rawMsg, key)
7631		}
7632		if err != nil {
7633			return err
7634		}
7635	}
7636	return c.ExecutionActivity.unmarshalInternal(rawMsg)
7637}
7638
7639// CopyActivityLogSettings - Settings for copy activity log.
7640type CopyActivityLogSettings struct {
7641	// Specifies whether to enable reliable logging. Type: boolean (or Expression with resultType boolean).
7642	EnableReliableLogging interface{} `json:"enableReliableLogging,omitempty"`
7643
7644	// Gets or sets the log level, support: Info, Warning. Type: string (or Expression with resultType string).
7645	LogLevel interface{} `json:"logLevel,omitempty"`
7646}
7647
7648// CopyActivityTypeProperties - Copy activity properties.
7649type CopyActivityTypeProperties struct {
7650	// REQUIRED; Copy activity sink.
7651	Sink CopySinkClassification `json:"sink,omitempty"`
7652
7653	// REQUIRED; Copy activity source.
7654	Source CopySourceClassification `json:"source,omitempty"`
7655
7656	// Maximum number of data integration units that can be used to perform this data movement. Type: integer (or Expression with resultType integer), minimum:
7657	// 0.
7658	DataIntegrationUnits interface{} `json:"dataIntegrationUnits,omitempty"`
7659
7660	// Whether to skip incompatible row. Default value is false. Type: boolean (or Expression with resultType boolean).
7661	EnableSkipIncompatibleRow interface{} `json:"enableSkipIncompatibleRow,omitempty"`
7662
7663	// Specifies whether to copy data via an interim staging. Default value is false. Type: boolean (or Expression with resultType boolean).
7664	EnableStaging interface{} `json:"enableStaging,omitempty"`
7665
7666	// Log settings customer needs provide when enabling log.
7667	LogSettings *LogSettings `json:"logSettings,omitempty"`
7668
7669	// (Deprecated. Please use LogSettings) Log storage settings customer need to provide when enabling session log.
7670	LogStorageSettings *LogStorageSettings `json:"logStorageSettings,omitempty"`
7671
7672	// Maximum number of concurrent sessions opened on the source or sink to avoid overloading the data store. Type: integer (or Expression with resultType
7673	// integer), minimum: 0.
7674	ParallelCopies interface{} `json:"parallelCopies,omitempty"`
7675
7676	// Preserve rules.
7677	Preserve []interface{} `json:"preserve,omitempty"`
7678
7679	// Preserve Rules.
7680	PreserveRules []interface{} `json:"preserveRules,omitempty"`
7681
7682	// Redirect incompatible row settings when EnableSkipIncompatibleRow is true.
7683	RedirectIncompatibleRowSettings *RedirectIncompatibleRowSettings `json:"redirectIncompatibleRowSettings,omitempty"`
7684
7685	// Specify the fault tolerance for data consistency.
7686	SkipErrorFile *SkipErrorFile `json:"skipErrorFile,omitempty"`
7687
7688	// Specifies interim staging settings when EnableStaging is true.
7689	StagingSettings *StagingSettings `json:"stagingSettings,omitempty"`
7690
7691	// Copy activity translator. If not specified, tabular translator is used.
7692	Translator interface{} `json:"translator,omitempty"`
7693
7694	// Whether to enable Data Consistency validation. Type: boolean (or Expression with resultType boolean).
7695	ValidateDataConsistency interface{} `json:"validateDataConsistency,omitempty"`
7696}
7697
7698// MarshalJSON implements the json.Marshaller interface for type CopyActivityTypeProperties.
7699func (c CopyActivityTypeProperties) MarshalJSON() ([]byte, error) {
7700	objectMap := make(map[string]interface{})
7701	populate(objectMap, "dataIntegrationUnits", c.DataIntegrationUnits)
7702	populate(objectMap, "enableSkipIncompatibleRow", c.EnableSkipIncompatibleRow)
7703	populate(objectMap, "enableStaging", c.EnableStaging)
7704	populate(objectMap, "logSettings", c.LogSettings)
7705	populate(objectMap, "logStorageSettings", c.LogStorageSettings)
7706	populate(objectMap, "parallelCopies", c.ParallelCopies)
7707	populate(objectMap, "preserve", c.Preserve)
7708	populate(objectMap, "preserveRules", c.PreserveRules)
7709	populate(objectMap, "redirectIncompatibleRowSettings", c.RedirectIncompatibleRowSettings)
7710	populate(objectMap, "sink", c.Sink)
7711	populate(objectMap, "skipErrorFile", c.SkipErrorFile)
7712	populate(objectMap, "source", c.Source)
7713	populate(objectMap, "stagingSettings", c.StagingSettings)
7714	populate(objectMap, "translator", c.Translator)
7715	populate(objectMap, "validateDataConsistency", c.ValidateDataConsistency)
7716	return json.Marshal(objectMap)
7717}
7718
7719// UnmarshalJSON implements the json.Unmarshaller interface for type CopyActivityTypeProperties.
7720func (c *CopyActivityTypeProperties) UnmarshalJSON(data []byte) error {
7721	var rawMsg map[string]json.RawMessage
7722	if err := json.Unmarshal(data, &rawMsg); err != nil {
7723		return err
7724	}
7725	for key, val := range rawMsg {
7726		var err error
7727		switch key {
7728		case "dataIntegrationUnits":
7729			err = unpopulate(val, &c.DataIntegrationUnits)
7730			delete(rawMsg, key)
7731		case "enableSkipIncompatibleRow":
7732			err = unpopulate(val, &c.EnableSkipIncompatibleRow)
7733			delete(rawMsg, key)
7734		case "enableStaging":
7735			err = unpopulate(val, &c.EnableStaging)
7736			delete(rawMsg, key)
7737		case "logSettings":
7738			err = unpopulate(val, &c.LogSettings)
7739			delete(rawMsg, key)
7740		case "logStorageSettings":
7741			err = unpopulate(val, &c.LogStorageSettings)
7742			delete(rawMsg, key)
7743		case "parallelCopies":
7744			err = unpopulate(val, &c.ParallelCopies)
7745			delete(rawMsg, key)
7746		case "preserve":
7747			err = unpopulate(val, &c.Preserve)
7748			delete(rawMsg, key)
7749		case "preserveRules":
7750			err = unpopulate(val, &c.PreserveRules)
7751			delete(rawMsg, key)
7752		case "redirectIncompatibleRowSettings":
7753			err = unpopulate(val, &c.RedirectIncompatibleRowSettings)
7754			delete(rawMsg, key)
7755		case "sink":
7756			c.Sink, err = unmarshalCopySinkClassification(val)
7757			delete(rawMsg, key)
7758		case "skipErrorFile":
7759			err = unpopulate(val, &c.SkipErrorFile)
7760			delete(rawMsg, key)
7761		case "source":
7762			c.Source, err = unmarshalCopySourceClassification(val)
7763			delete(rawMsg, key)
7764		case "stagingSettings":
7765			err = unpopulate(val, &c.StagingSettings)
7766			delete(rawMsg, key)
7767		case "translator":
7768			err = unpopulate(val, &c.Translator)
7769			delete(rawMsg, key)
7770		case "validateDataConsistency":
7771			err = unpopulate(val, &c.ValidateDataConsistency)
7772			delete(rawMsg, key)
7773		}
7774		if err != nil {
7775			return err
7776		}
7777	}
7778	return nil
7779}
7780
7781// CopySinkClassification provides polymorphic access to related types.
7782// Call the interface's GetCopySink() method to access the common type.
7783// Use a type switch to determine the concrete type.  The possible types are:
7784// - *AvroSink, *AzureBlobFSSink, *AzureDataExplorerSink, *AzureDataLakeStoreSink, *AzureDatabricksDeltaLakeSink, *AzureMySqlSink,
7785// - *AzurePostgreSqlSink, *AzureQueueSink, *AzureSearchIndexSink, *AzureSqlSink, *AzureTableSink, *BinarySink, *BlobSink,
7786// - *CommonDataServiceForAppsSink, *CopySink, *CosmosDbMongoDbApiSink, *CosmosDbSqlApiSink, *DelimitedTextSink, *DocumentDbCollectionSink,
7787// - *DynamicsCrmSink, *DynamicsSink, *FileSystemSink, *InformixSink, *JsonSink, *MicrosoftAccessSink, *OdbcSink, *OracleSink,
7788// - *OrcSink, *ParquetSink, *RestSink, *SalesforceServiceCloudSink, *SalesforceSink, *SapCloudForCustomerSink, *SnowflakeSink,
7789// - *SqlDWSink, *SqlMISink, *SqlServerSink, *SqlSink
7790type CopySinkClassification interface {
7791	// GetCopySink returns the CopySink content of the underlying type.
7792	GetCopySink() *CopySink
7793}
7794
7795// CopySink - A copy activity sink.
7796type CopySink struct {
7797	// REQUIRED; Copy sink type.
7798	Type *string `json:"type,omitempty"`
7799
7800	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
7801	AdditionalProperties map[string]interface{}
7802
7803	// The maximum concurrent connection count for the sink data store. Type: integer (or Expression with resultType integer).
7804	MaxConcurrentConnections interface{} `json:"maxConcurrentConnections,omitempty"`
7805
7806	// Sink retry count. Type: integer (or Expression with resultType integer).
7807	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
7808
7809	// Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
7810	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
7811
7812	// Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
7813	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
7814
7815	// Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
7816	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
7817}
7818
7819// GetCopySink implements the CopySinkClassification interface for type CopySink.
7820func (c *CopySink) GetCopySink() *CopySink { return c }
7821
7822// UnmarshalJSON implements the json.Unmarshaller interface for type CopySink.
7823func (c *CopySink) UnmarshalJSON(data []byte) error {
7824	var rawMsg map[string]json.RawMessage
7825	if err := json.Unmarshal(data, &rawMsg); err != nil {
7826		return err
7827	}
7828	return c.unmarshalInternal(rawMsg)
7829}
7830
7831func (c CopySink) marshalInternal(discValue string) map[string]interface{} {
7832	objectMap := make(map[string]interface{})
7833	populate(objectMap, "maxConcurrentConnections", c.MaxConcurrentConnections)
7834	populate(objectMap, "sinkRetryCount", c.SinkRetryCount)
7835	populate(objectMap, "sinkRetryWait", c.SinkRetryWait)
7836	c.Type = &discValue
7837	objectMap["type"] = c.Type
7838	populate(objectMap, "writeBatchSize", c.WriteBatchSize)
7839	populate(objectMap, "writeBatchTimeout", c.WriteBatchTimeout)
7840	if c.AdditionalProperties != nil {
7841		for key, val := range c.AdditionalProperties {
7842			objectMap[key] = val
7843		}
7844	}
7845	return objectMap
7846}
7847
7848func (c *CopySink) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
7849	for key, val := range rawMsg {
7850		var err error
7851		switch key {
7852		case "maxConcurrentConnections":
7853			err = unpopulate(val, &c.MaxConcurrentConnections)
7854			delete(rawMsg, key)
7855		case "sinkRetryCount":
7856			err = unpopulate(val, &c.SinkRetryCount)
7857			delete(rawMsg, key)
7858		case "sinkRetryWait":
7859			err = unpopulate(val, &c.SinkRetryWait)
7860			delete(rawMsg, key)
7861		case "type":
7862			err = unpopulate(val, &c.Type)
7863			delete(rawMsg, key)
7864		case "writeBatchSize":
7865			err = unpopulate(val, &c.WriteBatchSize)
7866			delete(rawMsg, key)
7867		case "writeBatchTimeout":
7868			err = unpopulate(val, &c.WriteBatchTimeout)
7869			delete(rawMsg, key)
7870		default:
7871			if c.AdditionalProperties == nil {
7872				c.AdditionalProperties = map[string]interface{}{}
7873			}
7874			if val != nil {
7875				var aux interface{}
7876				err = json.Unmarshal(val, &aux)
7877				c.AdditionalProperties[key] = aux
7878			}
7879			delete(rawMsg, key)
7880		}
7881		if err != nil {
7882			return err
7883		}
7884	}
7885	return nil
7886}
7887
7888// CopySourceClassification provides polymorphic access to related types.
7889// Call the interface's GetCopySource() method to access the common type.
7890// Use a type switch to determine the concrete type.  The possible types are:
7891// - *AmazonMWSSource, *AmazonRedshiftSource, *AvroSource, *AzureBlobFSSource, *AzureDataExplorerSource, *AzureDataLakeStoreSource,
7892// - *AzureDatabricksDeltaLakeSource, *AzureMariaDBSource, *AzureMySqlSource, *AzurePostgreSqlSource, *AzureSqlSource, *AzureTableSource,
7893// - *BinarySource, *BlobSource, *CassandraSource, *CommonDataServiceForAppsSource, *ConcurSource, *CopySource, *CosmosDbMongoDbApiSource,
7894// - *CosmosDbSqlApiSource, *CouchbaseSource, *Db2Source, *DelimitedTextSource, *DocumentDbCollectionSource, *DrillSource,
7895// - *DynamicsAXSource, *DynamicsCrmSource, *DynamicsSource, *EloquaSource, *ExcelSource, *FileSystemSource, *GoogleAdWordsSource,
7896// - *GoogleBigQuerySource, *GreenplumSource, *HBaseSource, *HdfsSource, *HiveSource, *HttpSource, *HubspotSource, *ImpalaSource,
7897// - *InformixSource, *JiraSource, *JsonSource, *MagentoSource, *MariaDBSource, *MarketoSource, *MicrosoftAccessSource, *MongoDbAtlasSource,
7898// - *MongoDbSource, *MongoDbV2Source, *MySqlSource, *NetezzaSource, *ODataSource, *OdbcSource, *Office365Source, *OracleServiceCloudSource,
7899// - *OracleSource, *OrcSource, *ParquetSource, *PaypalSource, *PhoenixSource, *PostgreSqlSource, *PrestoSource, *QuickBooksSource,
7900// - *RelationalSource, *ResponsysSource, *RestSource, *SalesforceMarketingCloudSource, *SalesforceServiceCloudSource, *SalesforceSource,
7901// - *SapBwSource, *SapCloudForCustomerSource, *SapEccSource, *SapHanaSource, *SapOpenHubSource, *SapTableSource, *ServiceNowSource,
7902// - *SharePointOnlineListSource, *ShopifySource, *SnowflakeSource, *SparkSource, *SqlDWSource, *SqlMISource, *SqlServerSource,
7903// - *SqlSource, *SquareSource, *SybaseSource, *TabularSource, *TeradataSource, *VerticaSource, *WebSource, *XeroSource, *XmlSource,
7904// - *ZohoSource
7905type CopySourceClassification interface {
7906	// GetCopySource returns the CopySource content of the underlying type.
7907	GetCopySource() *CopySource
7908}
7909
7910// CopySource - A copy activity source.
7911type CopySource struct {
7912	// REQUIRED; Copy source type.
7913	Type *string `json:"type,omitempty"`
7914
7915	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
7916	AdditionalProperties map[string]interface{}
7917
7918	// The maximum concurrent connection count for the source data store. Type: integer (or Expression with resultType integer).
7919	MaxConcurrentConnections interface{} `json:"maxConcurrentConnections,omitempty"`
7920
7921	// Source retry count. Type: integer (or Expression with resultType integer).
7922	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
7923
7924	// Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
7925	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
7926}
7927
7928// GetCopySource implements the CopySourceClassification interface for type CopySource.
7929func (c *CopySource) GetCopySource() *CopySource { return c }
7930
7931// UnmarshalJSON implements the json.Unmarshaller interface for type CopySource.
7932func (c *CopySource) UnmarshalJSON(data []byte) error {
7933	var rawMsg map[string]json.RawMessage
7934	if err := json.Unmarshal(data, &rawMsg); err != nil {
7935		return err
7936	}
7937	return c.unmarshalInternal(rawMsg)
7938}
7939
7940func (c CopySource) marshalInternal(discValue string) map[string]interface{} {
7941	objectMap := make(map[string]interface{})
7942	populate(objectMap, "maxConcurrentConnections", c.MaxConcurrentConnections)
7943	populate(objectMap, "sourceRetryCount", c.SourceRetryCount)
7944	populate(objectMap, "sourceRetryWait", c.SourceRetryWait)
7945	c.Type = &discValue
7946	objectMap["type"] = c.Type
7947	if c.AdditionalProperties != nil {
7948		for key, val := range c.AdditionalProperties {
7949			objectMap[key] = val
7950		}
7951	}
7952	return objectMap
7953}
7954
7955func (c *CopySource) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
7956	for key, val := range rawMsg {
7957		var err error
7958		switch key {
7959		case "maxConcurrentConnections":
7960			err = unpopulate(val, &c.MaxConcurrentConnections)
7961			delete(rawMsg, key)
7962		case "sourceRetryCount":
7963			err = unpopulate(val, &c.SourceRetryCount)
7964			delete(rawMsg, key)
7965		case "sourceRetryWait":
7966			err = unpopulate(val, &c.SourceRetryWait)
7967			delete(rawMsg, key)
7968		case "type":
7969			err = unpopulate(val, &c.Type)
7970			delete(rawMsg, key)
7971		default:
7972			if c.AdditionalProperties == nil {
7973				c.AdditionalProperties = map[string]interface{}{}
7974			}
7975			if val != nil {
7976				var aux interface{}
7977				err = json.Unmarshal(val, &aux)
7978				c.AdditionalProperties[key] = aux
7979			}
7980			delete(rawMsg, key)
7981		}
7982		if err != nil {
7983			return err
7984		}
7985	}
7986	return nil
7987}
7988
7989// CopyTranslatorClassification provides polymorphic access to related types.
7990// Call the interface's GetCopyTranslator() method to access the common type.
7991// Use a type switch to determine the concrete type.  The possible types are:
7992// - *CopyTranslator, *TabularTranslator
7993type CopyTranslatorClassification interface {
7994	// GetCopyTranslator returns the CopyTranslator content of the underlying type.
7995	GetCopyTranslator() *CopyTranslator
7996}
7997
7998// CopyTranslator - A copy activity translator.
7999type CopyTranslator struct {
8000	// REQUIRED; Copy translator type.
8001	Type *string `json:"type,omitempty"`
8002
8003	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
8004	AdditionalProperties map[string]interface{}
8005}
8006
8007// GetCopyTranslator implements the CopyTranslatorClassification interface for type CopyTranslator.
8008func (c *CopyTranslator) GetCopyTranslator() *CopyTranslator { return c }
8009
8010// UnmarshalJSON implements the json.Unmarshaller interface for type CopyTranslator.
8011func (c *CopyTranslator) UnmarshalJSON(data []byte) error {
8012	var rawMsg map[string]json.RawMessage
8013	if err := json.Unmarshal(data, &rawMsg); err != nil {
8014		return err
8015	}
8016	return c.unmarshalInternal(rawMsg)
8017}
8018
8019func (c CopyTranslator) marshalInternal(discValue string) map[string]interface{} {
8020	objectMap := make(map[string]interface{})
8021	c.Type = &discValue
8022	objectMap["type"] = c.Type
8023	if c.AdditionalProperties != nil {
8024		for key, val := range c.AdditionalProperties {
8025			objectMap[key] = val
8026		}
8027	}
8028	return objectMap
8029}
8030
8031func (c *CopyTranslator) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
8032	for key, val := range rawMsg {
8033		var err error
8034		switch key {
8035		case "type":
8036			err = unpopulate(val, &c.Type)
8037			delete(rawMsg, key)
8038		default:
8039			if c.AdditionalProperties == nil {
8040				c.AdditionalProperties = map[string]interface{}{}
8041			}
8042			if val != nil {
8043				var aux interface{}
8044				err = json.Unmarshal(val, &aux)
8045				c.AdditionalProperties[key] = aux
8046			}
8047			delete(rawMsg, key)
8048		}
8049		if err != nil {
8050			return err
8051		}
8052	}
8053	return nil
8054}
8055
8056// CosmosDbLinkedService - Microsoft Azure Cosmos Database (CosmosDB) linked service.
8057type CosmosDbLinkedService struct {
8058	LinkedService
8059	// REQUIRED; CosmosDB linked service properties.
8060	TypeProperties *CosmosDbLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
8061}
8062
8063// MarshalJSON implements the json.Marshaller interface for type CosmosDbLinkedService.
8064func (c CosmosDbLinkedService) MarshalJSON() ([]byte, error) {
8065	objectMap := c.LinkedService.marshalInternal("CosmosDb")
8066	populate(objectMap, "typeProperties", c.TypeProperties)
8067	return json.Marshal(objectMap)
8068}
8069
8070// UnmarshalJSON implements the json.Unmarshaller interface for type CosmosDbLinkedService.
8071func (c *CosmosDbLinkedService) UnmarshalJSON(data []byte) error {
8072	var rawMsg map[string]json.RawMessage
8073	if err := json.Unmarshal(data, &rawMsg); err != nil {
8074		return err
8075	}
8076	for key, val := range rawMsg {
8077		var err error
8078		switch key {
8079		case "typeProperties":
8080			err = unpopulate(val, &c.TypeProperties)
8081			delete(rawMsg, key)
8082		}
8083		if err != nil {
8084			return err
8085		}
8086	}
8087	return c.LinkedService.unmarshalInternal(rawMsg)
8088}
8089
8090// CosmosDbLinkedServiceTypeProperties - CosmosDB linked service properties.
8091type CosmosDbLinkedServiceTypeProperties struct {
8092	// The endpoint of the Azure CosmosDB account. Type: string (or Expression with resultType string)
8093	AccountEndpoint interface{} `json:"accountEndpoint,omitempty"`
8094
8095	// The account key of the Azure CosmosDB account. Type: SecureString or AzureKeyVaultSecretReference.
8096	AccountKey SecretBaseClassification `json:"accountKey,omitempty"`
8097
8098	// The connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
8099	ConnectionString interface{} `json:"connectionString,omitempty"`
8100
8101	// The name of the database. Type: string (or Expression with resultType string)
8102	Database interface{} `json:"database,omitempty"`
8103
8104	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
8105	// with resultType string).
8106	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
8107}
8108
8109// MarshalJSON implements the json.Marshaller interface for type CosmosDbLinkedServiceTypeProperties.
8110func (c CosmosDbLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
8111	objectMap := make(map[string]interface{})
8112	populate(objectMap, "accountEndpoint", c.AccountEndpoint)
8113	populate(objectMap, "accountKey", c.AccountKey)
8114	populate(objectMap, "connectionString", c.ConnectionString)
8115	populate(objectMap, "database", c.Database)
8116	populate(objectMap, "encryptedCredential", c.EncryptedCredential)
8117	return json.Marshal(objectMap)
8118}
8119
8120// UnmarshalJSON implements the json.Unmarshaller interface for type CosmosDbLinkedServiceTypeProperties.
8121func (c *CosmosDbLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
8122	var rawMsg map[string]json.RawMessage
8123	if err := json.Unmarshal(data, &rawMsg); err != nil {
8124		return err
8125	}
8126	for key, val := range rawMsg {
8127		var err error
8128		switch key {
8129		case "accountEndpoint":
8130			err = unpopulate(val, &c.AccountEndpoint)
8131			delete(rawMsg, key)
8132		case "accountKey":
8133			c.AccountKey, err = unmarshalSecretBaseClassification(val)
8134			delete(rawMsg, key)
8135		case "connectionString":
8136			err = unpopulate(val, &c.ConnectionString)
8137			delete(rawMsg, key)
8138		case "database":
8139			err = unpopulate(val, &c.Database)
8140			delete(rawMsg, key)
8141		case "encryptedCredential":
8142			err = unpopulate(val, &c.EncryptedCredential)
8143			delete(rawMsg, key)
8144		}
8145		if err != nil {
8146			return err
8147		}
8148	}
8149	return nil
8150}
8151
8152// CosmosDbMongoDbAPICollectionDataset - The CosmosDB (MongoDB API) database dataset.
8153type CosmosDbMongoDbAPICollectionDataset struct {
8154	Dataset
8155	// REQUIRED; CosmosDB (MongoDB API) database dataset properties.
8156	TypeProperties *CosmosDbMongoDbAPICollectionDatasetTypeProperties `json:"typeProperties,omitempty"`
8157}
8158
8159// MarshalJSON implements the json.Marshaller interface for type CosmosDbMongoDbAPICollectionDataset.
8160func (c CosmosDbMongoDbAPICollectionDataset) MarshalJSON() ([]byte, error) {
8161	objectMap := c.Dataset.marshalInternal("CosmosDbMongoDbApiCollection")
8162	populate(objectMap, "typeProperties", c.TypeProperties)
8163	return json.Marshal(objectMap)
8164}
8165
8166// UnmarshalJSON implements the json.Unmarshaller interface for type CosmosDbMongoDbAPICollectionDataset.
8167func (c *CosmosDbMongoDbAPICollectionDataset) UnmarshalJSON(data []byte) error {
8168	var rawMsg map[string]json.RawMessage
8169	if err := json.Unmarshal(data, &rawMsg); err != nil {
8170		return err
8171	}
8172	for key, val := range rawMsg {
8173		var err error
8174		switch key {
8175		case "typeProperties":
8176			err = unpopulate(val, &c.TypeProperties)
8177			delete(rawMsg, key)
8178		}
8179		if err != nil {
8180			return err
8181		}
8182	}
8183	return c.Dataset.unmarshalInternal(rawMsg)
8184}
8185
8186// CosmosDbMongoDbAPICollectionDatasetTypeProperties - CosmosDB (MongoDB API) database dataset properties.
8187type CosmosDbMongoDbAPICollectionDatasetTypeProperties struct {
8188	// REQUIRED; The collection name of the CosmosDB (MongoDB API) database. Type: string (or Expression with resultType string).
8189	Collection interface{} `json:"collection,omitempty"`
8190}
8191
8192// CosmosDbMongoDbAPILinkedService - Linked service for CosmosDB (MongoDB API) data source.
8193type CosmosDbMongoDbAPILinkedService struct {
8194	LinkedService
8195	// REQUIRED; CosmosDB (MongoDB API) linked service properties.
8196	TypeProperties *CosmosDbMongoDbAPILinkedServiceTypeProperties `json:"typeProperties,omitempty"`
8197}
8198
8199// MarshalJSON implements the json.Marshaller interface for type CosmosDbMongoDbAPILinkedService.
8200func (c CosmosDbMongoDbAPILinkedService) MarshalJSON() ([]byte, error) {
8201	objectMap := c.LinkedService.marshalInternal("CosmosDbMongoDbApi")
8202	populate(objectMap, "typeProperties", c.TypeProperties)
8203	return json.Marshal(objectMap)
8204}
8205
8206// UnmarshalJSON implements the json.Unmarshaller interface for type CosmosDbMongoDbAPILinkedService.
8207func (c *CosmosDbMongoDbAPILinkedService) UnmarshalJSON(data []byte) error {
8208	var rawMsg map[string]json.RawMessage
8209	if err := json.Unmarshal(data, &rawMsg); err != nil {
8210		return err
8211	}
8212	for key, val := range rawMsg {
8213		var err error
8214		switch key {
8215		case "typeProperties":
8216			err = unpopulate(val, &c.TypeProperties)
8217			delete(rawMsg, key)
8218		}
8219		if err != nil {
8220			return err
8221		}
8222	}
8223	return c.LinkedService.unmarshalInternal(rawMsg)
8224}
8225
8226// CosmosDbMongoDbAPILinkedServiceTypeProperties - CosmosDB (MongoDB API) linked service properties.
8227type CosmosDbMongoDbAPILinkedServiceTypeProperties struct {
8228	// REQUIRED; The CosmosDB (MongoDB API) connection string. Type: string, SecureString or AzureKeyVaultSecretReference. Type: string, SecureString or AzureKeyVaultSecretReference.
8229	ConnectionString interface{} `json:"connectionString,omitempty"`
8230
8231	// REQUIRED; The name of the CosmosDB (MongoDB API) database that you want to access. Type: string (or Expression with resultType string).
8232	Database interface{} `json:"database,omitempty"`
8233}
8234
8235// CosmosDbMongoDbAPISink - A copy activity sink for a CosmosDB (MongoDB API) database.
8236type CosmosDbMongoDbAPISink struct {
8237	CopySink
8238	// Specifies whether the document with same key to be overwritten (upsert) rather than throw exception (insert). The default value is "insert". Type: string
8239	// (or Expression with resultType string). Type:
8240	// string (or Expression with resultType string).
8241	WriteBehavior interface{} `json:"writeBehavior,omitempty"`
8242}
8243
8244// MarshalJSON implements the json.Marshaller interface for type CosmosDbMongoDbAPISink.
8245func (c CosmosDbMongoDbAPISink) MarshalJSON() ([]byte, error) {
8246	objectMap := c.CopySink.marshalInternal("CosmosDbMongoDbApiSink")
8247	populate(objectMap, "writeBehavior", c.WriteBehavior)
8248	return json.Marshal(objectMap)
8249}
8250
8251// UnmarshalJSON implements the json.Unmarshaller interface for type CosmosDbMongoDbAPISink.
8252func (c *CosmosDbMongoDbAPISink) UnmarshalJSON(data []byte) error {
8253	var rawMsg map[string]json.RawMessage
8254	if err := json.Unmarshal(data, &rawMsg); err != nil {
8255		return err
8256	}
8257	for key, val := range rawMsg {
8258		var err error
8259		switch key {
8260		case "writeBehavior":
8261			err = unpopulate(val, &c.WriteBehavior)
8262			delete(rawMsg, key)
8263		}
8264		if err != nil {
8265			return err
8266		}
8267	}
8268	return c.CopySink.unmarshalInternal(rawMsg)
8269}
8270
8271// CosmosDbMongoDbAPISource - A copy activity source for a CosmosDB (MongoDB API) database.
8272type CosmosDbMongoDbAPISource struct {
8273	CopySource
8274	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
8275	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
8276
8277	// Specifies the number of documents to return in each batch of the response from MongoDB instance. In most cases, modifying the batch size will not affect
8278	// the user or the application. This property's
8279	// main purpose is to avoid hit the limitation of response size. Type: integer (or Expression with resultType integer).
8280	BatchSize interface{} `json:"batchSize,omitempty"`
8281
8282	// Cursor methods for Mongodb query.
8283	CursorMethods *MongoDbCursorMethodsProperties `json:"cursorMethods,omitempty"`
8284
8285	// Specifies selection filter using query operators. To return all documents in a collection, omit this parameter or pass an empty document ({}). Type:
8286	// string (or Expression with resultType string).
8287	Filter interface{} `json:"filter,omitempty"`
8288
8289	// Query timeout. Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
8290	QueryTimeout interface{} `json:"queryTimeout,omitempty"`
8291}
8292
8293// MarshalJSON implements the json.Marshaller interface for type CosmosDbMongoDbAPISource.
8294func (c CosmosDbMongoDbAPISource) MarshalJSON() ([]byte, error) {
8295	objectMap := c.CopySource.marshalInternal("CosmosDbMongoDbApiSource")
8296	populate(objectMap, "additionalColumns", c.AdditionalColumns)
8297	populate(objectMap, "batchSize", c.BatchSize)
8298	populate(objectMap, "cursorMethods", c.CursorMethods)
8299	populate(objectMap, "filter", c.Filter)
8300	populate(objectMap, "queryTimeout", c.QueryTimeout)
8301	return json.Marshal(objectMap)
8302}
8303
8304// UnmarshalJSON implements the json.Unmarshaller interface for type CosmosDbMongoDbAPISource.
8305func (c *CosmosDbMongoDbAPISource) UnmarshalJSON(data []byte) error {
8306	var rawMsg map[string]json.RawMessage
8307	if err := json.Unmarshal(data, &rawMsg); err != nil {
8308		return err
8309	}
8310	for key, val := range rawMsg {
8311		var err error
8312		switch key {
8313		case "additionalColumns":
8314			err = unpopulate(val, &c.AdditionalColumns)
8315			delete(rawMsg, key)
8316		case "batchSize":
8317			err = unpopulate(val, &c.BatchSize)
8318			delete(rawMsg, key)
8319		case "cursorMethods":
8320			err = unpopulate(val, &c.CursorMethods)
8321			delete(rawMsg, key)
8322		case "filter":
8323			err = unpopulate(val, &c.Filter)
8324			delete(rawMsg, key)
8325		case "queryTimeout":
8326			err = unpopulate(val, &c.QueryTimeout)
8327			delete(rawMsg, key)
8328		}
8329		if err != nil {
8330			return err
8331		}
8332	}
8333	return c.CopySource.unmarshalInternal(rawMsg)
8334}
8335
8336// CosmosDbSQLAPICollectionDataset - Microsoft Azure CosmosDB (SQL API) Collection dataset.
8337type CosmosDbSQLAPICollectionDataset struct {
8338	Dataset
8339	// REQUIRED; CosmosDB (SQL API) Collection dataset properties.
8340	TypeProperties *CosmosDbSQLAPICollectionDatasetTypeProperties `json:"typeProperties,omitempty"`
8341}
8342
8343// MarshalJSON implements the json.Marshaller interface for type CosmosDbSQLAPICollectionDataset.
8344func (c CosmosDbSQLAPICollectionDataset) MarshalJSON() ([]byte, error) {
8345	objectMap := c.Dataset.marshalInternal("CosmosDbSqlApiCollection")
8346	populate(objectMap, "typeProperties", c.TypeProperties)
8347	return json.Marshal(objectMap)
8348}
8349
8350// UnmarshalJSON implements the json.Unmarshaller interface for type CosmosDbSQLAPICollectionDataset.
8351func (c *CosmosDbSQLAPICollectionDataset) UnmarshalJSON(data []byte) error {
8352	var rawMsg map[string]json.RawMessage
8353	if err := json.Unmarshal(data, &rawMsg); err != nil {
8354		return err
8355	}
8356	for key, val := range rawMsg {
8357		var err error
8358		switch key {
8359		case "typeProperties":
8360			err = unpopulate(val, &c.TypeProperties)
8361			delete(rawMsg, key)
8362		}
8363		if err != nil {
8364			return err
8365		}
8366	}
8367	return c.Dataset.unmarshalInternal(rawMsg)
8368}
8369
8370// CosmosDbSQLAPICollectionDatasetTypeProperties - CosmosDB (SQL API) Collection dataset properties.
8371type CosmosDbSQLAPICollectionDatasetTypeProperties struct {
8372	// REQUIRED; CosmosDB (SQL API) collection name. Type: string (or Expression with resultType string).
8373	CollectionName interface{} `json:"collectionName,omitempty"`
8374}
8375
8376// CosmosDbSQLAPISink - A copy activity Azure CosmosDB (SQL API) Collection sink.
8377type CosmosDbSQLAPISink struct {
8378	CopySink
8379	// Describes how to write data to Azure Cosmos DB. Type: string (or Expression with resultType string). Allowed values: insert and upsert.
8380	WriteBehavior interface{} `json:"writeBehavior,omitempty"`
8381}
8382
8383// MarshalJSON implements the json.Marshaller interface for type CosmosDbSQLAPISink.
8384func (c CosmosDbSQLAPISink) MarshalJSON() ([]byte, error) {
8385	objectMap := c.CopySink.marshalInternal("CosmosDbSqlApiSink")
8386	populate(objectMap, "writeBehavior", c.WriteBehavior)
8387	return json.Marshal(objectMap)
8388}
8389
8390// UnmarshalJSON implements the json.Unmarshaller interface for type CosmosDbSQLAPISink.
8391func (c *CosmosDbSQLAPISink) UnmarshalJSON(data []byte) error {
8392	var rawMsg map[string]json.RawMessage
8393	if err := json.Unmarshal(data, &rawMsg); err != nil {
8394		return err
8395	}
8396	for key, val := range rawMsg {
8397		var err error
8398		switch key {
8399		case "writeBehavior":
8400			err = unpopulate(val, &c.WriteBehavior)
8401			delete(rawMsg, key)
8402		}
8403		if err != nil {
8404			return err
8405		}
8406	}
8407	return c.CopySink.unmarshalInternal(rawMsg)
8408}
8409
8410// CosmosDbSQLAPISource - A copy activity Azure CosmosDB (SQL API) Collection source.
8411type CosmosDbSQLAPISource struct {
8412	CopySource
8413	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
8414	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
8415
8416	// Whether detect primitive values as datetime values. Type: boolean (or Expression with resultType boolean).
8417	DetectDatetime interface{} `json:"detectDatetime,omitempty"`
8418
8419	// Page size of the result. Type: integer (or Expression with resultType integer).
8420	PageSize interface{} `json:"pageSize,omitempty"`
8421
8422	// Preferred regions. Type: array of strings (or Expression with resultType array of strings).
8423	PreferredRegions interface{} `json:"preferredRegions,omitempty"`
8424
8425	// SQL API query. Type: string (or Expression with resultType string).
8426	Query interface{} `json:"query,omitempty"`
8427}
8428
8429// MarshalJSON implements the json.Marshaller interface for type CosmosDbSQLAPISource.
8430func (c CosmosDbSQLAPISource) MarshalJSON() ([]byte, error) {
8431	objectMap := c.CopySource.marshalInternal("CosmosDbSqlApiSource")
8432	populate(objectMap, "additionalColumns", c.AdditionalColumns)
8433	populate(objectMap, "detectDatetime", c.DetectDatetime)
8434	populate(objectMap, "pageSize", c.PageSize)
8435	populate(objectMap, "preferredRegions", c.PreferredRegions)
8436	populate(objectMap, "query", c.Query)
8437	return json.Marshal(objectMap)
8438}
8439
8440// UnmarshalJSON implements the json.Unmarshaller interface for type CosmosDbSQLAPISource.
8441func (c *CosmosDbSQLAPISource) UnmarshalJSON(data []byte) error {
8442	var rawMsg map[string]json.RawMessage
8443	if err := json.Unmarshal(data, &rawMsg); err != nil {
8444		return err
8445	}
8446	for key, val := range rawMsg {
8447		var err error
8448		switch key {
8449		case "additionalColumns":
8450			err = unpopulate(val, &c.AdditionalColumns)
8451			delete(rawMsg, key)
8452		case "detectDatetime":
8453			err = unpopulate(val, &c.DetectDatetime)
8454			delete(rawMsg, key)
8455		case "pageSize":
8456			err = unpopulate(val, &c.PageSize)
8457			delete(rawMsg, key)
8458		case "preferredRegions":
8459			err = unpopulate(val, &c.PreferredRegions)
8460			delete(rawMsg, key)
8461		case "query":
8462			err = unpopulate(val, &c.Query)
8463			delete(rawMsg, key)
8464		}
8465		if err != nil {
8466			return err
8467		}
8468	}
8469	return c.CopySource.unmarshalInternal(rawMsg)
8470}
8471
8472// CouchbaseLinkedService - Couchbase server linked service.
8473type CouchbaseLinkedService struct {
8474	LinkedService
8475	// REQUIRED; Couchbase server linked service properties.
8476	TypeProperties *CouchbaseLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
8477}
8478
8479// MarshalJSON implements the json.Marshaller interface for type CouchbaseLinkedService.
8480func (c CouchbaseLinkedService) MarshalJSON() ([]byte, error) {
8481	objectMap := c.LinkedService.marshalInternal("Couchbase")
8482	populate(objectMap, "typeProperties", c.TypeProperties)
8483	return json.Marshal(objectMap)
8484}
8485
8486// UnmarshalJSON implements the json.Unmarshaller interface for type CouchbaseLinkedService.
8487func (c *CouchbaseLinkedService) UnmarshalJSON(data []byte) error {
8488	var rawMsg map[string]json.RawMessage
8489	if err := json.Unmarshal(data, &rawMsg); err != nil {
8490		return err
8491	}
8492	for key, val := range rawMsg {
8493		var err error
8494		switch key {
8495		case "typeProperties":
8496			err = unpopulate(val, &c.TypeProperties)
8497			delete(rawMsg, key)
8498		}
8499		if err != nil {
8500			return err
8501		}
8502	}
8503	return c.LinkedService.unmarshalInternal(rawMsg)
8504}
8505
8506// CouchbaseLinkedServiceTypeProperties - Couchbase server linked service properties.
8507type CouchbaseLinkedServiceTypeProperties struct {
8508	// An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
8509	ConnectionString interface{} `json:"connectionString,omitempty"`
8510
8511	// The Azure key vault secret reference of credString in connection string.
8512	CredString *AzureKeyVaultSecretReference `json:"credString,omitempty"`
8513
8514	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
8515	// with resultType string).
8516	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
8517}
8518
8519// CouchbaseSource - A copy activity Couchbase server source.
8520type CouchbaseSource struct {
8521	TabularSource
8522	// A query to retrieve data from source. Type: string (or Expression with resultType string).
8523	Query interface{} `json:"query,omitempty"`
8524}
8525
8526// MarshalJSON implements the json.Marshaller interface for type CouchbaseSource.
8527func (c CouchbaseSource) MarshalJSON() ([]byte, error) {
8528	objectMap := c.TabularSource.marshalInternal("CouchbaseSource")
8529	populate(objectMap, "query", c.Query)
8530	return json.Marshal(objectMap)
8531}
8532
8533// UnmarshalJSON implements the json.Unmarshaller interface for type CouchbaseSource.
8534func (c *CouchbaseSource) UnmarshalJSON(data []byte) error {
8535	var rawMsg map[string]json.RawMessage
8536	if err := json.Unmarshal(data, &rawMsg); err != nil {
8537		return err
8538	}
8539	for key, val := range rawMsg {
8540		var err error
8541		switch key {
8542		case "query":
8543			err = unpopulate(val, &c.Query)
8544			delete(rawMsg, key)
8545		}
8546		if err != nil {
8547			return err
8548		}
8549	}
8550	return c.TabularSource.unmarshalInternal(rawMsg)
8551}
8552
8553// CouchbaseTableDataset - Couchbase server dataset.
8554type CouchbaseTableDataset struct {
8555	Dataset
8556	// Properties specific to this dataset type.
8557	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
8558}
8559
8560// MarshalJSON implements the json.Marshaller interface for type CouchbaseTableDataset.
8561func (c CouchbaseTableDataset) MarshalJSON() ([]byte, error) {
8562	objectMap := c.Dataset.marshalInternal("CouchbaseTable")
8563	populate(objectMap, "typeProperties", c.TypeProperties)
8564	return json.Marshal(objectMap)
8565}
8566
8567// UnmarshalJSON implements the json.Unmarshaller interface for type CouchbaseTableDataset.
8568func (c *CouchbaseTableDataset) UnmarshalJSON(data []byte) error {
8569	var rawMsg map[string]json.RawMessage
8570	if err := json.Unmarshal(data, &rawMsg); err != nil {
8571		return err
8572	}
8573	for key, val := range rawMsg {
8574		var err error
8575		switch key {
8576		case "typeProperties":
8577			err = unpopulate(val, &c.TypeProperties)
8578			delete(rawMsg, key)
8579		}
8580		if err != nil {
8581			return err
8582		}
8583	}
8584	return c.Dataset.unmarshalInternal(rawMsg)
8585}
8586
8587// CreateDataFlowDebugSessionRequest - Request body structure for creating data flow debug session.
8588type CreateDataFlowDebugSessionRequest struct {
8589	// Timeout setting for Databricks cluster.
8590	ClusterTimeout *int32 `json:"clusterTimeout,omitempty"`
8591
8592	// Data bricks linked service.
8593	DataBricksLinkedService *LinkedServiceResource `json:"dataBricksLinkedService,omitempty"`
8594
8595	// The name of the data flow.
8596	DataFlowName *string `json:"dataFlowName,omitempty"`
8597
8598	// The ID of existing Databricks cluster.
8599	ExistingClusterID *string `json:"existingClusterId,omitempty"`
8600
8601	// The name of new Databricks cluster.
8602	NewClusterName *string `json:"newClusterName,omitempty"`
8603
8604	// The type of new Databricks cluster.
8605	NewClusterNodeType *string `json:"newClusterNodeType,omitempty"`
8606}
8607
8608// CreateDataFlowDebugSessionResponse - Response body structure for creating data flow debug session.
8609type CreateDataFlowDebugSessionResponse struct {
8610	// The ID of data flow debug session.
8611	SessionID *string `json:"sessionId,omitempty"`
8612}
8613
8614// CreateRunResponse - Response body with a run identifier.
8615type CreateRunResponse struct {
8616	// REQUIRED; Identifier of a run.
8617	RunID *string `json:"runId,omitempty"`
8618}
8619
8620// CustomActivity - Custom activity type.
8621type CustomActivity struct {
8622	ExecutionActivity
8623	// REQUIRED; Custom activity properties.
8624	TypeProperties *CustomActivityTypeProperties `json:"typeProperties,omitempty"`
8625}
8626
8627// MarshalJSON implements the json.Marshaller interface for type CustomActivity.
8628func (c CustomActivity) MarshalJSON() ([]byte, error) {
8629	objectMap := c.ExecutionActivity.marshalInternal("Custom")
8630	populate(objectMap, "typeProperties", c.TypeProperties)
8631	return json.Marshal(objectMap)
8632}
8633
8634// UnmarshalJSON implements the json.Unmarshaller interface for type CustomActivity.
8635func (c *CustomActivity) UnmarshalJSON(data []byte) error {
8636	var rawMsg map[string]json.RawMessage
8637	if err := json.Unmarshal(data, &rawMsg); err != nil {
8638		return err
8639	}
8640	for key, val := range rawMsg {
8641		var err error
8642		switch key {
8643		case "typeProperties":
8644			err = unpopulate(val, &c.TypeProperties)
8645			delete(rawMsg, key)
8646		}
8647		if err != nil {
8648			return err
8649		}
8650	}
8651	return c.ExecutionActivity.unmarshalInternal(rawMsg)
8652}
8653
8654// CustomActivityReferenceObject - Reference objects for custom activity
8655type CustomActivityReferenceObject struct {
8656	// Dataset references.
8657	Datasets []*DatasetReference `json:"datasets,omitempty"`
8658
8659	// Linked service references.
8660	LinkedServices []*LinkedServiceReference `json:"linkedServices,omitempty"`
8661}
8662
8663// MarshalJSON implements the json.Marshaller interface for type CustomActivityReferenceObject.
8664func (c CustomActivityReferenceObject) MarshalJSON() ([]byte, error) {
8665	objectMap := make(map[string]interface{})
8666	populate(objectMap, "datasets", c.Datasets)
8667	populate(objectMap, "linkedServices", c.LinkedServices)
8668	return json.Marshal(objectMap)
8669}
8670
8671// CustomActivityTypeProperties - Custom activity properties.
8672type CustomActivityTypeProperties struct {
8673	// REQUIRED; Command for custom activity Type: string (or Expression with resultType string).
8674	Command interface{} `json:"command,omitempty"`
8675
8676	// Elevation level and scope for the user, default is nonadmin task. Type: string (or Expression with resultType double).
8677	AutoUserSpecification interface{} `json:"autoUserSpecification,omitempty"`
8678
8679	// User defined property bag. There is no restriction on the keys or values that can be used. The user specified custom activity has the full responsibility
8680	// to consume and interpret the content defined.
8681	ExtendedProperties map[string]interface{} `json:"extendedProperties,omitempty"`
8682
8683	// Folder path for resource files Type: string (or Expression with resultType string).
8684	FolderPath interface{} `json:"folderPath,omitempty"`
8685
8686	// Reference objects
8687	ReferenceObjects *CustomActivityReferenceObject `json:"referenceObjects,omitempty"`
8688
8689	// Resource linked service reference.
8690	ResourceLinkedService *LinkedServiceReference `json:"resourceLinkedService,omitempty"`
8691
8692	// The retention time for the files submitted for custom activity. Type: double (or Expression with resultType double).
8693	RetentionTimeInDays interface{} `json:"retentionTimeInDays,omitempty"`
8694}
8695
8696// MarshalJSON implements the json.Marshaller interface for type CustomActivityTypeProperties.
8697func (c CustomActivityTypeProperties) MarshalJSON() ([]byte, error) {
8698	objectMap := make(map[string]interface{})
8699	populate(objectMap, "autoUserSpecification", c.AutoUserSpecification)
8700	populate(objectMap, "command", c.Command)
8701	populate(objectMap, "extendedProperties", c.ExtendedProperties)
8702	populate(objectMap, "folderPath", c.FolderPath)
8703	populate(objectMap, "referenceObjects", c.ReferenceObjects)
8704	populate(objectMap, "resourceLinkedService", c.ResourceLinkedService)
8705	populate(objectMap, "retentionTimeInDays", c.RetentionTimeInDays)
8706	return json.Marshal(objectMap)
8707}
8708
8709// CustomDataSourceLinkedService - Custom linked service.
8710type CustomDataSourceLinkedService struct {
8711	LinkedService
8712	// REQUIRED; Custom linked service properties.
8713	TypeProperties interface{} `json:"typeProperties,omitempty"`
8714}
8715
8716// MarshalJSON implements the json.Marshaller interface for type CustomDataSourceLinkedService.
8717func (c CustomDataSourceLinkedService) MarshalJSON() ([]byte, error) {
8718	objectMap := c.LinkedService.marshalInternal("CustomDataSource")
8719	populate(objectMap, "typeProperties", c.TypeProperties)
8720	return json.Marshal(objectMap)
8721}
8722
8723// UnmarshalJSON implements the json.Unmarshaller interface for type CustomDataSourceLinkedService.
8724func (c *CustomDataSourceLinkedService) UnmarshalJSON(data []byte) error {
8725	var rawMsg map[string]json.RawMessage
8726	if err := json.Unmarshal(data, &rawMsg); err != nil {
8727		return err
8728	}
8729	for key, val := range rawMsg {
8730		var err error
8731		switch key {
8732		case "typeProperties":
8733			err = unpopulate(val, &c.TypeProperties)
8734			delete(rawMsg, key)
8735		}
8736		if err != nil {
8737			return err
8738		}
8739	}
8740	return c.LinkedService.unmarshalInternal(rawMsg)
8741}
8742
8743// CustomDataset - The custom dataset.
8744type CustomDataset struct {
8745	Dataset
8746	// Custom dataset properties.
8747	TypeProperties interface{} `json:"typeProperties,omitempty"`
8748}
8749
8750// MarshalJSON implements the json.Marshaller interface for type CustomDataset.
8751func (c CustomDataset) MarshalJSON() ([]byte, error) {
8752	objectMap := c.Dataset.marshalInternal("CustomDataset")
8753	populate(objectMap, "typeProperties", c.TypeProperties)
8754	return json.Marshal(objectMap)
8755}
8756
8757// UnmarshalJSON implements the json.Unmarshaller interface for type CustomDataset.
8758func (c *CustomDataset) UnmarshalJSON(data []byte) error {
8759	var rawMsg map[string]json.RawMessage
8760	if err := json.Unmarshal(data, &rawMsg); err != nil {
8761		return err
8762	}
8763	for key, val := range rawMsg {
8764		var err error
8765		switch key {
8766		case "typeProperties":
8767			err = unpopulate(val, &c.TypeProperties)
8768			delete(rawMsg, key)
8769		}
8770		if err != nil {
8771			return err
8772		}
8773	}
8774	return c.Dataset.unmarshalInternal(rawMsg)
8775}
8776
8777// CustomEventsTrigger - Trigger that runs every time a custom event is received.
8778type CustomEventsTrigger struct {
8779	MultiplePipelineTrigger
8780	// REQUIRED; Custom Events Trigger properties.
8781	TypeProperties *CustomEventsTriggerTypeProperties `json:"typeProperties,omitempty"`
8782}
8783
8784// MarshalJSON implements the json.Marshaller interface for type CustomEventsTrigger.
8785func (c CustomEventsTrigger) MarshalJSON() ([]byte, error) {
8786	objectMap := c.MultiplePipelineTrigger.marshalInternal("CustomEventsTrigger")
8787	populate(objectMap, "typeProperties", c.TypeProperties)
8788	return json.Marshal(objectMap)
8789}
8790
8791// UnmarshalJSON implements the json.Unmarshaller interface for type CustomEventsTrigger.
8792func (c *CustomEventsTrigger) UnmarshalJSON(data []byte) error {
8793	var rawMsg map[string]json.RawMessage
8794	if err := json.Unmarshal(data, &rawMsg); err != nil {
8795		return err
8796	}
8797	for key, val := range rawMsg {
8798		var err error
8799		switch key {
8800		case "typeProperties":
8801			err = unpopulate(val, &c.TypeProperties)
8802			delete(rawMsg, key)
8803		}
8804		if err != nil {
8805			return err
8806		}
8807	}
8808	return c.MultiplePipelineTrigger.unmarshalInternal(rawMsg)
8809}
8810
8811// CustomEventsTriggerTypeProperties - Custom Events Trigger properties.
8812type CustomEventsTriggerTypeProperties struct {
8813	// REQUIRED; The list of event types that cause this trigger to fire.
8814	Events []interface{} `json:"events,omitempty"`
8815
8816	// REQUIRED; The ARM resource ID of the Azure Event Grid Topic.
8817	Scope *string `json:"scope,omitempty"`
8818
8819	// The event subject must begin with the pattern provided for trigger to fire. At least one of these must be provided: subjectBeginsWith, subjectEndsWith.
8820	SubjectBeginsWith *string `json:"subjectBeginsWith,omitempty"`
8821
8822	// The event subject must end with the pattern provided for trigger to fire. At least one of these must be provided: subjectBeginsWith, subjectEndsWith.
8823	SubjectEndsWith *string `json:"subjectEndsWith,omitempty"`
8824}
8825
8826// MarshalJSON implements the json.Marshaller interface for type CustomEventsTriggerTypeProperties.
8827func (c CustomEventsTriggerTypeProperties) MarshalJSON() ([]byte, error) {
8828	objectMap := make(map[string]interface{})
8829	populate(objectMap, "events", c.Events)
8830	populate(objectMap, "scope", c.Scope)
8831	populate(objectMap, "subjectBeginsWith", c.SubjectBeginsWith)
8832	populate(objectMap, "subjectEndsWith", c.SubjectEndsWith)
8833	return json.Marshal(objectMap)
8834}
8835
8836// CustomSetupBaseClassification provides polymorphic access to related types.
8837// Call the interface's GetCustomSetupBase() method to access the common type.
8838// Use a type switch to determine the concrete type.  The possible types are:
8839// - *CustomSetupBase
8840type CustomSetupBaseClassification interface {
8841	// GetCustomSetupBase returns the CustomSetupBase content of the underlying type.
8842	GetCustomSetupBase() *CustomSetupBase
8843}
8844
8845// CustomSetupBase - The base definition of the custom setup.
8846type CustomSetupBase struct {
8847	// REQUIRED; The type of custom setup.
8848	Type *string `json:"type,omitempty"`
8849}
8850
8851// GetCustomSetupBase implements the CustomSetupBaseClassification interface for type CustomSetupBase.
8852func (c *CustomSetupBase) GetCustomSetupBase() *CustomSetupBase { return c }
8853
8854// CustomerManagedKeyDetails - Details of the customer managed key associated with the workspace
8855type CustomerManagedKeyDetails struct {
8856	// The key object of the workspace
8857	Key *WorkspaceKeyDetails `json:"key,omitempty"`
8858
8859	// READ-ONLY; The customer managed key status on the workspace
8860	Status *string `json:"status,omitempty" azure:"ro"`
8861}
8862
8863// DWCopyCommandDefaultValue - Default value.
8864type DWCopyCommandDefaultValue struct {
8865	// Column name. Type: object (or Expression with resultType string).
8866	ColumnName interface{} `json:"columnName,omitempty"`
8867
8868	// The default value of the column. Type: object (or Expression with resultType string).
8869	DefaultValue interface{} `json:"defaultValue,omitempty"`
8870}
8871
8872// DWCopyCommandSettings - DW Copy Command settings.
8873type DWCopyCommandSettings struct {
8874	// Additional options directly passed to SQL DW in Copy Command. Type: key value pairs (value should be string type) (or Expression with resultType object).
8875	// Example: "additionalOptions": { "MAXERRORS":
8876	// "1000", "DATEFORMAT": "'ymd'" }
8877	AdditionalOptions map[string]*string `json:"additionalOptions,omitempty"`
8878
8879	// Specifies the default values for each target column in SQL DW. The default values in the property overwrite the DEFAULT constraint set in the DB, and
8880	// identity column cannot have a default value. Type:
8881	// array of objects (or Expression with resultType array of objects).
8882	DefaultValues []*DWCopyCommandDefaultValue `json:"defaultValues,omitempty"`
8883}
8884
8885// MarshalJSON implements the json.Marshaller interface for type DWCopyCommandSettings.
8886func (d DWCopyCommandSettings) MarshalJSON() ([]byte, error) {
8887	objectMap := make(map[string]interface{})
8888	populate(objectMap, "additionalOptions", d.AdditionalOptions)
8889	populate(objectMap, "defaultValues", d.DefaultValues)
8890	return json.Marshal(objectMap)
8891}
8892
8893// DataFlowClassification provides polymorphic access to related types.
8894// Call the interface's GetDataFlow() method to access the common type.
8895// Use a type switch to determine the concrete type.  The possible types are:
8896// - *DataFlow, *MappingDataFlow
8897type DataFlowClassification interface {
8898	// GetDataFlow returns the DataFlow content of the underlying type.
8899	GetDataFlow() *DataFlow
8900}
8901
8902// DataFlow - Azure Synapse nested object which contains a flow with data movements and transformations.
8903type DataFlow struct {
8904	// REQUIRED; Type of data flow.
8905	Type *string `json:"type,omitempty"`
8906
8907	// List of tags that can be used for describing the data flow.
8908	Annotations []interface{} `json:"annotations,omitempty"`
8909
8910	// The description of the data flow.
8911	Description *string `json:"description,omitempty"`
8912
8913	// The folder that this data flow is in. If not specified, Data flow will appear at the root level.
8914	Folder *DataFlowFolder `json:"folder,omitempty"`
8915}
8916
8917// GetDataFlow implements the DataFlowClassification interface for type DataFlow.
8918func (d *DataFlow) GetDataFlow() *DataFlow { return d }
8919
8920// UnmarshalJSON implements the json.Unmarshaller interface for type DataFlow.
8921func (d *DataFlow) UnmarshalJSON(data []byte) error {
8922	var rawMsg map[string]json.RawMessage
8923	if err := json.Unmarshal(data, &rawMsg); err != nil {
8924		return err
8925	}
8926	return d.unmarshalInternal(rawMsg)
8927}
8928
8929func (d DataFlow) marshalInternal(discValue string) map[string]interface{} {
8930	objectMap := make(map[string]interface{})
8931	populate(objectMap, "annotations", d.Annotations)
8932	populate(objectMap, "description", d.Description)
8933	populate(objectMap, "folder", d.Folder)
8934	d.Type = &discValue
8935	objectMap["type"] = d.Type
8936	return objectMap
8937}
8938
8939func (d *DataFlow) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
8940	for key, val := range rawMsg {
8941		var err error
8942		switch key {
8943		case "annotations":
8944			err = unpopulate(val, &d.Annotations)
8945			delete(rawMsg, key)
8946		case "description":
8947			err = unpopulate(val, &d.Description)
8948			delete(rawMsg, key)
8949		case "folder":
8950			err = unpopulate(val, &d.Folder)
8951			delete(rawMsg, key)
8952		case "type":
8953			err = unpopulate(val, &d.Type)
8954			delete(rawMsg, key)
8955		}
8956		if err != nil {
8957			return err
8958		}
8959	}
8960	return nil
8961}
8962
8963// DataFlowBeginCreateOrUpdateDataFlowOptions contains the optional parameters for the DataFlow.BeginCreateOrUpdateDataFlow method.
8964type DataFlowBeginCreateOrUpdateDataFlowOptions struct {
8965	// ETag of the data flow entity. Should only be specified for update, for which it should match existing entity or can be * for unconditional update.
8966	IfMatch *string
8967}
8968
8969// DataFlowBeginDeleteDataFlowOptions contains the optional parameters for the DataFlow.BeginDeleteDataFlow method.
8970type DataFlowBeginDeleteDataFlowOptions struct {
8971	// placeholder for future optional parameters
8972}
8973
8974// DataFlowBeginRenameDataFlowOptions contains the optional parameters for the DataFlow.BeginRenameDataFlow method.
8975type DataFlowBeginRenameDataFlowOptions struct {
8976	// placeholder for future optional parameters
8977}
8978
8979// DataFlowDebugCommandRequest - Request body structure for data flow expression preview.
8980type DataFlowDebugCommandRequest struct {
8981	// REQUIRED; The command payload object.
8982	CommandPayload interface{} `json:"commandPayload,omitempty"`
8983
8984	// REQUIRED; The ID of data flow debug session.
8985	SessionID *string `json:"sessionId,omitempty"`
8986
8987	// The command name.
8988	CommandName *string `json:"commandName,omitempty"`
8989
8990	// The data flow which contains the debug session.
8991	DataFlowName *string `json:"dataFlowName,omitempty"`
8992}
8993
8994// DataFlowDebugCommandResponse - Response body structure of data flow result for data preview, statistics or expression preview.
8995type DataFlowDebugCommandResponse struct {
8996	// The result data of data preview, statistics or expression preview.
8997	Data *string `json:"data,omitempty"`
8998
8999	// The run status of data preview, statistics or expression preview.
9000	Status *string `json:"status,omitempty"`
9001}
9002
9003// DataFlowDebugPackage - Request body structure for starting data flow debug session.
9004type DataFlowDebugPackage struct {
9005	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
9006	AdditionalProperties map[string]interface{}
9007
9008	// Data flow instance.
9009	DataFlow *DataFlowDebugResource `json:"dataFlow,omitempty"`
9010
9011	// List of datasets.
9012	Datasets []*DatasetDebugResource `json:"datasets,omitempty"`
9013
9014	// Data flow debug settings.
9015	DebugSettings *DataFlowDebugPackageDebugSettings `json:"debugSettings,omitempty"`
9016
9017	// List of linked services.
9018	LinkedServices []*LinkedServiceDebugResource `json:"linkedServices,omitempty"`
9019
9020	// The ID of data flow debug session.
9021	SessionID *string `json:"sessionId,omitempty"`
9022
9023	// Staging info for debug session.
9024	Staging *DataFlowStagingInfo `json:"staging,omitempty"`
9025}
9026
9027// MarshalJSON implements the json.Marshaller interface for type DataFlowDebugPackage.
9028func (d DataFlowDebugPackage) MarshalJSON() ([]byte, error) {
9029	objectMap := make(map[string]interface{})
9030	populate(objectMap, "dataFlow", d.DataFlow)
9031	populate(objectMap, "datasets", d.Datasets)
9032	populate(objectMap, "debugSettings", d.DebugSettings)
9033	populate(objectMap, "linkedServices", d.LinkedServices)
9034	populate(objectMap, "sessionId", d.SessionID)
9035	populate(objectMap, "staging", d.Staging)
9036	if d.AdditionalProperties != nil {
9037		for key, val := range d.AdditionalProperties {
9038			objectMap[key] = val
9039		}
9040	}
9041	return json.Marshal(objectMap)
9042}
9043
9044// UnmarshalJSON implements the json.Unmarshaller interface for type DataFlowDebugPackage.
9045func (d *DataFlowDebugPackage) UnmarshalJSON(data []byte) error {
9046	var rawMsg map[string]json.RawMessage
9047	if err := json.Unmarshal(data, &rawMsg); err != nil {
9048		return err
9049	}
9050	for key, val := range rawMsg {
9051		var err error
9052		switch key {
9053		case "dataFlow":
9054			err = unpopulate(val, &d.DataFlow)
9055			delete(rawMsg, key)
9056		case "datasets":
9057			err = unpopulate(val, &d.Datasets)
9058			delete(rawMsg, key)
9059		case "debugSettings":
9060			err = unpopulate(val, &d.DebugSettings)
9061			delete(rawMsg, key)
9062		case "linkedServices":
9063			err = unpopulate(val, &d.LinkedServices)
9064			delete(rawMsg, key)
9065		case "sessionId":
9066			err = unpopulate(val, &d.SessionID)
9067			delete(rawMsg, key)
9068		case "staging":
9069			err = unpopulate(val, &d.Staging)
9070			delete(rawMsg, key)
9071		default:
9072			if d.AdditionalProperties == nil {
9073				d.AdditionalProperties = map[string]interface{}{}
9074			}
9075			if val != nil {
9076				var aux interface{}
9077				err = json.Unmarshal(val, &aux)
9078				d.AdditionalProperties[key] = aux
9079			}
9080			delete(rawMsg, key)
9081		}
9082		if err != nil {
9083			return err
9084		}
9085	}
9086	return nil
9087}
9088
9089// DataFlowDebugPackageDebugSettings - Data flow debug settings.
9090type DataFlowDebugPackageDebugSettings struct {
9091	// Parameters for dataset.
9092	DatasetParameters interface{} `json:"datasetParameters,omitempty"`
9093
9094	// Data flow parameters.
9095	Parameters map[string]interface{} `json:"parameters,omitempty"`
9096
9097	// Source setting for data flow debug.
9098	SourceSettings []*DataFlowSourceSetting `json:"sourceSettings,omitempty"`
9099}
9100
9101// MarshalJSON implements the json.Marshaller interface for type DataFlowDebugPackageDebugSettings.
9102func (d DataFlowDebugPackageDebugSettings) MarshalJSON() ([]byte, error) {
9103	objectMap := make(map[string]interface{})
9104	populate(objectMap, "datasetParameters", d.DatasetParameters)
9105	populate(objectMap, "parameters", d.Parameters)
9106	populate(objectMap, "sourceSettings", d.SourceSettings)
9107	return json.Marshal(objectMap)
9108}
9109
9110// DataFlowDebugPreviewDataRequest - Request body structure for data flow preview data.
9111type DataFlowDebugPreviewDataRequest struct {
9112	// The data flow which contains the debug session.
9113	DataFlowName *string `json:"dataFlowName,omitempty"`
9114
9115	// The row limit for preview request.
9116	RowLimits *int32 `json:"rowLimits,omitempty"`
9117
9118	// The ID of data flow debug session.
9119	SessionID *string `json:"sessionId,omitempty"`
9120
9121	// The output stream name.
9122	StreamName *string `json:"streamName,omitempty"`
9123}
9124
9125// DataFlowDebugQueryResponse - Response body structure of data flow query for data preview, statistics or expression preview.
9126type DataFlowDebugQueryResponse struct {
9127	// The run ID of data flow debug session.
9128	RunID *string `json:"runId,omitempty"`
9129}
9130
9131// DataFlowDebugResource - Data flow debug resource.
9132type DataFlowDebugResource struct {
9133	SubResourceDebugResource
9134	// REQUIRED; Data flow properties.
9135	Properties DataFlowClassification `json:"properties,omitempty"`
9136}
9137
9138// MarshalJSON implements the json.Marshaller interface for type DataFlowDebugResource.
9139func (d DataFlowDebugResource) MarshalJSON() ([]byte, error) {
9140	objectMap := d.SubResourceDebugResource.marshalInternal()
9141	populate(objectMap, "properties", d.Properties)
9142	return json.Marshal(objectMap)
9143}
9144
9145// UnmarshalJSON implements the json.Unmarshaller interface for type DataFlowDebugResource.
9146func (d *DataFlowDebugResource) UnmarshalJSON(data []byte) error {
9147	var rawMsg map[string]json.RawMessage
9148	if err := json.Unmarshal(data, &rawMsg); err != nil {
9149		return err
9150	}
9151	for key, val := range rawMsg {
9152		var err error
9153		switch key {
9154		case "properties":
9155			d.Properties, err = unmarshalDataFlowClassification(val)
9156			delete(rawMsg, key)
9157		}
9158		if err != nil {
9159			return err
9160		}
9161	}
9162	return d.SubResourceDebugResource.unmarshalInternal(rawMsg)
9163}
9164
9165// DataFlowDebugResultResponse - Response body structure of data flow result for data preview, statistics or expression preview.
9166type DataFlowDebugResultResponse struct {
9167	// The result data of data preview, statistics or expression preview.
9168	Data *string `json:"data,omitempty"`
9169
9170	// The run status of data preview, statistics or expression preview.
9171	Status *string `json:"status,omitempty"`
9172}
9173
9174// DataFlowDebugSessionAddDataFlowOptions contains the optional parameters for the DataFlowDebugSession.AddDataFlow method.
9175type DataFlowDebugSessionAddDataFlowOptions struct {
9176	// placeholder for future optional parameters
9177}
9178
9179// DataFlowDebugSessionBeginCreateDataFlowDebugSessionOptions contains the optional parameters for the DataFlowDebugSession.BeginCreateDataFlowDebugSession
9180// method.
9181type DataFlowDebugSessionBeginCreateDataFlowDebugSessionOptions struct {
9182	// placeholder for future optional parameters
9183}
9184
9185// DataFlowDebugSessionBeginExecuteCommandOptions contains the optional parameters for the DataFlowDebugSession.BeginExecuteCommand method.
9186type DataFlowDebugSessionBeginExecuteCommandOptions struct {
9187	// placeholder for future optional parameters
9188}
9189
9190// DataFlowDebugSessionDeleteDataFlowDebugSessionOptions contains the optional parameters for the DataFlowDebugSession.DeleteDataFlowDebugSession method.
9191type DataFlowDebugSessionDeleteDataFlowDebugSessionOptions struct {
9192	// placeholder for future optional parameters
9193}
9194
9195// DataFlowDebugSessionInfo - Data flow debug session info.
9196type DataFlowDebugSessionInfo struct {
9197	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
9198	AdditionalProperties map[string]interface{}
9199
9200	// Compute type of the cluster.
9201	ComputeType *string `json:"computeType,omitempty"`
9202
9203	// Core count of the cluster.
9204	CoreCount *int32 `json:"coreCount,omitempty"`
9205
9206	// The name of the data flow.
9207	DataFlowName *string `json:"dataFlowName,omitempty"`
9208
9209	// Attached integration runtime name of data flow debug session.
9210	IntegrationRuntimeName *string `json:"integrationRuntimeName,omitempty"`
9211
9212	// Last activity time of data flow debug session.
9213	LastActivityTime *string `json:"lastActivityTime,omitempty"`
9214
9215	// Node count of the cluster. (deprecated property)
9216	NodeCount *int32 `json:"nodeCount,omitempty"`
9217
9218	// The ID of data flow debug session.
9219	SessionID *string `json:"sessionId,omitempty"`
9220
9221	// Start time of data flow debug session.
9222	StartTime *string `json:"startTime,omitempty"`
9223
9224	// Compute type of the cluster.
9225	TimeToLiveInMinutes *int32 `json:"timeToLiveInMinutes,omitempty"`
9226}
9227
9228// MarshalJSON implements the json.Marshaller interface for type DataFlowDebugSessionInfo.
9229func (d DataFlowDebugSessionInfo) MarshalJSON() ([]byte, error) {
9230	objectMap := make(map[string]interface{})
9231	populate(objectMap, "computeType", d.ComputeType)
9232	populate(objectMap, "coreCount", d.CoreCount)
9233	populate(objectMap, "dataFlowName", d.DataFlowName)
9234	populate(objectMap, "integrationRuntimeName", d.IntegrationRuntimeName)
9235	populate(objectMap, "lastActivityTime", d.LastActivityTime)
9236	populate(objectMap, "nodeCount", d.NodeCount)
9237	populate(objectMap, "sessionId", d.SessionID)
9238	populate(objectMap, "startTime", d.StartTime)
9239	populate(objectMap, "timeToLiveInMinutes", d.TimeToLiveInMinutes)
9240	if d.AdditionalProperties != nil {
9241		for key, val := range d.AdditionalProperties {
9242			objectMap[key] = val
9243		}
9244	}
9245	return json.Marshal(objectMap)
9246}
9247
9248// UnmarshalJSON implements the json.Unmarshaller interface for type DataFlowDebugSessionInfo.
9249func (d *DataFlowDebugSessionInfo) UnmarshalJSON(data []byte) error {
9250	var rawMsg map[string]json.RawMessage
9251	if err := json.Unmarshal(data, &rawMsg); err != nil {
9252		return err
9253	}
9254	for key, val := range rawMsg {
9255		var err error
9256		switch key {
9257		case "computeType":
9258			err = unpopulate(val, &d.ComputeType)
9259			delete(rawMsg, key)
9260		case "coreCount":
9261			err = unpopulate(val, &d.CoreCount)
9262			delete(rawMsg, key)
9263		case "dataFlowName":
9264			err = unpopulate(val, &d.DataFlowName)
9265			delete(rawMsg, key)
9266		case "integrationRuntimeName":
9267			err = unpopulate(val, &d.IntegrationRuntimeName)
9268			delete(rawMsg, key)
9269		case "lastActivityTime":
9270			err = unpopulate(val, &d.LastActivityTime)
9271			delete(rawMsg, key)
9272		case "nodeCount":
9273			err = unpopulate(val, &d.NodeCount)
9274			delete(rawMsg, key)
9275		case "sessionId":
9276			err = unpopulate(val, &d.SessionID)
9277			delete(rawMsg, key)
9278		case "startTime":
9279			err = unpopulate(val, &d.StartTime)
9280			delete(rawMsg, key)
9281		case "timeToLiveInMinutes":
9282			err = unpopulate(val, &d.TimeToLiveInMinutes)
9283			delete(rawMsg, key)
9284		default:
9285			if d.AdditionalProperties == nil {
9286				d.AdditionalProperties = map[string]interface{}{}
9287			}
9288			if val != nil {
9289				var aux interface{}
9290				err = json.Unmarshal(val, &aux)
9291				d.AdditionalProperties[key] = aux
9292			}
9293			delete(rawMsg, key)
9294		}
9295		if err != nil {
9296			return err
9297		}
9298	}
9299	return nil
9300}
9301
9302// DataFlowDebugSessionQueryDataFlowDebugSessionsByWorkspaceOptions contains the optional parameters for the DataFlowDebugSession.QueryDataFlowDebugSessionsByWorkspace
9303// method.
9304type DataFlowDebugSessionQueryDataFlowDebugSessionsByWorkspaceOptions struct {
9305	// placeholder for future optional parameters
9306}
9307
9308// DataFlowDebugStatisticsRequest - Request body structure for data flow statistics.
9309type DataFlowDebugStatisticsRequest struct {
9310	// List of column names.
9311	Columns []*string `json:"columns,omitempty"`
9312
9313	// The data flow which contains the debug session.
9314	DataFlowName *string `json:"dataFlowName,omitempty"`
9315
9316	// The ID of data flow debug session.
9317	SessionID *string `json:"sessionId,omitempty"`
9318
9319	// The output stream name.
9320	StreamName *string `json:"streamName,omitempty"`
9321}
9322
9323// MarshalJSON implements the json.Marshaller interface for type DataFlowDebugStatisticsRequest.
9324func (d DataFlowDebugStatisticsRequest) MarshalJSON() ([]byte, error) {
9325	objectMap := make(map[string]interface{})
9326	populate(objectMap, "columns", d.Columns)
9327	populate(objectMap, "dataFlowName", d.DataFlowName)
9328	populate(objectMap, "sessionId", d.SessionID)
9329	populate(objectMap, "streamName", d.StreamName)
9330	return json.Marshal(objectMap)
9331}
9332
9333// DataFlowFolder - The folder that this data flow is in. If not specified, Data flow will appear at the root level.
9334type DataFlowFolder struct {
9335	// The name of the folder that this data flow is in.
9336	Name *string `json:"name,omitempty"`
9337}
9338
9339// DataFlowGetDataFlowOptions contains the optional parameters for the DataFlow.GetDataFlow method.
9340type DataFlowGetDataFlowOptions struct {
9341	// ETag of the data flow entity. Should only be specified for get. If the ETag matches the existing entity tag, or if * was provided, then no content will
9342	// be returned.
9343	IfNoneMatch *string
9344}
9345
9346// DataFlowGetDataFlowsByWorkspaceOptions contains the optional parameters for the DataFlow.GetDataFlowsByWorkspace method.
9347type DataFlowGetDataFlowsByWorkspaceOptions struct {
9348	// placeholder for future optional parameters
9349}
9350
9351// DataFlowListResponse - A list of data flow resources.
9352type DataFlowListResponse struct {
9353	// REQUIRED; List of data flows.
9354	Value []*DataFlowResource `json:"value,omitempty"`
9355
9356	// The link to the next page of results, if any remaining results exist.
9357	NextLink *string `json:"nextLink,omitempty"`
9358}
9359
9360// MarshalJSON implements the json.Marshaller interface for type DataFlowListResponse.
9361func (d DataFlowListResponse) MarshalJSON() ([]byte, error) {
9362	objectMap := make(map[string]interface{})
9363	populate(objectMap, "nextLink", d.NextLink)
9364	populate(objectMap, "value", d.Value)
9365	return json.Marshal(objectMap)
9366}
9367
9368// DataFlowReference - Data flow reference type.
9369type DataFlowReference struct {
9370	// REQUIRED; Reference data flow name.
9371	ReferenceName *string `json:"referenceName,omitempty"`
9372
9373	// REQUIRED; Data flow reference type.
9374	Type *DataFlowReferenceType `json:"type,omitempty"`
9375
9376	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
9377	AdditionalProperties map[string]interface{}
9378
9379	// Reference data flow parameters from dataset.
9380	DatasetParameters interface{} `json:"datasetParameters,omitempty"`
9381}
9382
9383// MarshalJSON implements the json.Marshaller interface for type DataFlowReference.
9384func (d DataFlowReference) MarshalJSON() ([]byte, error) {
9385	objectMap := make(map[string]interface{})
9386	populate(objectMap, "datasetParameters", d.DatasetParameters)
9387	populate(objectMap, "referenceName", d.ReferenceName)
9388	populate(objectMap, "type", d.Type)
9389	if d.AdditionalProperties != nil {
9390		for key, val := range d.AdditionalProperties {
9391			objectMap[key] = val
9392		}
9393	}
9394	return json.Marshal(objectMap)
9395}
9396
9397// UnmarshalJSON implements the json.Unmarshaller interface for type DataFlowReference.
9398func (d *DataFlowReference) UnmarshalJSON(data []byte) error {
9399	var rawMsg map[string]json.RawMessage
9400	if err := json.Unmarshal(data, &rawMsg); err != nil {
9401		return err
9402	}
9403	for key, val := range rawMsg {
9404		var err error
9405		switch key {
9406		case "datasetParameters":
9407			err = unpopulate(val, &d.DatasetParameters)
9408			delete(rawMsg, key)
9409		case "referenceName":
9410			err = unpopulate(val, &d.ReferenceName)
9411			delete(rawMsg, key)
9412		case "type":
9413			err = unpopulate(val, &d.Type)
9414			delete(rawMsg, key)
9415		default:
9416			if d.AdditionalProperties == nil {
9417				d.AdditionalProperties = map[string]interface{}{}
9418			}
9419			if val != nil {
9420				var aux interface{}
9421				err = json.Unmarshal(val, &aux)
9422				d.AdditionalProperties[key] = aux
9423			}
9424			delete(rawMsg, key)
9425		}
9426		if err != nil {
9427			return err
9428		}
9429	}
9430	return nil
9431}
9432
9433// DataFlowResource - Data flow resource type.
9434type DataFlowResource struct {
9435	SubResource
9436	// REQUIRED; Data flow properties.
9437	Properties DataFlowClassification `json:"properties,omitempty"`
9438}
9439
9440// MarshalJSON implements the json.Marshaller interface for type DataFlowResource.
9441func (d DataFlowResource) MarshalJSON() ([]byte, error) {
9442	objectMap := d.SubResource.marshalInternal()
9443	populate(objectMap, "properties", d.Properties)
9444	return json.Marshal(objectMap)
9445}
9446
9447// UnmarshalJSON implements the json.Unmarshaller interface for type DataFlowResource.
9448func (d *DataFlowResource) UnmarshalJSON(data []byte) error {
9449	var rawMsg map[string]json.RawMessage
9450	if err := json.Unmarshal(data, &rawMsg); err != nil {
9451		return err
9452	}
9453	for key, val := range rawMsg {
9454		var err error
9455		switch key {
9456		case "properties":
9457			d.Properties, err = unmarshalDataFlowClassification(val)
9458			delete(rawMsg, key)
9459		}
9460		if err != nil {
9461			return err
9462		}
9463	}
9464	return d.SubResource.unmarshalInternal(rawMsg)
9465}
9466
9467// DataFlowSink - Transformation for data flow sink.
9468type DataFlowSink struct {
9469	Transformation
9470	// Dataset reference.
9471	Dataset *DatasetReference `json:"dataset,omitempty"`
9472
9473	// Linked service reference.
9474	LinkedService *LinkedServiceReference `json:"linkedService,omitempty"`
9475
9476	// Schema linked service reference.
9477	SchemaLinkedService *LinkedServiceReference `json:"schemaLinkedService,omitempty"`
9478}
9479
9480// DataFlowSource - Transformation for data flow source.
9481type DataFlowSource struct {
9482	Transformation
9483	// Dataset reference.
9484	Dataset *DatasetReference `json:"dataset,omitempty"`
9485
9486	// Linked service reference.
9487	LinkedService *LinkedServiceReference `json:"linkedService,omitempty"`
9488
9489	// Schema linked service reference.
9490	SchemaLinkedService *LinkedServiceReference `json:"schemaLinkedService,omitempty"`
9491}
9492
9493// DataFlowSourceSetting - Definition of data flow source setting for debug.
9494type DataFlowSourceSetting struct {
9495	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
9496	AdditionalProperties map[string]interface{}
9497
9498	// Defines the row limit of data flow source in debug.
9499	RowLimit *int32 `json:"rowLimit,omitempty"`
9500
9501	// The data flow source name.
9502	SourceName *string `json:"sourceName,omitempty"`
9503}
9504
9505// MarshalJSON implements the json.Marshaller interface for type DataFlowSourceSetting.
9506func (d DataFlowSourceSetting) MarshalJSON() ([]byte, error) {
9507	objectMap := make(map[string]interface{})
9508	populate(objectMap, "rowLimit", d.RowLimit)
9509	populate(objectMap, "sourceName", d.SourceName)
9510	if d.AdditionalProperties != nil {
9511		for key, val := range d.AdditionalProperties {
9512			objectMap[key] = val
9513		}
9514	}
9515	return json.Marshal(objectMap)
9516}
9517
9518// UnmarshalJSON implements the json.Unmarshaller interface for type DataFlowSourceSetting.
9519func (d *DataFlowSourceSetting) UnmarshalJSON(data []byte) error {
9520	var rawMsg map[string]json.RawMessage
9521	if err := json.Unmarshal(data, &rawMsg); err != nil {
9522		return err
9523	}
9524	for key, val := range rawMsg {
9525		var err error
9526		switch key {
9527		case "rowLimit":
9528			err = unpopulate(val, &d.RowLimit)
9529			delete(rawMsg, key)
9530		case "sourceName":
9531			err = unpopulate(val, &d.SourceName)
9532			delete(rawMsg, key)
9533		default:
9534			if d.AdditionalProperties == nil {
9535				d.AdditionalProperties = map[string]interface{}{}
9536			}
9537			if val != nil {
9538				var aux interface{}
9539				err = json.Unmarshal(val, &aux)
9540				d.AdditionalProperties[key] = aux
9541			}
9542			delete(rawMsg, key)
9543		}
9544		if err != nil {
9545			return err
9546		}
9547	}
9548	return nil
9549}
9550
9551// DataFlowStagingInfo - Staging info for execute data flow activity.
9552type DataFlowStagingInfo struct {
9553	// Folder path for staging blob.
9554	FolderPath *string `json:"folderPath,omitempty"`
9555
9556	// Staging linked service reference.
9557	LinkedService *LinkedServiceReference `json:"linkedService,omitempty"`
9558}
9559
9560// DataLakeAnalyticsUSQLActivity - Data Lake Analytics U-SQL activity.
9561type DataLakeAnalyticsUSQLActivity struct {
9562	ExecutionActivity
9563	// REQUIRED; Data Lake Analytics U-SQL activity properties.
9564	TypeProperties *DataLakeAnalyticsUSQLActivityTypeProperties `json:"typeProperties,omitempty"`
9565}
9566
9567// MarshalJSON implements the json.Marshaller interface for type DataLakeAnalyticsUSQLActivity.
9568func (d DataLakeAnalyticsUSQLActivity) MarshalJSON() ([]byte, error) {
9569	objectMap := d.ExecutionActivity.marshalInternal("DataLakeAnalyticsU-SQL")
9570	populate(objectMap, "typeProperties", d.TypeProperties)
9571	return json.Marshal(objectMap)
9572}
9573
9574// UnmarshalJSON implements the json.Unmarshaller interface for type DataLakeAnalyticsUSQLActivity.
9575func (d *DataLakeAnalyticsUSQLActivity) UnmarshalJSON(data []byte) error {
9576	var rawMsg map[string]json.RawMessage
9577	if err := json.Unmarshal(data, &rawMsg); err != nil {
9578		return err
9579	}
9580	for key, val := range rawMsg {
9581		var err error
9582		switch key {
9583		case "typeProperties":
9584			err = unpopulate(val, &d.TypeProperties)
9585			delete(rawMsg, key)
9586		}
9587		if err != nil {
9588			return err
9589		}
9590	}
9591	return d.ExecutionActivity.unmarshalInternal(rawMsg)
9592}
9593
9594// DataLakeAnalyticsUSQLActivityTypeProperties - DataLakeAnalyticsU-SQL activity properties.
9595type DataLakeAnalyticsUSQLActivityTypeProperties struct {
9596	// REQUIRED; Script linked service reference.
9597	ScriptLinkedService *LinkedServiceReference `json:"scriptLinkedService,omitempty"`
9598
9599	// REQUIRED; Case-sensitive path to folder that contains the U-SQL script. Type: string (or Expression with resultType string).
9600	ScriptPath interface{} `json:"scriptPath,omitempty"`
9601
9602	// Compilation mode of U-SQL. Must be one of these values : Semantic, Full and SingleBox. Type: string (or Expression with resultType string).
9603	CompilationMode interface{} `json:"compilationMode,omitempty"`
9604
9605	// The maximum number of nodes simultaneously used to run the job. Default value is 1. Type: integer (or Expression with resultType integer), minimum: 1.
9606	DegreeOfParallelism interface{} `json:"degreeOfParallelism,omitempty"`
9607
9608	// Parameters for U-SQL job request.
9609	Parameters map[string]interface{} `json:"parameters,omitempty"`
9610
9611	// Determines which jobs out of all that are queued should be selected to run first. The lower the number, the higher the priority. Default value is 1000.
9612	// Type: integer (or Expression with resultType
9613	// integer), minimum: 1.
9614	Priority interface{} `json:"priority,omitempty"`
9615
9616	// Runtime version of the U-SQL engine to use. Type: string (or Expression with resultType string).
9617	RuntimeVersion interface{} `json:"runtimeVersion,omitempty"`
9618}
9619
9620// MarshalJSON implements the json.Marshaller interface for type DataLakeAnalyticsUSQLActivityTypeProperties.
9621func (d DataLakeAnalyticsUSQLActivityTypeProperties) MarshalJSON() ([]byte, error) {
9622	objectMap := make(map[string]interface{})
9623	populate(objectMap, "compilationMode", d.CompilationMode)
9624	populate(objectMap, "degreeOfParallelism", d.DegreeOfParallelism)
9625	populate(objectMap, "parameters", d.Parameters)
9626	populate(objectMap, "priority", d.Priority)
9627	populate(objectMap, "runtimeVersion", d.RuntimeVersion)
9628	populate(objectMap, "scriptLinkedService", d.ScriptLinkedService)
9629	populate(objectMap, "scriptPath", d.ScriptPath)
9630	return json.Marshal(objectMap)
9631}
9632
9633// DataLakeStorageAccountDetails - Details of the data lake storage account associated with the workspace
9634type DataLakeStorageAccountDetails struct {
9635	// Account URL
9636	AccountURL *string `json:"accountUrl,omitempty"`
9637
9638	// Filesystem name
9639	Filesystem *string `json:"filesystem,omitempty"`
9640}
9641
9642// DatabricksNotebookActivity - DatabricksNotebook activity.
9643type DatabricksNotebookActivity struct {
9644	ExecutionActivity
9645	// REQUIRED; Databricks Notebook activity properties.
9646	TypeProperties *DatabricksNotebookActivityTypeProperties `json:"typeProperties,omitempty"`
9647}
9648
9649// MarshalJSON implements the json.Marshaller interface for type DatabricksNotebookActivity.
9650func (d DatabricksNotebookActivity) MarshalJSON() ([]byte, error) {
9651	objectMap := d.ExecutionActivity.marshalInternal("DatabricksNotebook")
9652	populate(objectMap, "typeProperties", d.TypeProperties)
9653	return json.Marshal(objectMap)
9654}
9655
9656// UnmarshalJSON implements the json.Unmarshaller interface for type DatabricksNotebookActivity.
9657func (d *DatabricksNotebookActivity) UnmarshalJSON(data []byte) error {
9658	var rawMsg map[string]json.RawMessage
9659	if err := json.Unmarshal(data, &rawMsg); err != nil {
9660		return err
9661	}
9662	for key, val := range rawMsg {
9663		var err error
9664		switch key {
9665		case "typeProperties":
9666			err = unpopulate(val, &d.TypeProperties)
9667			delete(rawMsg, key)
9668		}
9669		if err != nil {
9670			return err
9671		}
9672	}
9673	return d.ExecutionActivity.unmarshalInternal(rawMsg)
9674}
9675
9676// DatabricksNotebookActivityTypeProperties - Databricks Notebook activity properties.
9677type DatabricksNotebookActivityTypeProperties struct {
9678	// REQUIRED; The absolute path of the notebook to be run in the Databricks Workspace. This path must begin with a slash. Type: string (or Expression with
9679	// resultType string).
9680	NotebookPath interface{} `json:"notebookPath,omitempty"`
9681
9682	// Base parameters to be used for each run of this job.If the notebook takes a parameter that is not specified, the default value from the notebook will
9683	// be used.
9684	BaseParameters map[string]interface{} `json:"baseParameters,omitempty"`
9685
9686	// A list of libraries to be installed on the cluster that will execute the job.
9687	Libraries []map[string]interface{} `json:"libraries,omitempty"`
9688}
9689
9690// MarshalJSON implements the json.Marshaller interface for type DatabricksNotebookActivityTypeProperties.
9691func (d DatabricksNotebookActivityTypeProperties) MarshalJSON() ([]byte, error) {
9692	objectMap := make(map[string]interface{})
9693	populate(objectMap, "baseParameters", d.BaseParameters)
9694	populate(objectMap, "libraries", d.Libraries)
9695	populate(objectMap, "notebookPath", d.NotebookPath)
9696	return json.Marshal(objectMap)
9697}
9698
9699// DatabricksSparkJarActivity - DatabricksSparkJar activity.
9700type DatabricksSparkJarActivity struct {
9701	ExecutionActivity
9702	// REQUIRED; Databricks SparkJar activity properties.
9703	TypeProperties *DatabricksSparkJarActivityTypeProperties `json:"typeProperties,omitempty"`
9704}
9705
9706// MarshalJSON implements the json.Marshaller interface for type DatabricksSparkJarActivity.
9707func (d DatabricksSparkJarActivity) MarshalJSON() ([]byte, error) {
9708	objectMap := d.ExecutionActivity.marshalInternal("DatabricksSparkJar")
9709	populate(objectMap, "typeProperties", d.TypeProperties)
9710	return json.Marshal(objectMap)
9711}
9712
9713// UnmarshalJSON implements the json.Unmarshaller interface for type DatabricksSparkJarActivity.
9714func (d *DatabricksSparkJarActivity) UnmarshalJSON(data []byte) error {
9715	var rawMsg map[string]json.RawMessage
9716	if err := json.Unmarshal(data, &rawMsg); err != nil {
9717		return err
9718	}
9719	for key, val := range rawMsg {
9720		var err error
9721		switch key {
9722		case "typeProperties":
9723			err = unpopulate(val, &d.TypeProperties)
9724			delete(rawMsg, key)
9725		}
9726		if err != nil {
9727			return err
9728		}
9729	}
9730	return d.ExecutionActivity.unmarshalInternal(rawMsg)
9731}
9732
9733// DatabricksSparkJarActivityTypeProperties - Databricks SparkJar activity properties.
9734type DatabricksSparkJarActivityTypeProperties struct {
9735	// REQUIRED; The full name of the class containing the main method to be executed. This class must be contained in a JAR provided as a library. Type: string
9736	// (or Expression with resultType string).
9737	MainClassName interface{} `json:"mainClassName,omitempty"`
9738
9739	// A list of libraries to be installed on the cluster that will execute the job.
9740	Libraries []map[string]interface{} `json:"libraries,omitempty"`
9741
9742	// Parameters that will be passed to the main method.
9743	Parameters []interface{} `json:"parameters,omitempty"`
9744}
9745
9746// MarshalJSON implements the json.Marshaller interface for type DatabricksSparkJarActivityTypeProperties.
9747func (d DatabricksSparkJarActivityTypeProperties) MarshalJSON() ([]byte, error) {
9748	objectMap := make(map[string]interface{})
9749	populate(objectMap, "libraries", d.Libraries)
9750	populate(objectMap, "mainClassName", d.MainClassName)
9751	populate(objectMap, "parameters", d.Parameters)
9752	return json.Marshal(objectMap)
9753}
9754
9755// DatabricksSparkPythonActivity - DatabricksSparkPython activity.
9756type DatabricksSparkPythonActivity struct {
9757	ExecutionActivity
9758	// REQUIRED; Databricks SparkPython activity properties.
9759	TypeProperties *DatabricksSparkPythonActivityTypeProperties `json:"typeProperties,omitempty"`
9760}
9761
9762// MarshalJSON implements the json.Marshaller interface for type DatabricksSparkPythonActivity.
9763func (d DatabricksSparkPythonActivity) MarshalJSON() ([]byte, error) {
9764	objectMap := d.ExecutionActivity.marshalInternal("DatabricksSparkPython")
9765	populate(objectMap, "typeProperties", d.TypeProperties)
9766	return json.Marshal(objectMap)
9767}
9768
9769// UnmarshalJSON implements the json.Unmarshaller interface for type DatabricksSparkPythonActivity.
9770func (d *DatabricksSparkPythonActivity) UnmarshalJSON(data []byte) error {
9771	var rawMsg map[string]json.RawMessage
9772	if err := json.Unmarshal(data, &rawMsg); err != nil {
9773		return err
9774	}
9775	for key, val := range rawMsg {
9776		var err error
9777		switch key {
9778		case "typeProperties":
9779			err = unpopulate(val, &d.TypeProperties)
9780			delete(rawMsg, key)
9781		}
9782		if err != nil {
9783			return err
9784		}
9785	}
9786	return d.ExecutionActivity.unmarshalInternal(rawMsg)
9787}
9788
9789// DatabricksSparkPythonActivityTypeProperties - Databricks SparkPython activity properties.
9790type DatabricksSparkPythonActivityTypeProperties struct {
9791	// REQUIRED; The URI of the Python file to be executed. DBFS paths are supported. Type: string (or Expression with resultType string).
9792	PythonFile interface{} `json:"pythonFile,omitempty"`
9793
9794	// A list of libraries to be installed on the cluster that will execute the job.
9795	Libraries []map[string]interface{} `json:"libraries,omitempty"`
9796
9797	// Command line parameters that will be passed to the Python file.
9798	Parameters []interface{} `json:"parameters,omitempty"`
9799}
9800
9801// MarshalJSON implements the json.Marshaller interface for type DatabricksSparkPythonActivityTypeProperties.
9802func (d DatabricksSparkPythonActivityTypeProperties) MarshalJSON() ([]byte, error) {
9803	objectMap := make(map[string]interface{})
9804	populate(objectMap, "libraries", d.Libraries)
9805	populate(objectMap, "parameters", d.Parameters)
9806	populate(objectMap, "pythonFile", d.PythonFile)
9807	return json.Marshal(objectMap)
9808}
9809
9810// DatasetClassification provides polymorphic access to related types.
9811// Call the interface's GetDataset() method to access the common type.
9812// Use a type switch to determine the concrete type.  The possible types are:
9813// - *AmazonMWSObjectDataset, *AmazonRedshiftTableDataset, *AmazonS3Dataset, *AvroDataset, *AzureBlobDataset, *AzureBlobFSDataset,
9814// - *AzureDataExplorerTableDataset, *AzureDataLakeStoreDataset, *AzureDatabricksDeltaLakeDataset, *AzureMariaDBTableDataset,
9815// - *AzureMySqlTableDataset, *AzurePostgreSqlTableDataset, *AzureSearchIndexDataset, *AzureSqlDWTableDataset, *AzureSqlMITableDataset,
9816// - *AzureSqlTableDataset, *AzureTableDataset, *BinaryDataset, *CassandraTableDataset, *CommonDataServiceForAppsEntityDataset,
9817// - *ConcurObjectDataset, *CosmosDbMongoDbApiCollectionDataset, *CosmosDbSqlApiCollectionDataset, *CouchbaseTableDataset,
9818// - *CustomDataset, *Dataset, *Db2TableDataset, *DelimitedTextDataset, *DocumentDbCollectionDataset, *DrillTableDataset,
9819// - *DynamicsAXResourceDataset, *DynamicsCrmEntityDataset, *DynamicsEntityDataset, *EloquaObjectDataset, *ExcelDataset, *FileShareDataset,
9820// - *GoogleAdWordsObjectDataset, *GoogleBigQueryObjectDataset, *GreenplumTableDataset, *HBaseObjectDataset, *HiveObjectDataset,
9821// - *HttpDataset, *HubspotObjectDataset, *ImpalaObjectDataset, *InformixTableDataset, *JiraObjectDataset, *JsonDataset, *MagentoObjectDataset,
9822// - *MariaDBTableDataset, *MarketoObjectDataset, *MicrosoftAccessTableDataset, *MongoDbAtlasCollectionDataset, *MongoDbCollectionDataset,
9823// - *MongoDbV2CollectionDataset, *MySqlTableDataset, *NetezzaTableDataset, *ODataResourceDataset, *OdbcTableDataset, *Office365Dataset,
9824// - *OracleServiceCloudObjectDataset, *OracleTableDataset, *OrcDataset, *ParquetDataset, *PaypalObjectDataset, *PhoenixObjectDataset,
9825// - *PostgreSqlTableDataset, *PrestoObjectDataset, *QuickBooksObjectDataset, *RelationalTableDataset, *ResponsysObjectDataset,
9826// - *RestResourceDataset, *SalesforceMarketingCloudObjectDataset, *SalesforceObjectDataset, *SalesforceServiceCloudObjectDataset,
9827// - *SapBwCubeDataset, *SapCloudForCustomerResourceDataset, *SapEccResourceDataset, *SapHanaTableDataset, *SapOpenHubTableDataset,
9828// - *SapTableResourceDataset, *ServiceNowObjectDataset, *SharePointOnlineListResourceDataset, *ShopifyObjectDataset, *SnowflakeDataset,
9829// - *SparkObjectDataset, *SqlServerTableDataset, *SquareObjectDataset, *SybaseTableDataset, *TeradataTableDataset, *VerticaTableDataset,
9830// - *WebTableDataset, *XeroObjectDataset, *XmlDataset, *ZohoObjectDataset
9831type DatasetClassification interface {
9832	// GetDataset returns the Dataset content of the underlying type.
9833	GetDataset() *Dataset
9834}
9835
9836// Dataset - The Azure Data Factory nested object which identifies data within different data stores, such as tables, files, folders, and documents.
9837type Dataset struct {
9838	// REQUIRED; Linked service reference.
9839	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
9840
9841	// REQUIRED; Type of dataset.
9842	Type *string `json:"type,omitempty"`
9843
9844	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
9845	AdditionalProperties map[string]interface{}
9846
9847	// List of tags that can be used for describing the Dataset.
9848	Annotations []interface{} `json:"annotations,omitempty"`
9849
9850	// Dataset description.
9851	Description *string `json:"description,omitempty"`
9852
9853	// The folder that this Dataset is in. If not specified, Dataset will appear at the root level.
9854	Folder *DatasetFolder `json:"folder,omitempty"`
9855
9856	// Parameters for dataset.
9857	Parameters map[string]*ParameterSpecification `json:"parameters,omitempty"`
9858
9859	// Columns that define the physical type schema of the dataset. Type: array (or Expression with resultType array), itemType: DatasetSchemaDataElement.
9860	Schema interface{} `json:"schema,omitempty"`
9861
9862	// Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
9863	Structure interface{} `json:"structure,omitempty"`
9864}
9865
9866// GetDataset implements the DatasetClassification interface for type Dataset.
9867func (d *Dataset) GetDataset() *Dataset { return d }
9868
9869// UnmarshalJSON implements the json.Unmarshaller interface for type Dataset.
9870func (d *Dataset) UnmarshalJSON(data []byte) error {
9871	var rawMsg map[string]json.RawMessage
9872	if err := json.Unmarshal(data, &rawMsg); err != nil {
9873		return err
9874	}
9875	return d.unmarshalInternal(rawMsg)
9876}
9877
9878func (d Dataset) marshalInternal(discValue string) map[string]interface{} {
9879	objectMap := make(map[string]interface{})
9880	populate(objectMap, "annotations", d.Annotations)
9881	populate(objectMap, "description", d.Description)
9882	populate(objectMap, "folder", d.Folder)
9883	populate(objectMap, "linkedServiceName", d.LinkedServiceName)
9884	populate(objectMap, "parameters", d.Parameters)
9885	populate(objectMap, "schema", d.Schema)
9886	populate(objectMap, "structure", d.Structure)
9887	d.Type = &discValue
9888	objectMap["type"] = d.Type
9889	if d.AdditionalProperties != nil {
9890		for key, val := range d.AdditionalProperties {
9891			objectMap[key] = val
9892		}
9893	}
9894	return objectMap
9895}
9896
9897func (d *Dataset) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
9898	for key, val := range rawMsg {
9899		var err error
9900		switch key {
9901		case "annotations":
9902			err = unpopulate(val, &d.Annotations)
9903			delete(rawMsg, key)
9904		case "description":
9905			err = unpopulate(val, &d.Description)
9906			delete(rawMsg, key)
9907		case "folder":
9908			err = unpopulate(val, &d.Folder)
9909			delete(rawMsg, key)
9910		case "linkedServiceName":
9911			err = unpopulate(val, &d.LinkedServiceName)
9912			delete(rawMsg, key)
9913		case "parameters":
9914			err = unpopulate(val, &d.Parameters)
9915			delete(rawMsg, key)
9916		case "schema":
9917			err = unpopulate(val, &d.Schema)
9918			delete(rawMsg, key)
9919		case "structure":
9920			err = unpopulate(val, &d.Structure)
9921			delete(rawMsg, key)
9922		case "type":
9923			err = unpopulate(val, &d.Type)
9924			delete(rawMsg, key)
9925		default:
9926			if d.AdditionalProperties == nil {
9927				d.AdditionalProperties = map[string]interface{}{}
9928			}
9929			if val != nil {
9930				var aux interface{}
9931				err = json.Unmarshal(val, &aux)
9932				d.AdditionalProperties[key] = aux
9933			}
9934			delete(rawMsg, key)
9935		}
9936		if err != nil {
9937			return err
9938		}
9939	}
9940	return nil
9941}
9942
9943// DatasetBZip2Compression - The BZip2 compression method used on a dataset.
9944type DatasetBZip2Compression struct {
9945	DatasetCompression
9946}
9947
9948// MarshalJSON implements the json.Marshaller interface for type DatasetBZip2Compression.
9949func (d DatasetBZip2Compression) MarshalJSON() ([]byte, error) {
9950	objectMap := d.DatasetCompression.marshalInternal("BZip2")
9951	return json.Marshal(objectMap)
9952}
9953
9954// DatasetBeginCreateOrUpdateDatasetOptions contains the optional parameters for the Dataset.BeginCreateOrUpdateDataset method.
9955type DatasetBeginCreateOrUpdateDatasetOptions struct {
9956	// ETag of the dataset entity. Should only be specified for update, for which it should match existing entity or can be * for unconditional update.
9957	IfMatch *string
9958}
9959
9960// DatasetBeginDeleteDatasetOptions contains the optional parameters for the Dataset.BeginDeleteDataset method.
9961type DatasetBeginDeleteDatasetOptions struct {
9962	// placeholder for future optional parameters
9963}
9964
9965// DatasetBeginRenameDatasetOptions contains the optional parameters for the Dataset.BeginRenameDataset method.
9966type DatasetBeginRenameDatasetOptions struct {
9967	// placeholder for future optional parameters
9968}
9969
9970// DatasetCompressionClassification provides polymorphic access to related types.
9971// Call the interface's GetDatasetCompression() method to access the common type.
9972// Use a type switch to determine the concrete type.  The possible types are:
9973// - *DatasetBZip2Compression, *DatasetCompression, *DatasetDeflateCompression, *DatasetGZipCompression, *DatasetTarCompression,
9974// - *DatasetTarGZipCompression, *DatasetZipDeflateCompression
9975type DatasetCompressionClassification interface {
9976	// GetDatasetCompression returns the DatasetCompression content of the underlying type.
9977	GetDatasetCompression() *DatasetCompression
9978}
9979
9980// DatasetCompression - The compression method used on a dataset.
9981type DatasetCompression struct {
9982	// REQUIRED; Type of dataset compression.
9983	Type *string `json:"type,omitempty"`
9984
9985	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
9986	AdditionalProperties map[string]interface{}
9987}
9988
9989// GetDatasetCompression implements the DatasetCompressionClassification interface for type DatasetCompression.
9990func (d *DatasetCompression) GetDatasetCompression() *DatasetCompression { return d }
9991
9992// UnmarshalJSON implements the json.Unmarshaller interface for type DatasetCompression.
9993func (d *DatasetCompression) UnmarshalJSON(data []byte) error {
9994	var rawMsg map[string]json.RawMessage
9995	if err := json.Unmarshal(data, &rawMsg); err != nil {
9996		return err
9997	}
9998	return d.unmarshalInternal(rawMsg)
9999}
10000
10001func (d DatasetCompression) marshalInternal(discValue string) map[string]interface{} {
10002	objectMap := make(map[string]interface{})
10003	d.Type = &discValue
10004	objectMap["type"] = d.Type
10005	if d.AdditionalProperties != nil {
10006		for key, val := range d.AdditionalProperties {
10007			objectMap[key] = val
10008		}
10009	}
10010	return objectMap
10011}
10012
10013func (d *DatasetCompression) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
10014	for key, val := range rawMsg {
10015		var err error
10016		switch key {
10017		case "type":
10018			err = unpopulate(val, &d.Type)
10019			delete(rawMsg, key)
10020		default:
10021			if d.AdditionalProperties == nil {
10022				d.AdditionalProperties = map[string]interface{}{}
10023			}
10024			if val != nil {
10025				var aux interface{}
10026				err = json.Unmarshal(val, &aux)
10027				d.AdditionalProperties[key] = aux
10028			}
10029			delete(rawMsg, key)
10030		}
10031		if err != nil {
10032			return err
10033		}
10034	}
10035	return nil
10036}
10037
10038// DatasetDataElement - Columns that define the structure of the dataset.
10039type DatasetDataElement struct {
10040	// Name of the column. Type: string (or Expression with resultType string).
10041	Name interface{} `json:"name,omitempty"`
10042
10043	// Type of the column. Type: string (or Expression with resultType string).
10044	Type interface{} `json:"type,omitempty"`
10045}
10046
10047// DatasetDebugResource - Dataset debug resource.
10048type DatasetDebugResource struct {
10049	SubResourceDebugResource
10050	// REQUIRED; Dataset properties.
10051	Properties DatasetClassification `json:"properties,omitempty"`
10052}
10053
10054// MarshalJSON implements the json.Marshaller interface for type DatasetDebugResource.
10055func (d DatasetDebugResource) MarshalJSON() ([]byte, error) {
10056	objectMap := d.SubResourceDebugResource.marshalInternal()
10057	populate(objectMap, "properties", d.Properties)
10058	return json.Marshal(objectMap)
10059}
10060
10061// UnmarshalJSON implements the json.Unmarshaller interface for type DatasetDebugResource.
10062func (d *DatasetDebugResource) UnmarshalJSON(data []byte) error {
10063	var rawMsg map[string]json.RawMessage
10064	if err := json.Unmarshal(data, &rawMsg); err != nil {
10065		return err
10066	}
10067	for key, val := range rawMsg {
10068		var err error
10069		switch key {
10070		case "properties":
10071			d.Properties, err = unmarshalDatasetClassification(val)
10072			delete(rawMsg, key)
10073		}
10074		if err != nil {
10075			return err
10076		}
10077	}
10078	return d.SubResourceDebugResource.unmarshalInternal(rawMsg)
10079}
10080
10081// DatasetDeflateCompression - The Deflate compression method used on a dataset.
10082type DatasetDeflateCompression struct {
10083	DatasetCompression
10084	// The Deflate compression level.
10085	Level interface{} `json:"level,omitempty"`
10086}
10087
10088// MarshalJSON implements the json.Marshaller interface for type DatasetDeflateCompression.
10089func (d DatasetDeflateCompression) MarshalJSON() ([]byte, error) {
10090	objectMap := d.DatasetCompression.marshalInternal("Deflate")
10091	populate(objectMap, "level", d.Level)
10092	return json.Marshal(objectMap)
10093}
10094
10095// UnmarshalJSON implements the json.Unmarshaller interface for type DatasetDeflateCompression.
10096func (d *DatasetDeflateCompression) UnmarshalJSON(data []byte) error {
10097	var rawMsg map[string]json.RawMessage
10098	if err := json.Unmarshal(data, &rawMsg); err != nil {
10099		return err
10100	}
10101	for key, val := range rawMsg {
10102		var err error
10103		switch key {
10104		case "level":
10105			err = unpopulate(val, &d.Level)
10106			delete(rawMsg, key)
10107		}
10108		if err != nil {
10109			return err
10110		}
10111	}
10112	return d.DatasetCompression.unmarshalInternal(rawMsg)
10113}
10114
10115// DatasetFolder - The folder that this Dataset is in. If not specified, Dataset will appear at the root level.
10116type DatasetFolder struct {
10117	// The name of the folder that this Dataset is in.
10118	Name *string `json:"name,omitempty"`
10119}
10120
10121// DatasetGZipCompression - The GZip compression method used on a dataset.
10122type DatasetGZipCompression struct {
10123	DatasetCompression
10124	// The GZip compression level.
10125	Level interface{} `json:"level,omitempty"`
10126}
10127
10128// MarshalJSON implements the json.Marshaller interface for type DatasetGZipCompression.
10129func (d DatasetGZipCompression) MarshalJSON() ([]byte, error) {
10130	objectMap := d.DatasetCompression.marshalInternal("GZip")
10131	populate(objectMap, "level", d.Level)
10132	return json.Marshal(objectMap)
10133}
10134
10135// UnmarshalJSON implements the json.Unmarshaller interface for type DatasetGZipCompression.
10136func (d *DatasetGZipCompression) UnmarshalJSON(data []byte) error {
10137	var rawMsg map[string]json.RawMessage
10138	if err := json.Unmarshal(data, &rawMsg); err != nil {
10139		return err
10140	}
10141	for key, val := range rawMsg {
10142		var err error
10143		switch key {
10144		case "level":
10145			err = unpopulate(val, &d.Level)
10146			delete(rawMsg, key)
10147		}
10148		if err != nil {
10149			return err
10150		}
10151	}
10152	return d.DatasetCompression.unmarshalInternal(rawMsg)
10153}
10154
10155// DatasetGetDatasetOptions contains the optional parameters for the Dataset.GetDataset method.
10156type DatasetGetDatasetOptions struct {
10157	// ETag of the dataset entity. Should only be specified for get. If the ETag matches the existing entity tag, or if * was provided, then no content will
10158	// be returned.
10159	IfNoneMatch *string
10160}
10161
10162// DatasetGetDatasetsByWorkspaceOptions contains the optional parameters for the Dataset.GetDatasetsByWorkspace method.
10163type DatasetGetDatasetsByWorkspaceOptions struct {
10164	// placeholder for future optional parameters
10165}
10166
10167// DatasetListResponse - A list of dataset resources.
10168type DatasetListResponse struct {
10169	// REQUIRED; List of datasets.
10170	Value []*DatasetResource `json:"value,omitempty"`
10171
10172	// The link to the next page of results, if any remaining results exist.
10173	NextLink *string `json:"nextLink,omitempty"`
10174}
10175
10176// MarshalJSON implements the json.Marshaller interface for type DatasetListResponse.
10177func (d DatasetListResponse) MarshalJSON() ([]byte, error) {
10178	objectMap := make(map[string]interface{})
10179	populate(objectMap, "nextLink", d.NextLink)
10180	populate(objectMap, "value", d.Value)
10181	return json.Marshal(objectMap)
10182}
10183
10184// DatasetLocationClassification provides polymorphic access to related types.
10185// Call the interface's GetDatasetLocation() method to access the common type.
10186// Use a type switch to determine the concrete type.  The possible types are:
10187// - *AmazonS3Location, *AzureBlobFSLocation, *AzureBlobStorageLocation, *AzureDataLakeStoreLocation, *AzureFileStorageLocation,
10188// - *DatasetLocation, *FileServerLocation, *FtpServerLocation, *GoogleCloudStorageLocation, *HdfsLocation, *HttpServerLocation,
10189// - *SftpLocation
10190type DatasetLocationClassification interface {
10191	// GetDatasetLocation returns the DatasetLocation content of the underlying type.
10192	GetDatasetLocation() *DatasetLocation
10193}
10194
10195// DatasetLocation - Dataset location.
10196type DatasetLocation struct {
10197	// REQUIRED; Type of dataset storage location.
10198	Type *string `json:"type,omitempty"`
10199
10200	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
10201	AdditionalProperties map[string]interface{}
10202
10203	// Specify the file name of dataset. Type: string (or Expression with resultType string).
10204	FileName interface{} `json:"fileName,omitempty"`
10205
10206	// Specify the folder path of dataset. Type: string (or Expression with resultType string)
10207	FolderPath interface{} `json:"folderPath,omitempty"`
10208}
10209
10210// GetDatasetLocation implements the DatasetLocationClassification interface for type DatasetLocation.
10211func (d *DatasetLocation) GetDatasetLocation() *DatasetLocation { return d }
10212
10213// UnmarshalJSON implements the json.Unmarshaller interface for type DatasetLocation.
10214func (d *DatasetLocation) UnmarshalJSON(data []byte) error {
10215	var rawMsg map[string]json.RawMessage
10216	if err := json.Unmarshal(data, &rawMsg); err != nil {
10217		return err
10218	}
10219	return d.unmarshalInternal(rawMsg)
10220}
10221
10222func (d DatasetLocation) marshalInternal(discValue string) map[string]interface{} {
10223	objectMap := make(map[string]interface{})
10224	populate(objectMap, "fileName", d.FileName)
10225	populate(objectMap, "folderPath", d.FolderPath)
10226	d.Type = &discValue
10227	objectMap["type"] = d.Type
10228	if d.AdditionalProperties != nil {
10229		for key, val := range d.AdditionalProperties {
10230			objectMap[key] = val
10231		}
10232	}
10233	return objectMap
10234}
10235
10236func (d *DatasetLocation) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
10237	for key, val := range rawMsg {
10238		var err error
10239		switch key {
10240		case "fileName":
10241			err = unpopulate(val, &d.FileName)
10242			delete(rawMsg, key)
10243		case "folderPath":
10244			err = unpopulate(val, &d.FolderPath)
10245			delete(rawMsg, key)
10246		case "type":
10247			err = unpopulate(val, &d.Type)
10248			delete(rawMsg, key)
10249		default:
10250			if d.AdditionalProperties == nil {
10251				d.AdditionalProperties = map[string]interface{}{}
10252			}
10253			if val != nil {
10254				var aux interface{}
10255				err = json.Unmarshal(val, &aux)
10256				d.AdditionalProperties[key] = aux
10257			}
10258			delete(rawMsg, key)
10259		}
10260		if err != nil {
10261			return err
10262		}
10263	}
10264	return nil
10265}
10266
10267// DatasetReference - Dataset reference type.
10268type DatasetReference struct {
10269	// REQUIRED; Reference dataset name.
10270	ReferenceName *string `json:"referenceName,omitempty"`
10271
10272	// REQUIRED; Dataset reference type.
10273	Type *DatasetReferenceType `json:"type,omitempty"`
10274
10275	// Arguments for dataset.
10276	Parameters map[string]interface{} `json:"parameters,omitempty"`
10277}
10278
10279// MarshalJSON implements the json.Marshaller interface for type DatasetReference.
10280func (d DatasetReference) MarshalJSON() ([]byte, error) {
10281	objectMap := make(map[string]interface{})
10282	populate(objectMap, "parameters", d.Parameters)
10283	populate(objectMap, "referenceName", d.ReferenceName)
10284	populate(objectMap, "type", d.Type)
10285	return json.Marshal(objectMap)
10286}
10287
10288// DatasetResource - Dataset resource type.
10289type DatasetResource struct {
10290	SubResource
10291	// REQUIRED; Dataset properties.
10292	Properties DatasetClassification `json:"properties,omitempty"`
10293}
10294
10295// MarshalJSON implements the json.Marshaller interface for type DatasetResource.
10296func (d DatasetResource) MarshalJSON() ([]byte, error) {
10297	objectMap := d.SubResource.marshalInternal()
10298	populate(objectMap, "properties", d.Properties)
10299	return json.Marshal(objectMap)
10300}
10301
10302// UnmarshalJSON implements the json.Unmarshaller interface for type DatasetResource.
10303func (d *DatasetResource) UnmarshalJSON(data []byte) error {
10304	var rawMsg map[string]json.RawMessage
10305	if err := json.Unmarshal(data, &rawMsg); err != nil {
10306		return err
10307	}
10308	for key, val := range rawMsg {
10309		var err error
10310		switch key {
10311		case "properties":
10312			d.Properties, err = unmarshalDatasetClassification(val)
10313			delete(rawMsg, key)
10314		}
10315		if err != nil {
10316			return err
10317		}
10318	}
10319	return d.SubResource.unmarshalInternal(rawMsg)
10320}
10321
10322// DatasetSchemaDataElement - Columns that define the physical type schema of the dataset.
10323type DatasetSchemaDataElement struct {
10324	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
10325	AdditionalProperties map[string]interface{}
10326
10327	// Name of the schema column. Type: string (or Expression with resultType string).
10328	Name interface{} `json:"name,omitempty"`
10329
10330	// Type of the schema column. Type: string (or Expression with resultType string).
10331	Type interface{} `json:"type,omitempty"`
10332}
10333
10334// MarshalJSON implements the json.Marshaller interface for type DatasetSchemaDataElement.
10335func (d DatasetSchemaDataElement) MarshalJSON() ([]byte, error) {
10336	objectMap := make(map[string]interface{})
10337	populate(objectMap, "name", d.Name)
10338	populate(objectMap, "type", d.Type)
10339	if d.AdditionalProperties != nil {
10340		for key, val := range d.AdditionalProperties {
10341			objectMap[key] = val
10342		}
10343	}
10344	return json.Marshal(objectMap)
10345}
10346
10347// UnmarshalJSON implements the json.Unmarshaller interface for type DatasetSchemaDataElement.
10348func (d *DatasetSchemaDataElement) UnmarshalJSON(data []byte) error {
10349	var rawMsg map[string]json.RawMessage
10350	if err := json.Unmarshal(data, &rawMsg); err != nil {
10351		return err
10352	}
10353	for key, val := range rawMsg {
10354		var err error
10355		switch key {
10356		case "name":
10357			err = unpopulate(val, &d.Name)
10358			delete(rawMsg, key)
10359		case "type":
10360			err = unpopulate(val, &d.Type)
10361			delete(rawMsg, key)
10362		default:
10363			if d.AdditionalProperties == nil {
10364				d.AdditionalProperties = map[string]interface{}{}
10365			}
10366			if val != nil {
10367				var aux interface{}
10368				err = json.Unmarshal(val, &aux)
10369				d.AdditionalProperties[key] = aux
10370			}
10371			delete(rawMsg, key)
10372		}
10373		if err != nil {
10374			return err
10375		}
10376	}
10377	return nil
10378}
10379
10380// DatasetStorageFormatClassification provides polymorphic access to related types.
10381// Call the interface's GetDatasetStorageFormat() method to access the common type.
10382// Use a type switch to determine the concrete type.  The possible types are:
10383// - *AvroFormat, *DatasetStorageFormat, *JsonFormat, *OrcFormat, *ParquetFormat, *TextFormat
10384type DatasetStorageFormatClassification interface {
10385	// GetDatasetStorageFormat returns the DatasetStorageFormat content of the underlying type.
10386	GetDatasetStorageFormat() *DatasetStorageFormat
10387}
10388
10389// DatasetStorageFormat - The format definition of a storage.
10390type DatasetStorageFormat struct {
10391	// REQUIRED; Type of dataset storage format.
10392	Type *string `json:"type,omitempty"`
10393
10394	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
10395	AdditionalProperties map[string]interface{}
10396
10397	// Deserializer. Type: string (or Expression with resultType string).
10398	Deserializer interface{} `json:"deserializer,omitempty"`
10399
10400	// Serializer. Type: string (or Expression with resultType string).
10401	Serializer interface{} `json:"serializer,omitempty"`
10402}
10403
10404// GetDatasetStorageFormat implements the DatasetStorageFormatClassification interface for type DatasetStorageFormat.
10405func (d *DatasetStorageFormat) GetDatasetStorageFormat() *DatasetStorageFormat { return d }
10406
10407// UnmarshalJSON implements the json.Unmarshaller interface for type DatasetStorageFormat.
10408func (d *DatasetStorageFormat) UnmarshalJSON(data []byte) error {
10409	var rawMsg map[string]json.RawMessage
10410	if err := json.Unmarshal(data, &rawMsg); err != nil {
10411		return err
10412	}
10413	return d.unmarshalInternal(rawMsg)
10414}
10415
10416func (d DatasetStorageFormat) marshalInternal(discValue string) map[string]interface{} {
10417	objectMap := make(map[string]interface{})
10418	populate(objectMap, "deserializer", d.Deserializer)
10419	populate(objectMap, "serializer", d.Serializer)
10420	d.Type = &discValue
10421	objectMap["type"] = d.Type
10422	if d.AdditionalProperties != nil {
10423		for key, val := range d.AdditionalProperties {
10424			objectMap[key] = val
10425		}
10426	}
10427	return objectMap
10428}
10429
10430func (d *DatasetStorageFormat) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
10431	for key, val := range rawMsg {
10432		var err error
10433		switch key {
10434		case "deserializer":
10435			err = unpopulate(val, &d.Deserializer)
10436			delete(rawMsg, key)
10437		case "serializer":
10438			err = unpopulate(val, &d.Serializer)
10439			delete(rawMsg, key)
10440		case "type":
10441			err = unpopulate(val, &d.Type)
10442			delete(rawMsg, key)
10443		default:
10444			if d.AdditionalProperties == nil {
10445				d.AdditionalProperties = map[string]interface{}{}
10446			}
10447			if val != nil {
10448				var aux interface{}
10449				err = json.Unmarshal(val, &aux)
10450				d.AdditionalProperties[key] = aux
10451			}
10452			delete(rawMsg, key)
10453		}
10454		if err != nil {
10455			return err
10456		}
10457	}
10458	return nil
10459}
10460
10461// DatasetTarCompression - The Tar archive method used on a dataset.
10462type DatasetTarCompression struct {
10463	DatasetCompression
10464}
10465
10466// MarshalJSON implements the json.Marshaller interface for type DatasetTarCompression.
10467func (d DatasetTarCompression) MarshalJSON() ([]byte, error) {
10468	objectMap := d.DatasetCompression.marshalInternal("Tar")
10469	return json.Marshal(objectMap)
10470}
10471
10472// DatasetTarGZipCompression - The TarGZip compression method used on a dataset.
10473type DatasetTarGZipCompression struct {
10474	DatasetCompression
10475	// The TarGZip compression level.
10476	Level interface{} `json:"level,omitempty"`
10477}
10478
10479// MarshalJSON implements the json.Marshaller interface for type DatasetTarGZipCompression.
10480func (d DatasetTarGZipCompression) MarshalJSON() ([]byte, error) {
10481	objectMap := d.DatasetCompression.marshalInternal("TarGZip")
10482	populate(objectMap, "level", d.Level)
10483	return json.Marshal(objectMap)
10484}
10485
10486// UnmarshalJSON implements the json.Unmarshaller interface for type DatasetTarGZipCompression.
10487func (d *DatasetTarGZipCompression) UnmarshalJSON(data []byte) error {
10488	var rawMsg map[string]json.RawMessage
10489	if err := json.Unmarshal(data, &rawMsg); err != nil {
10490		return err
10491	}
10492	for key, val := range rawMsg {
10493		var err error
10494		switch key {
10495		case "level":
10496			err = unpopulate(val, &d.Level)
10497			delete(rawMsg, key)
10498		}
10499		if err != nil {
10500			return err
10501		}
10502	}
10503	return d.DatasetCompression.unmarshalInternal(rawMsg)
10504}
10505
10506// DatasetZipDeflateCompression - The ZipDeflate compression method used on a dataset.
10507type DatasetZipDeflateCompression struct {
10508	DatasetCompression
10509	// The ZipDeflate compression level.
10510	Level interface{} `json:"level,omitempty"`
10511}
10512
10513// MarshalJSON implements the json.Marshaller interface for type DatasetZipDeflateCompression.
10514func (d DatasetZipDeflateCompression) MarshalJSON() ([]byte, error) {
10515	objectMap := d.DatasetCompression.marshalInternal("ZipDeflate")
10516	populate(objectMap, "level", d.Level)
10517	return json.Marshal(objectMap)
10518}
10519
10520// UnmarshalJSON implements the json.Unmarshaller interface for type DatasetZipDeflateCompression.
10521func (d *DatasetZipDeflateCompression) UnmarshalJSON(data []byte) error {
10522	var rawMsg map[string]json.RawMessage
10523	if err := json.Unmarshal(data, &rawMsg); err != nil {
10524		return err
10525	}
10526	for key, val := range rawMsg {
10527		var err error
10528		switch key {
10529		case "level":
10530			err = unpopulate(val, &d.Level)
10531			delete(rawMsg, key)
10532		}
10533		if err != nil {
10534			return err
10535		}
10536	}
10537	return d.DatasetCompression.unmarshalInternal(rawMsg)
10538}
10539
10540// Db2LinkedService - Linked service for DB2 data source.
10541type Db2LinkedService struct {
10542	LinkedService
10543	// REQUIRED; DB2 linked service properties.
10544	TypeProperties *Db2LinkedServiceTypeProperties `json:"typeProperties,omitempty"`
10545}
10546
10547// MarshalJSON implements the json.Marshaller interface for type Db2LinkedService.
10548func (d Db2LinkedService) MarshalJSON() ([]byte, error) {
10549	objectMap := d.LinkedService.marshalInternal("Db2")
10550	populate(objectMap, "typeProperties", d.TypeProperties)
10551	return json.Marshal(objectMap)
10552}
10553
10554// UnmarshalJSON implements the json.Unmarshaller interface for type Db2LinkedService.
10555func (d *Db2LinkedService) UnmarshalJSON(data []byte) error {
10556	var rawMsg map[string]json.RawMessage
10557	if err := json.Unmarshal(data, &rawMsg); err != nil {
10558		return err
10559	}
10560	for key, val := range rawMsg {
10561		var err error
10562		switch key {
10563		case "typeProperties":
10564			err = unpopulate(val, &d.TypeProperties)
10565			delete(rawMsg, key)
10566		}
10567		if err != nil {
10568			return err
10569		}
10570	}
10571	return d.LinkedService.unmarshalInternal(rawMsg)
10572}
10573
10574// Db2LinkedServiceTypeProperties - DB2 linked service properties.
10575type Db2LinkedServiceTypeProperties struct {
10576	// REQUIRED; Database name for connection. It is mutually exclusive with connectionString property. Type: string (or Expression with resultType string).
10577	Database interface{} `json:"database,omitempty"`
10578
10579	// REQUIRED; Server name for connection. It is mutually exclusive with connectionString property. Type: string (or Expression with resultType string).
10580	Server interface{} `json:"server,omitempty"`
10581
10582	// AuthenticationType to be used for connection. It is mutually exclusive with connectionString property.
10583	AuthenticationType *Db2AuthenticationType `json:"authenticationType,omitempty"`
10584
10585	// Certificate Common Name when TLS is enabled. It is mutually exclusive with connectionString property. Type: string (or Expression with resultType string).
10586	CertificateCommonName interface{} `json:"certificateCommonName,omitempty"`
10587
10588	// The connection string. It is mutually exclusive with server, database, authenticationType, userName, packageCollection and certificateCommonName property.
10589	// Type: string, SecureString or
10590	// AzureKeyVaultSecretReference.
10591	ConnectionString interface{} `json:"connectionString,omitempty"`
10592
10593	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. It is mutually exclusive
10594	// with connectionString property. Type: string (or
10595	// Expression with resultType string).
10596	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
10597
10598	// Under where packages are created when querying database. It is mutually exclusive with connectionString property. Type: string (or Expression with resultType
10599	// string).
10600	PackageCollection interface{} `json:"packageCollection,omitempty"`
10601
10602	// Password for authentication.
10603	Password SecretBaseClassification `json:"password,omitempty"`
10604
10605	// Username for authentication. It is mutually exclusive with connectionString property. Type: string (or Expression with resultType string).
10606	Username interface{} `json:"username,omitempty"`
10607}
10608
10609// MarshalJSON implements the json.Marshaller interface for type Db2LinkedServiceTypeProperties.
10610func (d Db2LinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
10611	objectMap := make(map[string]interface{})
10612	populate(objectMap, "authenticationType", d.AuthenticationType)
10613	populate(objectMap, "certificateCommonName", d.CertificateCommonName)
10614	populate(objectMap, "connectionString", d.ConnectionString)
10615	populate(objectMap, "database", d.Database)
10616	populate(objectMap, "encryptedCredential", d.EncryptedCredential)
10617	populate(objectMap, "packageCollection", d.PackageCollection)
10618	populate(objectMap, "password", d.Password)
10619	populate(objectMap, "server", d.Server)
10620	populate(objectMap, "username", d.Username)
10621	return json.Marshal(objectMap)
10622}
10623
10624// UnmarshalJSON implements the json.Unmarshaller interface for type Db2LinkedServiceTypeProperties.
10625func (d *Db2LinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
10626	var rawMsg map[string]json.RawMessage
10627	if err := json.Unmarshal(data, &rawMsg); err != nil {
10628		return err
10629	}
10630	for key, val := range rawMsg {
10631		var err error
10632		switch key {
10633		case "authenticationType":
10634			err = unpopulate(val, &d.AuthenticationType)
10635			delete(rawMsg, key)
10636		case "certificateCommonName":
10637			err = unpopulate(val, &d.CertificateCommonName)
10638			delete(rawMsg, key)
10639		case "connectionString":
10640			err = unpopulate(val, &d.ConnectionString)
10641			delete(rawMsg, key)
10642		case "database":
10643			err = unpopulate(val, &d.Database)
10644			delete(rawMsg, key)
10645		case "encryptedCredential":
10646			err = unpopulate(val, &d.EncryptedCredential)
10647			delete(rawMsg, key)
10648		case "packageCollection":
10649			err = unpopulate(val, &d.PackageCollection)
10650			delete(rawMsg, key)
10651		case "password":
10652			d.Password, err = unmarshalSecretBaseClassification(val)
10653			delete(rawMsg, key)
10654		case "server":
10655			err = unpopulate(val, &d.Server)
10656			delete(rawMsg, key)
10657		case "username":
10658			err = unpopulate(val, &d.Username)
10659			delete(rawMsg, key)
10660		}
10661		if err != nil {
10662			return err
10663		}
10664	}
10665	return nil
10666}
10667
10668// Db2Source - A copy activity source for Db2 databases.
10669type Db2Source struct {
10670	TabularSource
10671	// Database query. Type: string (or Expression with resultType string).
10672	Query interface{} `json:"query,omitempty"`
10673}
10674
10675// MarshalJSON implements the json.Marshaller interface for type Db2Source.
10676func (d Db2Source) MarshalJSON() ([]byte, error) {
10677	objectMap := d.TabularSource.marshalInternal("Db2Source")
10678	populate(objectMap, "query", d.Query)
10679	return json.Marshal(objectMap)
10680}
10681
10682// UnmarshalJSON implements the json.Unmarshaller interface for type Db2Source.
10683func (d *Db2Source) UnmarshalJSON(data []byte) error {
10684	var rawMsg map[string]json.RawMessage
10685	if err := json.Unmarshal(data, &rawMsg); err != nil {
10686		return err
10687	}
10688	for key, val := range rawMsg {
10689		var err error
10690		switch key {
10691		case "query":
10692			err = unpopulate(val, &d.Query)
10693			delete(rawMsg, key)
10694		}
10695		if err != nil {
10696			return err
10697		}
10698	}
10699	return d.TabularSource.unmarshalInternal(rawMsg)
10700}
10701
10702// Db2TableDataset - The Db2 table dataset.
10703type Db2TableDataset struct {
10704	Dataset
10705	// Db2 table dataset properties.
10706	TypeProperties *Db2TableDatasetTypeProperties `json:"typeProperties,omitempty"`
10707}
10708
10709// MarshalJSON implements the json.Marshaller interface for type Db2TableDataset.
10710func (d Db2TableDataset) MarshalJSON() ([]byte, error) {
10711	objectMap := d.Dataset.marshalInternal("Db2Table")
10712	populate(objectMap, "typeProperties", d.TypeProperties)
10713	return json.Marshal(objectMap)
10714}
10715
10716// UnmarshalJSON implements the json.Unmarshaller interface for type Db2TableDataset.
10717func (d *Db2TableDataset) UnmarshalJSON(data []byte) error {
10718	var rawMsg map[string]json.RawMessage
10719	if err := json.Unmarshal(data, &rawMsg); err != nil {
10720		return err
10721	}
10722	for key, val := range rawMsg {
10723		var err error
10724		switch key {
10725		case "typeProperties":
10726			err = unpopulate(val, &d.TypeProperties)
10727			delete(rawMsg, key)
10728		}
10729		if err != nil {
10730			return err
10731		}
10732	}
10733	return d.Dataset.unmarshalInternal(rawMsg)
10734}
10735
10736// Db2TableDatasetTypeProperties - Db2 table dataset properties.
10737type Db2TableDatasetTypeProperties struct {
10738	// The Db2 schema name. Type: string (or Expression with resultType string).
10739	Schema interface{} `json:"schema,omitempty"`
10740
10741	// The Db2 table name. Type: string (or Expression with resultType string).
10742	Table interface{} `json:"table,omitempty"`
10743
10744	// This property will be retired. Please consider using schema + table properties instead.
10745	TableName interface{} `json:"tableName,omitempty"`
10746}
10747
10748// DeleteActivity - Delete activity.
10749type DeleteActivity struct {
10750	ExecutionActivity
10751	// REQUIRED; Delete activity properties.
10752	TypeProperties *DeleteActivityTypeProperties `json:"typeProperties,omitempty"`
10753}
10754
10755// MarshalJSON implements the json.Marshaller interface for type DeleteActivity.
10756func (d DeleteActivity) MarshalJSON() ([]byte, error) {
10757	objectMap := d.ExecutionActivity.marshalInternal("Delete")
10758	populate(objectMap, "typeProperties", d.TypeProperties)
10759	return json.Marshal(objectMap)
10760}
10761
10762// UnmarshalJSON implements the json.Unmarshaller interface for type DeleteActivity.
10763func (d *DeleteActivity) UnmarshalJSON(data []byte) error {
10764	var rawMsg map[string]json.RawMessage
10765	if err := json.Unmarshal(data, &rawMsg); err != nil {
10766		return err
10767	}
10768	for key, val := range rawMsg {
10769		var err error
10770		switch key {
10771		case "typeProperties":
10772			err = unpopulate(val, &d.TypeProperties)
10773			delete(rawMsg, key)
10774		}
10775		if err != nil {
10776			return err
10777		}
10778	}
10779	return d.ExecutionActivity.unmarshalInternal(rawMsg)
10780}
10781
10782// DeleteActivityTypeProperties - Delete activity properties.
10783type DeleteActivityTypeProperties struct {
10784	// REQUIRED; Delete activity dataset reference.
10785	Dataset *DatasetReference `json:"dataset,omitempty"`
10786
10787	// Whether to record detailed logs of delete-activity execution. Default value is false. Type: boolean (or Expression with resultType boolean).
10788	EnableLogging interface{} `json:"enableLogging,omitempty"`
10789
10790	// Log storage settings customer need to provide when enableLogging is true.
10791	LogStorageSettings *LogStorageSettings `json:"logStorageSettings,omitempty"`
10792
10793	// The max concurrent connections to connect data source at the same time.
10794	MaxConcurrentConnections *int32 `json:"maxConcurrentConnections,omitempty"`
10795
10796	// If true, files or sub-folders under current folder path will be deleted recursively. Default is false. Type: boolean (or Expression with resultType boolean).
10797	Recursive interface{} `json:"recursive,omitempty"`
10798
10799	// Delete activity store settings.
10800	StoreSettings StoreReadSettingsClassification `json:"storeSettings,omitempty"`
10801}
10802
10803// MarshalJSON implements the json.Marshaller interface for type DeleteActivityTypeProperties.
10804func (d DeleteActivityTypeProperties) MarshalJSON() ([]byte, error) {
10805	objectMap := make(map[string]interface{})
10806	populate(objectMap, "dataset", d.Dataset)
10807	populate(objectMap, "enableLogging", d.EnableLogging)
10808	populate(objectMap, "logStorageSettings", d.LogStorageSettings)
10809	populate(objectMap, "maxConcurrentConnections", d.MaxConcurrentConnections)
10810	populate(objectMap, "recursive", d.Recursive)
10811	populate(objectMap, "storeSettings", d.StoreSettings)
10812	return json.Marshal(objectMap)
10813}
10814
10815// UnmarshalJSON implements the json.Unmarshaller interface for type DeleteActivityTypeProperties.
10816func (d *DeleteActivityTypeProperties) UnmarshalJSON(data []byte) error {
10817	var rawMsg map[string]json.RawMessage
10818	if err := json.Unmarshal(data, &rawMsg); err != nil {
10819		return err
10820	}
10821	for key, val := range rawMsg {
10822		var err error
10823		switch key {
10824		case "dataset":
10825			err = unpopulate(val, &d.Dataset)
10826			delete(rawMsg, key)
10827		case "enableLogging":
10828			err = unpopulate(val, &d.EnableLogging)
10829			delete(rawMsg, key)
10830		case "logStorageSettings":
10831			err = unpopulate(val, &d.LogStorageSettings)
10832			delete(rawMsg, key)
10833		case "maxConcurrentConnections":
10834			err = unpopulate(val, &d.MaxConcurrentConnections)
10835			delete(rawMsg, key)
10836		case "recursive":
10837			err = unpopulate(val, &d.Recursive)
10838			delete(rawMsg, key)
10839		case "storeSettings":
10840			d.StoreSettings, err = unmarshalStoreReadSettingsClassification(val)
10841			delete(rawMsg, key)
10842		}
10843		if err != nil {
10844			return err
10845		}
10846	}
10847	return nil
10848}
10849
10850// DeleteDataFlowDebugSessionRequest - Request body structure for deleting data flow debug session.
10851type DeleteDataFlowDebugSessionRequest struct {
10852	// The data flow which contains the debug session.
10853	DataFlowName *string `json:"dataFlowName,omitempty"`
10854
10855	// The ID of data flow debug session.
10856	SessionID *string `json:"sessionId,omitempty"`
10857}
10858
10859// DelimitedTextDataset - Delimited text dataset.
10860type DelimitedTextDataset struct {
10861	Dataset
10862	// Delimited text dataset properties.
10863	TypeProperties *DelimitedTextDatasetTypeProperties `json:"typeProperties,omitempty"`
10864}
10865
10866// MarshalJSON implements the json.Marshaller interface for type DelimitedTextDataset.
10867func (d DelimitedTextDataset) MarshalJSON() ([]byte, error) {
10868	objectMap := d.Dataset.marshalInternal("DelimitedText")
10869	populate(objectMap, "typeProperties", d.TypeProperties)
10870	return json.Marshal(objectMap)
10871}
10872
10873// UnmarshalJSON implements the json.Unmarshaller interface for type DelimitedTextDataset.
10874func (d *DelimitedTextDataset) UnmarshalJSON(data []byte) error {
10875	var rawMsg map[string]json.RawMessage
10876	if err := json.Unmarshal(data, &rawMsg); err != nil {
10877		return err
10878	}
10879	for key, val := range rawMsg {
10880		var err error
10881		switch key {
10882		case "typeProperties":
10883			err = unpopulate(val, &d.TypeProperties)
10884			delete(rawMsg, key)
10885		}
10886		if err != nil {
10887			return err
10888		}
10889	}
10890	return d.Dataset.unmarshalInternal(rawMsg)
10891}
10892
10893// DelimitedTextDatasetTypeProperties - DelimitedText dataset properties.
10894type DelimitedTextDatasetTypeProperties struct {
10895	// REQUIRED; The location of the delimited text storage.
10896	Location DatasetLocationClassification `json:"location,omitempty"`
10897
10898	// The column delimiter. Type: string (or Expression with resultType string).
10899	ColumnDelimiter  interface{}       `json:"columnDelimiter,omitempty"`
10900	CompressionCodec *CompressionCodec `json:"compressionCodec,omitempty"`
10901
10902	// The data compression method used for DelimitedText.
10903	CompressionLevel interface{} `json:"compressionLevel,omitempty"`
10904
10905	// The code page name of the preferred encoding. If miss, the default value is UTF-8, unless BOM denotes another Unicode encoding. Refer to the name column
10906	// of the table in the following link to set
10907	// supported values: https://msdn.microsoft.com/library/system.text.encoding.aspx. Type: string (or Expression with resultType string).
10908	EncodingName interface{} `json:"encodingName,omitempty"`
10909
10910	// The escape character. Type: string (or Expression with resultType string).
10911	EscapeChar interface{} `json:"escapeChar,omitempty"`
10912
10913	// When used as input, treat the first row of data as headers. When used as output,write the headers into the output as the first row of data. The default
10914	// value is false. Type: boolean (or Expression
10915	// with resultType boolean).
10916	FirstRowAsHeader interface{} `json:"firstRowAsHeader,omitempty"`
10917
10918	// The null value string. Type: string (or Expression with resultType string).
10919	NullValue interface{} `json:"nullValue,omitempty"`
10920
10921	// The quote character. Type: string (or Expression with resultType string).
10922	QuoteChar interface{} `json:"quoteChar,omitempty"`
10923
10924	// The row delimiter. Type: string (or Expression with resultType string).
10925	RowDelimiter interface{} `json:"rowDelimiter,omitempty"`
10926}
10927
10928// MarshalJSON implements the json.Marshaller interface for type DelimitedTextDatasetTypeProperties.
10929func (d DelimitedTextDatasetTypeProperties) MarshalJSON() ([]byte, error) {
10930	objectMap := make(map[string]interface{})
10931	populate(objectMap, "columnDelimiter", d.ColumnDelimiter)
10932	populate(objectMap, "compressionCodec", d.CompressionCodec)
10933	populate(objectMap, "compressionLevel", d.CompressionLevel)
10934	populate(objectMap, "encodingName", d.EncodingName)
10935	populate(objectMap, "escapeChar", d.EscapeChar)
10936	populate(objectMap, "firstRowAsHeader", d.FirstRowAsHeader)
10937	populate(objectMap, "location", d.Location)
10938	populate(objectMap, "nullValue", d.NullValue)
10939	populate(objectMap, "quoteChar", d.QuoteChar)
10940	populate(objectMap, "rowDelimiter", d.RowDelimiter)
10941	return json.Marshal(objectMap)
10942}
10943
10944// UnmarshalJSON implements the json.Unmarshaller interface for type DelimitedTextDatasetTypeProperties.
10945func (d *DelimitedTextDatasetTypeProperties) UnmarshalJSON(data []byte) error {
10946	var rawMsg map[string]json.RawMessage
10947	if err := json.Unmarshal(data, &rawMsg); err != nil {
10948		return err
10949	}
10950	for key, val := range rawMsg {
10951		var err error
10952		switch key {
10953		case "columnDelimiter":
10954			err = unpopulate(val, &d.ColumnDelimiter)
10955			delete(rawMsg, key)
10956		case "compressionCodec":
10957			err = unpopulate(val, &d.CompressionCodec)
10958			delete(rawMsg, key)
10959		case "compressionLevel":
10960			err = unpopulate(val, &d.CompressionLevel)
10961			delete(rawMsg, key)
10962		case "encodingName":
10963			err = unpopulate(val, &d.EncodingName)
10964			delete(rawMsg, key)
10965		case "escapeChar":
10966			err = unpopulate(val, &d.EscapeChar)
10967			delete(rawMsg, key)
10968		case "firstRowAsHeader":
10969			err = unpopulate(val, &d.FirstRowAsHeader)
10970			delete(rawMsg, key)
10971		case "location":
10972			d.Location, err = unmarshalDatasetLocationClassification(val)
10973			delete(rawMsg, key)
10974		case "nullValue":
10975			err = unpopulate(val, &d.NullValue)
10976			delete(rawMsg, key)
10977		case "quoteChar":
10978			err = unpopulate(val, &d.QuoteChar)
10979			delete(rawMsg, key)
10980		case "rowDelimiter":
10981			err = unpopulate(val, &d.RowDelimiter)
10982			delete(rawMsg, key)
10983		}
10984		if err != nil {
10985			return err
10986		}
10987	}
10988	return nil
10989}
10990
10991// DelimitedTextReadSettings - Delimited text read settings.
10992type DelimitedTextReadSettings struct {
10993	FormatReadSettings
10994	// Compression settings.
10995	CompressionProperties CompressionReadSettingsClassification `json:"compressionProperties,omitempty"`
10996
10997	// Indicates the number of non-empty rows to skip when reading data from input files. Type: integer (or Expression with resultType integer).
10998	SkipLineCount interface{} `json:"skipLineCount,omitempty"`
10999}
11000
11001// MarshalJSON implements the json.Marshaller interface for type DelimitedTextReadSettings.
11002func (d DelimitedTextReadSettings) MarshalJSON() ([]byte, error) {
11003	objectMap := d.FormatReadSettings.marshalInternal("DelimitedTextReadSettings")
11004	populate(objectMap, "compressionProperties", d.CompressionProperties)
11005	populate(objectMap, "skipLineCount", d.SkipLineCount)
11006	return json.Marshal(objectMap)
11007}
11008
11009// UnmarshalJSON implements the json.Unmarshaller interface for type DelimitedTextReadSettings.
11010func (d *DelimitedTextReadSettings) UnmarshalJSON(data []byte) error {
11011	var rawMsg map[string]json.RawMessage
11012	if err := json.Unmarshal(data, &rawMsg); err != nil {
11013		return err
11014	}
11015	for key, val := range rawMsg {
11016		var err error
11017		switch key {
11018		case "compressionProperties":
11019			d.CompressionProperties, err = unmarshalCompressionReadSettingsClassification(val)
11020			delete(rawMsg, key)
11021		case "skipLineCount":
11022			err = unpopulate(val, &d.SkipLineCount)
11023			delete(rawMsg, key)
11024		}
11025		if err != nil {
11026			return err
11027		}
11028	}
11029	return d.FormatReadSettings.unmarshalInternal(rawMsg)
11030}
11031
11032// DelimitedTextSink - A copy activity DelimitedText sink.
11033type DelimitedTextSink struct {
11034	CopySink
11035	// DelimitedText format settings.
11036	FormatSettings *DelimitedTextWriteSettings `json:"formatSettings,omitempty"`
11037
11038	// DelimitedText store settings.
11039	StoreSettings StoreWriteSettingsClassification `json:"storeSettings,omitempty"`
11040}
11041
11042// MarshalJSON implements the json.Marshaller interface for type DelimitedTextSink.
11043func (d DelimitedTextSink) MarshalJSON() ([]byte, error) {
11044	objectMap := d.CopySink.marshalInternal("DelimitedTextSink")
11045	populate(objectMap, "formatSettings", d.FormatSettings)
11046	populate(objectMap, "storeSettings", d.StoreSettings)
11047	return json.Marshal(objectMap)
11048}
11049
11050// UnmarshalJSON implements the json.Unmarshaller interface for type DelimitedTextSink.
11051func (d *DelimitedTextSink) UnmarshalJSON(data []byte) error {
11052	var rawMsg map[string]json.RawMessage
11053	if err := json.Unmarshal(data, &rawMsg); err != nil {
11054		return err
11055	}
11056	for key, val := range rawMsg {
11057		var err error
11058		switch key {
11059		case "formatSettings":
11060			err = unpopulate(val, &d.FormatSettings)
11061			delete(rawMsg, key)
11062		case "storeSettings":
11063			d.StoreSettings, err = unmarshalStoreWriteSettingsClassification(val)
11064			delete(rawMsg, key)
11065		}
11066		if err != nil {
11067			return err
11068		}
11069	}
11070	return d.CopySink.unmarshalInternal(rawMsg)
11071}
11072
11073// DelimitedTextSource - A copy activity DelimitedText source.
11074type DelimitedTextSource struct {
11075	CopySource
11076	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
11077	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
11078
11079	// DelimitedText format settings.
11080	FormatSettings *DelimitedTextReadSettings `json:"formatSettings,omitempty"`
11081
11082	// DelimitedText store settings.
11083	StoreSettings StoreReadSettingsClassification `json:"storeSettings,omitempty"`
11084}
11085
11086// MarshalJSON implements the json.Marshaller interface for type DelimitedTextSource.
11087func (d DelimitedTextSource) MarshalJSON() ([]byte, error) {
11088	objectMap := d.CopySource.marshalInternal("DelimitedTextSource")
11089	populate(objectMap, "additionalColumns", d.AdditionalColumns)
11090	populate(objectMap, "formatSettings", d.FormatSettings)
11091	populate(objectMap, "storeSettings", d.StoreSettings)
11092	return json.Marshal(objectMap)
11093}
11094
11095// UnmarshalJSON implements the json.Unmarshaller interface for type DelimitedTextSource.
11096func (d *DelimitedTextSource) UnmarshalJSON(data []byte) error {
11097	var rawMsg map[string]json.RawMessage
11098	if err := json.Unmarshal(data, &rawMsg); err != nil {
11099		return err
11100	}
11101	for key, val := range rawMsg {
11102		var err error
11103		switch key {
11104		case "additionalColumns":
11105			err = unpopulate(val, &d.AdditionalColumns)
11106			delete(rawMsg, key)
11107		case "formatSettings":
11108			err = unpopulate(val, &d.FormatSettings)
11109			delete(rawMsg, key)
11110		case "storeSettings":
11111			d.StoreSettings, err = unmarshalStoreReadSettingsClassification(val)
11112			delete(rawMsg, key)
11113		}
11114		if err != nil {
11115			return err
11116		}
11117	}
11118	return d.CopySource.unmarshalInternal(rawMsg)
11119}
11120
11121// DelimitedTextWriteSettings - Delimited text write settings.
11122type DelimitedTextWriteSettings struct {
11123	FormatWriteSettings
11124	// REQUIRED; The file extension used to create the files. Type: string (or Expression with resultType string).
11125	FileExtension interface{} `json:"fileExtension,omitempty"`
11126
11127	// Specifies the file name pattern _. when copy from non-file based store without partitionOptions. Type: string (or Expression with resultType string).
11128	FileNamePrefix interface{} `json:"fileNamePrefix,omitempty"`
11129
11130	// Limit the written file's row count to be smaller than or equal to the specified count. Type: integer (or Expression with resultType integer).
11131	MaxRowsPerFile interface{} `json:"maxRowsPerFile,omitempty"`
11132
11133	// Indicates whether string values should always be enclosed with quotes. Type: boolean (or Expression with resultType boolean).
11134	QuoteAllText interface{} `json:"quoteAllText,omitempty"`
11135}
11136
11137// MarshalJSON implements the json.Marshaller interface for type DelimitedTextWriteSettings.
11138func (d DelimitedTextWriteSettings) MarshalJSON() ([]byte, error) {
11139	objectMap := d.FormatWriteSettings.marshalInternal("DelimitedTextWriteSettings")
11140	populate(objectMap, "fileExtension", d.FileExtension)
11141	populate(objectMap, "fileNamePrefix", d.FileNamePrefix)
11142	populate(objectMap, "maxRowsPerFile", d.MaxRowsPerFile)
11143	populate(objectMap, "quoteAllText", d.QuoteAllText)
11144	return json.Marshal(objectMap)
11145}
11146
11147// UnmarshalJSON implements the json.Unmarshaller interface for type DelimitedTextWriteSettings.
11148func (d *DelimitedTextWriteSettings) UnmarshalJSON(data []byte) error {
11149	var rawMsg map[string]json.RawMessage
11150	if err := json.Unmarshal(data, &rawMsg); err != nil {
11151		return err
11152	}
11153	for key, val := range rawMsg {
11154		var err error
11155		switch key {
11156		case "fileExtension":
11157			err = unpopulate(val, &d.FileExtension)
11158			delete(rawMsg, key)
11159		case "fileNamePrefix":
11160			err = unpopulate(val, &d.FileNamePrefix)
11161			delete(rawMsg, key)
11162		case "maxRowsPerFile":
11163			err = unpopulate(val, &d.MaxRowsPerFile)
11164			delete(rawMsg, key)
11165		case "quoteAllText":
11166			err = unpopulate(val, &d.QuoteAllText)
11167			delete(rawMsg, key)
11168		}
11169		if err != nil {
11170			return err
11171		}
11172	}
11173	return d.FormatWriteSettings.unmarshalInternal(rawMsg)
11174}
11175
11176// DependencyReferenceClassification provides polymorphic access to related types.
11177// Call the interface's GetDependencyReference() method to access the common type.
11178// Use a type switch to determine the concrete type.  The possible types are:
11179// - *DependencyReference, *SelfDependencyTumblingWindowTriggerReference, *TriggerDependencyReference, *TumblingWindowTriggerDependencyReference
11180type DependencyReferenceClassification interface {
11181	// GetDependencyReference returns the DependencyReference content of the underlying type.
11182	GetDependencyReference() *DependencyReference
11183}
11184
11185// DependencyReference - Referenced dependency.
11186type DependencyReference struct {
11187	// REQUIRED; The type of dependency reference.
11188	Type *string `json:"type,omitempty"`
11189}
11190
11191// GetDependencyReference implements the DependencyReferenceClassification interface for type DependencyReference.
11192func (d *DependencyReference) GetDependencyReference() *DependencyReference { return d }
11193
11194// UnmarshalJSON implements the json.Unmarshaller interface for type DependencyReference.
11195func (d *DependencyReference) UnmarshalJSON(data []byte) error {
11196	var rawMsg map[string]json.RawMessage
11197	if err := json.Unmarshal(data, &rawMsg); err != nil {
11198		return err
11199	}
11200	return d.unmarshalInternal(rawMsg)
11201}
11202
11203func (d DependencyReference) marshalInternal(discValue string) map[string]interface{} {
11204	objectMap := make(map[string]interface{})
11205	d.Type = &discValue
11206	objectMap["type"] = d.Type
11207	return objectMap
11208}
11209
11210func (d *DependencyReference) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
11211	for key, val := range rawMsg {
11212		var err error
11213		switch key {
11214		case "type":
11215			err = unpopulate(val, &d.Type)
11216			delete(rawMsg, key)
11217		}
11218		if err != nil {
11219			return err
11220		}
11221	}
11222	return nil
11223}
11224
11225// DistcpSettings - Distcp settings.
11226type DistcpSettings struct {
11227	// REQUIRED; Specifies the Yarn ResourceManager endpoint. Type: string (or Expression with resultType string).
11228	ResourceManagerEndpoint interface{} `json:"resourceManagerEndpoint,omitempty"`
11229
11230	// REQUIRED; Specifies an existing folder path which will be used to store temp Distcp command script. The script file is generated by ADF and will be removed
11231	// after Copy job finished. Type: string (or Expression
11232	// with resultType string).
11233	TempScriptPath interface{} `json:"tempScriptPath,omitempty"`
11234
11235	// Specifies the Distcp options. Type: string (or Expression with resultType string).
11236	DistcpOptions interface{} `json:"distcpOptions,omitempty"`
11237}
11238
11239// DocumentDbCollectionDataset - Microsoft Azure Document Database Collection dataset.
11240type DocumentDbCollectionDataset struct {
11241	Dataset
11242	// REQUIRED; DocumentDB Collection dataset properties.
11243	TypeProperties *DocumentDbCollectionDatasetTypeProperties `json:"typeProperties,omitempty"`
11244}
11245
11246// MarshalJSON implements the json.Marshaller interface for type DocumentDbCollectionDataset.
11247func (d DocumentDbCollectionDataset) MarshalJSON() ([]byte, error) {
11248	objectMap := d.Dataset.marshalInternal("DocumentDbCollection")
11249	populate(objectMap, "typeProperties", d.TypeProperties)
11250	return json.Marshal(objectMap)
11251}
11252
11253// UnmarshalJSON implements the json.Unmarshaller interface for type DocumentDbCollectionDataset.
11254func (d *DocumentDbCollectionDataset) UnmarshalJSON(data []byte) error {
11255	var rawMsg map[string]json.RawMessage
11256	if err := json.Unmarshal(data, &rawMsg); err != nil {
11257		return err
11258	}
11259	for key, val := range rawMsg {
11260		var err error
11261		switch key {
11262		case "typeProperties":
11263			err = unpopulate(val, &d.TypeProperties)
11264			delete(rawMsg, key)
11265		}
11266		if err != nil {
11267			return err
11268		}
11269	}
11270	return d.Dataset.unmarshalInternal(rawMsg)
11271}
11272
11273// DocumentDbCollectionDatasetTypeProperties - DocumentDB Collection dataset properties.
11274type DocumentDbCollectionDatasetTypeProperties struct {
11275	// REQUIRED; Document Database collection name. Type: string (or Expression with resultType string).
11276	CollectionName interface{} `json:"collectionName,omitempty"`
11277}
11278
11279// DocumentDbCollectionSink - A copy activity Document Database Collection sink.
11280type DocumentDbCollectionSink struct {
11281	CopySink
11282	// Nested properties separator. Default is . (dot). Type: string (or Expression with resultType string).
11283	NestingSeparator interface{} `json:"nestingSeparator,omitempty"`
11284
11285	// Describes how to write data to Azure Cosmos DB. Type: string (or Expression with resultType string). Allowed values: insert and upsert.
11286	WriteBehavior interface{} `json:"writeBehavior,omitempty"`
11287}
11288
11289// MarshalJSON implements the json.Marshaller interface for type DocumentDbCollectionSink.
11290func (d DocumentDbCollectionSink) MarshalJSON() ([]byte, error) {
11291	objectMap := d.CopySink.marshalInternal("DocumentDbCollectionSink")
11292	populate(objectMap, "nestingSeparator", d.NestingSeparator)
11293	populate(objectMap, "writeBehavior", d.WriteBehavior)
11294	return json.Marshal(objectMap)
11295}
11296
11297// UnmarshalJSON implements the json.Unmarshaller interface for type DocumentDbCollectionSink.
11298func (d *DocumentDbCollectionSink) UnmarshalJSON(data []byte) error {
11299	var rawMsg map[string]json.RawMessage
11300	if err := json.Unmarshal(data, &rawMsg); err != nil {
11301		return err
11302	}
11303	for key, val := range rawMsg {
11304		var err error
11305		switch key {
11306		case "nestingSeparator":
11307			err = unpopulate(val, &d.NestingSeparator)
11308			delete(rawMsg, key)
11309		case "writeBehavior":
11310			err = unpopulate(val, &d.WriteBehavior)
11311			delete(rawMsg, key)
11312		}
11313		if err != nil {
11314			return err
11315		}
11316	}
11317	return d.CopySink.unmarshalInternal(rawMsg)
11318}
11319
11320// DocumentDbCollectionSource - A copy activity Document Database Collection source.
11321type DocumentDbCollectionSource struct {
11322	CopySource
11323	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
11324	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
11325
11326	// Nested properties separator. Type: string (or Expression with resultType string).
11327	NestingSeparator interface{} `json:"nestingSeparator,omitempty"`
11328
11329	// Documents query. Type: string (or Expression with resultType string).
11330	Query interface{} `json:"query,omitempty"`
11331
11332	// Query timeout. Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
11333	QueryTimeout interface{} `json:"queryTimeout,omitempty"`
11334}
11335
11336// MarshalJSON implements the json.Marshaller interface for type DocumentDbCollectionSource.
11337func (d DocumentDbCollectionSource) MarshalJSON() ([]byte, error) {
11338	objectMap := d.CopySource.marshalInternal("DocumentDbCollectionSource")
11339	populate(objectMap, "additionalColumns", d.AdditionalColumns)
11340	populate(objectMap, "nestingSeparator", d.NestingSeparator)
11341	populate(objectMap, "query", d.Query)
11342	populate(objectMap, "queryTimeout", d.QueryTimeout)
11343	return json.Marshal(objectMap)
11344}
11345
11346// UnmarshalJSON implements the json.Unmarshaller interface for type DocumentDbCollectionSource.
11347func (d *DocumentDbCollectionSource) UnmarshalJSON(data []byte) error {
11348	var rawMsg map[string]json.RawMessage
11349	if err := json.Unmarshal(data, &rawMsg); err != nil {
11350		return err
11351	}
11352	for key, val := range rawMsg {
11353		var err error
11354		switch key {
11355		case "additionalColumns":
11356			err = unpopulate(val, &d.AdditionalColumns)
11357			delete(rawMsg, key)
11358		case "nestingSeparator":
11359			err = unpopulate(val, &d.NestingSeparator)
11360			delete(rawMsg, key)
11361		case "query":
11362			err = unpopulate(val, &d.Query)
11363			delete(rawMsg, key)
11364		case "queryTimeout":
11365			err = unpopulate(val, &d.QueryTimeout)
11366			delete(rawMsg, key)
11367		}
11368		if err != nil {
11369			return err
11370		}
11371	}
11372	return d.CopySource.unmarshalInternal(rawMsg)
11373}
11374
11375// DrillDatasetTypeProperties - Drill Dataset Properties
11376type DrillDatasetTypeProperties struct {
11377	// The schema name of the Drill. Type: string (or Expression with resultType string).
11378	Schema interface{} `json:"schema,omitempty"`
11379
11380	// The table name of the Drill. Type: string (or Expression with resultType string).
11381	Table interface{} `json:"table,omitempty"`
11382
11383	// This property will be retired. Please consider using schema + table properties instead.
11384	TableName interface{} `json:"tableName,omitempty"`
11385}
11386
11387// DrillLinkedService - Drill server linked service.
11388type DrillLinkedService struct {
11389	LinkedService
11390	// REQUIRED; Drill server linked service properties.
11391	TypeProperties *DrillLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
11392}
11393
11394// MarshalJSON implements the json.Marshaller interface for type DrillLinkedService.
11395func (d DrillLinkedService) MarshalJSON() ([]byte, error) {
11396	objectMap := d.LinkedService.marshalInternal("Drill")
11397	populate(objectMap, "typeProperties", d.TypeProperties)
11398	return json.Marshal(objectMap)
11399}
11400
11401// UnmarshalJSON implements the json.Unmarshaller interface for type DrillLinkedService.
11402func (d *DrillLinkedService) UnmarshalJSON(data []byte) error {
11403	var rawMsg map[string]json.RawMessage
11404	if err := json.Unmarshal(data, &rawMsg); err != nil {
11405		return err
11406	}
11407	for key, val := range rawMsg {
11408		var err error
11409		switch key {
11410		case "typeProperties":
11411			err = unpopulate(val, &d.TypeProperties)
11412			delete(rawMsg, key)
11413		}
11414		if err != nil {
11415			return err
11416		}
11417	}
11418	return d.LinkedService.unmarshalInternal(rawMsg)
11419}
11420
11421// DrillLinkedServiceTypeProperties - Drill server linked service properties.
11422type DrillLinkedServiceTypeProperties struct {
11423	// An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
11424	ConnectionString interface{} `json:"connectionString,omitempty"`
11425
11426	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
11427	// with resultType string).
11428	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
11429
11430	// The Azure key vault secret reference of password in connection string.
11431	Pwd *AzureKeyVaultSecretReference `json:"pwd,omitempty"`
11432}
11433
11434// DrillSource - A copy activity Drill server source.
11435type DrillSource struct {
11436	TabularSource
11437	// A query to retrieve data from source. Type: string (or Expression with resultType string).
11438	Query interface{} `json:"query,omitempty"`
11439}
11440
11441// MarshalJSON implements the json.Marshaller interface for type DrillSource.
11442func (d DrillSource) MarshalJSON() ([]byte, error) {
11443	objectMap := d.TabularSource.marshalInternal("DrillSource")
11444	populate(objectMap, "query", d.Query)
11445	return json.Marshal(objectMap)
11446}
11447
11448// UnmarshalJSON implements the json.Unmarshaller interface for type DrillSource.
11449func (d *DrillSource) UnmarshalJSON(data []byte) error {
11450	var rawMsg map[string]json.RawMessage
11451	if err := json.Unmarshal(data, &rawMsg); err != nil {
11452		return err
11453	}
11454	for key, val := range rawMsg {
11455		var err error
11456		switch key {
11457		case "query":
11458			err = unpopulate(val, &d.Query)
11459			delete(rawMsg, key)
11460		}
11461		if err != nil {
11462			return err
11463		}
11464	}
11465	return d.TabularSource.unmarshalInternal(rawMsg)
11466}
11467
11468// DrillTableDataset - Drill server dataset.
11469type DrillTableDataset struct {
11470	Dataset
11471	// Properties specific to this dataset type.
11472	TypeProperties *DrillDatasetTypeProperties `json:"typeProperties,omitempty"`
11473}
11474
11475// MarshalJSON implements the json.Marshaller interface for type DrillTableDataset.
11476func (d DrillTableDataset) MarshalJSON() ([]byte, error) {
11477	objectMap := d.Dataset.marshalInternal("DrillTable")
11478	populate(objectMap, "typeProperties", d.TypeProperties)
11479	return json.Marshal(objectMap)
11480}
11481
11482// UnmarshalJSON implements the json.Unmarshaller interface for type DrillTableDataset.
11483func (d *DrillTableDataset) UnmarshalJSON(data []byte) error {
11484	var rawMsg map[string]json.RawMessage
11485	if err := json.Unmarshal(data, &rawMsg); err != nil {
11486		return err
11487	}
11488	for key, val := range rawMsg {
11489		var err error
11490		switch key {
11491		case "typeProperties":
11492			err = unpopulate(val, &d.TypeProperties)
11493			delete(rawMsg, key)
11494		}
11495		if err != nil {
11496			return err
11497		}
11498	}
11499	return d.Dataset.unmarshalInternal(rawMsg)
11500}
11501
11502// DynamicExecutorAllocation - Dynamic Executor Allocation Properties
11503type DynamicExecutorAllocation struct {
11504	// Indicates whether Dynamic Executor Allocation is enabled or not.
11505	Enabled *bool `json:"enabled,omitempty"`
11506}
11507
11508// DynamicsAXLinkedService - Dynamics AX linked service.
11509type DynamicsAXLinkedService struct {
11510	LinkedService
11511	// REQUIRED; Dynamics AX linked service properties.
11512	TypeProperties *DynamicsAXLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
11513}
11514
11515// MarshalJSON implements the json.Marshaller interface for type DynamicsAXLinkedService.
11516func (d DynamicsAXLinkedService) MarshalJSON() ([]byte, error) {
11517	objectMap := d.LinkedService.marshalInternal("DynamicsAX")
11518	populate(objectMap, "typeProperties", d.TypeProperties)
11519	return json.Marshal(objectMap)
11520}
11521
11522// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsAXLinkedService.
11523func (d *DynamicsAXLinkedService) UnmarshalJSON(data []byte) error {
11524	var rawMsg map[string]json.RawMessage
11525	if err := json.Unmarshal(data, &rawMsg); err != nil {
11526		return err
11527	}
11528	for key, val := range rawMsg {
11529		var err error
11530		switch key {
11531		case "typeProperties":
11532			err = unpopulate(val, &d.TypeProperties)
11533			delete(rawMsg, key)
11534		}
11535		if err != nil {
11536			return err
11537		}
11538	}
11539	return d.LinkedService.unmarshalInternal(rawMsg)
11540}
11541
11542// DynamicsAXLinkedServiceTypeProperties - Dynamics AX linked service properties.
11543type DynamicsAXLinkedServiceTypeProperties struct {
11544	// REQUIRED; Specify the resource you are requesting authorization. Type: string (or Expression with resultType string).
11545	AADResourceID interface{} `json:"aadResourceId,omitempty"`
11546
11547	// REQUIRED; Specify the application's client ID. Type: string (or Expression with resultType string).
11548	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
11549
11550	// REQUIRED; Specify the application's key. Mark this field as a SecureString to store it securely in Data Factory, or reference a secret stored in Azure
11551	// Key Vault. Type: string (or Expression with resultType
11552	// string).
11553	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
11554
11555	// REQUIRED; Specify the tenant information (domain name or tenant ID) under which your application resides. Retrieve it by hovering the mouse in the top-right
11556	// corner of the Azure portal. Type: string (or
11557	// Expression with resultType string).
11558	Tenant interface{} `json:"tenant,omitempty"`
11559
11560	// REQUIRED; The Dynamics AX (or Dynamics 365 Finance and Operations) instance OData endpoint.
11561	URL interface{} `json:"url,omitempty"`
11562
11563	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
11564	// with resultType string).
11565	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
11566}
11567
11568// MarshalJSON implements the json.Marshaller interface for type DynamicsAXLinkedServiceTypeProperties.
11569func (d DynamicsAXLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
11570	objectMap := make(map[string]interface{})
11571	populate(objectMap, "aadResourceId", d.AADResourceID)
11572	populate(objectMap, "encryptedCredential", d.EncryptedCredential)
11573	populate(objectMap, "servicePrincipalId", d.ServicePrincipalID)
11574	populate(objectMap, "servicePrincipalKey", d.ServicePrincipalKey)
11575	populate(objectMap, "tenant", d.Tenant)
11576	populate(objectMap, "url", d.URL)
11577	return json.Marshal(objectMap)
11578}
11579
11580// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsAXLinkedServiceTypeProperties.
11581func (d *DynamicsAXLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
11582	var rawMsg map[string]json.RawMessage
11583	if err := json.Unmarshal(data, &rawMsg); err != nil {
11584		return err
11585	}
11586	for key, val := range rawMsg {
11587		var err error
11588		switch key {
11589		case "aadResourceId":
11590			err = unpopulate(val, &d.AADResourceID)
11591			delete(rawMsg, key)
11592		case "encryptedCredential":
11593			err = unpopulate(val, &d.EncryptedCredential)
11594			delete(rawMsg, key)
11595		case "servicePrincipalId":
11596			err = unpopulate(val, &d.ServicePrincipalID)
11597			delete(rawMsg, key)
11598		case "servicePrincipalKey":
11599			d.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
11600			delete(rawMsg, key)
11601		case "tenant":
11602			err = unpopulate(val, &d.Tenant)
11603			delete(rawMsg, key)
11604		case "url":
11605			err = unpopulate(val, &d.URL)
11606			delete(rawMsg, key)
11607		}
11608		if err != nil {
11609			return err
11610		}
11611	}
11612	return nil
11613}
11614
11615// DynamicsAXResourceDataset - The path of the Dynamics AX OData entity.
11616type DynamicsAXResourceDataset struct {
11617	Dataset
11618	// REQUIRED; Dynamics AX OData resource dataset properties.
11619	TypeProperties *DynamicsAXResourceDatasetTypeProperties `json:"typeProperties,omitempty"`
11620}
11621
11622// MarshalJSON implements the json.Marshaller interface for type DynamicsAXResourceDataset.
11623func (d DynamicsAXResourceDataset) MarshalJSON() ([]byte, error) {
11624	objectMap := d.Dataset.marshalInternal("DynamicsAXResource")
11625	populate(objectMap, "typeProperties", d.TypeProperties)
11626	return json.Marshal(objectMap)
11627}
11628
11629// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsAXResourceDataset.
11630func (d *DynamicsAXResourceDataset) UnmarshalJSON(data []byte) error {
11631	var rawMsg map[string]json.RawMessage
11632	if err := json.Unmarshal(data, &rawMsg); err != nil {
11633		return err
11634	}
11635	for key, val := range rawMsg {
11636		var err error
11637		switch key {
11638		case "typeProperties":
11639			err = unpopulate(val, &d.TypeProperties)
11640			delete(rawMsg, key)
11641		}
11642		if err != nil {
11643			return err
11644		}
11645	}
11646	return d.Dataset.unmarshalInternal(rawMsg)
11647}
11648
11649// DynamicsAXResourceDatasetTypeProperties - Dynamics AX OData resource dataset properties.
11650type DynamicsAXResourceDatasetTypeProperties struct {
11651	// REQUIRED; The path of the Dynamics AX OData entity. Type: string (or Expression with resultType string).
11652	Path interface{} `json:"path,omitempty"`
11653}
11654
11655// DynamicsAXSource - A copy activity Dynamics AX source.
11656type DynamicsAXSource struct {
11657	TabularSource
11658	// The timeout (TimeSpan) to get an HTTP response. It is the timeout to get a response, not the timeout to read response data. Default value: 00:05:00.
11659	// Type: string (or Expression with resultType
11660	// string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
11661	HTTPRequestTimeout interface{} `json:"httpRequestTimeout,omitempty"`
11662
11663	// A query to retrieve data from source. Type: string (or Expression with resultType string).
11664	Query interface{} `json:"query,omitempty"`
11665}
11666
11667// MarshalJSON implements the json.Marshaller interface for type DynamicsAXSource.
11668func (d DynamicsAXSource) MarshalJSON() ([]byte, error) {
11669	objectMap := d.TabularSource.marshalInternal("DynamicsAXSource")
11670	populate(objectMap, "httpRequestTimeout", d.HTTPRequestTimeout)
11671	populate(objectMap, "query", d.Query)
11672	return json.Marshal(objectMap)
11673}
11674
11675// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsAXSource.
11676func (d *DynamicsAXSource) UnmarshalJSON(data []byte) error {
11677	var rawMsg map[string]json.RawMessage
11678	if err := json.Unmarshal(data, &rawMsg); err != nil {
11679		return err
11680	}
11681	for key, val := range rawMsg {
11682		var err error
11683		switch key {
11684		case "httpRequestTimeout":
11685			err = unpopulate(val, &d.HTTPRequestTimeout)
11686			delete(rawMsg, key)
11687		case "query":
11688			err = unpopulate(val, &d.Query)
11689			delete(rawMsg, key)
11690		}
11691		if err != nil {
11692			return err
11693		}
11694	}
11695	return d.TabularSource.unmarshalInternal(rawMsg)
11696}
11697
11698// DynamicsCrmEntityDataset - The Dynamics CRM entity dataset.
11699type DynamicsCrmEntityDataset struct {
11700	Dataset
11701	// Dynamics CRM entity dataset properties.
11702	TypeProperties *DynamicsCrmEntityDatasetTypeProperties `json:"typeProperties,omitempty"`
11703}
11704
11705// MarshalJSON implements the json.Marshaller interface for type DynamicsCrmEntityDataset.
11706func (d DynamicsCrmEntityDataset) MarshalJSON() ([]byte, error) {
11707	objectMap := d.Dataset.marshalInternal("DynamicsCrmEntity")
11708	populate(objectMap, "typeProperties", d.TypeProperties)
11709	return json.Marshal(objectMap)
11710}
11711
11712// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsCrmEntityDataset.
11713func (d *DynamicsCrmEntityDataset) UnmarshalJSON(data []byte) error {
11714	var rawMsg map[string]json.RawMessage
11715	if err := json.Unmarshal(data, &rawMsg); err != nil {
11716		return err
11717	}
11718	for key, val := range rawMsg {
11719		var err error
11720		switch key {
11721		case "typeProperties":
11722			err = unpopulate(val, &d.TypeProperties)
11723			delete(rawMsg, key)
11724		}
11725		if err != nil {
11726			return err
11727		}
11728	}
11729	return d.Dataset.unmarshalInternal(rawMsg)
11730}
11731
11732// DynamicsCrmEntityDatasetTypeProperties - Dynamics CRM entity dataset properties.
11733type DynamicsCrmEntityDatasetTypeProperties struct {
11734	// The logical name of the entity. Type: string (or Expression with resultType string).
11735	EntityName interface{} `json:"entityName,omitempty"`
11736}
11737
11738// DynamicsCrmLinkedService - Dynamics CRM linked service.
11739type DynamicsCrmLinkedService struct {
11740	LinkedService
11741	// REQUIRED; Dynamics CRM linked service properties.
11742	TypeProperties *DynamicsCrmLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
11743}
11744
11745// MarshalJSON implements the json.Marshaller interface for type DynamicsCrmLinkedService.
11746func (d DynamicsCrmLinkedService) MarshalJSON() ([]byte, error) {
11747	objectMap := d.LinkedService.marshalInternal("DynamicsCrm")
11748	populate(objectMap, "typeProperties", d.TypeProperties)
11749	return json.Marshal(objectMap)
11750}
11751
11752// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsCrmLinkedService.
11753func (d *DynamicsCrmLinkedService) UnmarshalJSON(data []byte) error {
11754	var rawMsg map[string]json.RawMessage
11755	if err := json.Unmarshal(data, &rawMsg); err != nil {
11756		return err
11757	}
11758	for key, val := range rawMsg {
11759		var err error
11760		switch key {
11761		case "typeProperties":
11762			err = unpopulate(val, &d.TypeProperties)
11763			delete(rawMsg, key)
11764		}
11765		if err != nil {
11766			return err
11767		}
11768	}
11769	return d.LinkedService.unmarshalInternal(rawMsg)
11770}
11771
11772// DynamicsCrmLinkedServiceTypeProperties - Dynamics CRM linked service properties.
11773type DynamicsCrmLinkedServiceTypeProperties struct {
11774	// REQUIRED; The authentication type to connect to Dynamics CRM server. 'Office365' for online scenario, 'Ifd' for on-premises with Ifd scenario, 'AADServicePrincipal'
11775	// for Server-To-Server authentication in online
11776	// scenario. Type: string (or Expression with resultType string).
11777	AuthenticationType *DynamicsAuthenticationType `json:"authenticationType,omitempty"`
11778
11779	// REQUIRED; The deployment type of the Dynamics CRM instance. 'Online' for Dynamics CRM Online and 'OnPremisesWithIfd' for Dynamics CRM on-premises with
11780	// Ifd. Type: string (or Expression with resultType string).
11781	DeploymentType *DynamicsDeploymentType `json:"deploymentType,omitempty"`
11782
11783	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
11784	// with resultType string).
11785	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
11786
11787	// The host name of the on-premises Dynamics CRM server. The property is required for on-prem and not allowed for online. Type: string (or Expression with
11788	// resultType string).
11789	HostName interface{} `json:"hostName,omitempty"`
11790
11791	// The organization name of the Dynamics CRM instance. The property is required for on-prem and required for online when there are more than one Dynamics
11792	// CRM instances associated with the user. Type:
11793	// string (or Expression with resultType string).
11794	OrganizationName interface{} `json:"organizationName,omitempty"`
11795
11796	// Password to access the Dynamics CRM instance.
11797	Password SecretBaseClassification `json:"password,omitempty"`
11798
11799	// The port of on-premises Dynamics CRM server. The property is required for on-prem and not allowed for online. Default is 443. Type: integer (or Expression
11800	// with resultType integer), minimum: 0.
11801	Port interface{} `json:"port,omitempty"`
11802
11803	// The credential of the service principal object in Azure Active Directory. If servicePrincipalCredentialType is 'ServicePrincipalKey', servicePrincipalCredential
11804	// can be SecureString or
11805	// AzureKeyVaultSecretReference. If servicePrincipalCredentialType is 'ServicePrincipalCert', servicePrincipalCredential can only be AzureKeyVaultSecretReference.
11806	ServicePrincipalCredential SecretBaseClassification `json:"servicePrincipalCredential,omitempty"`
11807
11808	// A string from ServicePrincipalCredentialEnum or an expression
11809	ServicePrincipalCredentialType interface{} `json:"servicePrincipalCredentialType,omitempty"`
11810
11811	// The client ID of the application in Azure Active Directory used for Server-To-Server authentication. Type: string (or Expression with resultType string).
11812	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
11813
11814	// The URL to the Microsoft Dynamics CRM server. The property is required for on-line and not allowed for on-prem. Type: string (or Expression with resultType
11815	// string).
11816	ServiceURI interface{} `json:"serviceUri,omitempty"`
11817
11818	// User name to access the Dynamics CRM instance. Type: string (or Expression with resultType string).
11819	Username interface{} `json:"username,omitempty"`
11820}
11821
11822// MarshalJSON implements the json.Marshaller interface for type DynamicsCrmLinkedServiceTypeProperties.
11823func (d DynamicsCrmLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
11824	objectMap := make(map[string]interface{})
11825	populate(objectMap, "authenticationType", d.AuthenticationType)
11826	populate(objectMap, "deploymentType", d.DeploymentType)
11827	populate(objectMap, "encryptedCredential", d.EncryptedCredential)
11828	populate(objectMap, "hostName", d.HostName)
11829	populate(objectMap, "organizationName", d.OrganizationName)
11830	populate(objectMap, "password", d.Password)
11831	populate(objectMap, "port", d.Port)
11832	populate(objectMap, "servicePrincipalCredential", d.ServicePrincipalCredential)
11833	populate(objectMap, "servicePrincipalCredentialType", d.ServicePrincipalCredentialType)
11834	populate(objectMap, "servicePrincipalId", d.ServicePrincipalID)
11835	populate(objectMap, "serviceUri", d.ServiceURI)
11836	populate(objectMap, "username", d.Username)
11837	return json.Marshal(objectMap)
11838}
11839
11840// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsCrmLinkedServiceTypeProperties.
11841func (d *DynamicsCrmLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
11842	var rawMsg map[string]json.RawMessage
11843	if err := json.Unmarshal(data, &rawMsg); err != nil {
11844		return err
11845	}
11846	for key, val := range rawMsg {
11847		var err error
11848		switch key {
11849		case "authenticationType":
11850			err = unpopulate(val, &d.AuthenticationType)
11851			delete(rawMsg, key)
11852		case "deploymentType":
11853			err = unpopulate(val, &d.DeploymentType)
11854			delete(rawMsg, key)
11855		case "encryptedCredential":
11856			err = unpopulate(val, &d.EncryptedCredential)
11857			delete(rawMsg, key)
11858		case "hostName":
11859			err = unpopulate(val, &d.HostName)
11860			delete(rawMsg, key)
11861		case "organizationName":
11862			err = unpopulate(val, &d.OrganizationName)
11863			delete(rawMsg, key)
11864		case "password":
11865			d.Password, err = unmarshalSecretBaseClassification(val)
11866			delete(rawMsg, key)
11867		case "port":
11868			err = unpopulate(val, &d.Port)
11869			delete(rawMsg, key)
11870		case "servicePrincipalCredential":
11871			d.ServicePrincipalCredential, err = unmarshalSecretBaseClassification(val)
11872			delete(rawMsg, key)
11873		case "servicePrincipalCredentialType":
11874			err = unpopulate(val, &d.ServicePrincipalCredentialType)
11875			delete(rawMsg, key)
11876		case "servicePrincipalId":
11877			err = unpopulate(val, &d.ServicePrincipalID)
11878			delete(rawMsg, key)
11879		case "serviceUri":
11880			err = unpopulate(val, &d.ServiceURI)
11881			delete(rawMsg, key)
11882		case "username":
11883			err = unpopulate(val, &d.Username)
11884			delete(rawMsg, key)
11885		}
11886		if err != nil {
11887			return err
11888		}
11889	}
11890	return nil
11891}
11892
11893// DynamicsCrmSink - A copy activity Dynamics CRM sink.
11894type DynamicsCrmSink struct {
11895	CopySink
11896	// REQUIRED; The write behavior for the operation.
11897	WriteBehavior *DynamicsSinkWriteBehavior `json:"writeBehavior,omitempty"`
11898
11899	// The logical name of the alternate key which will be used when upserting records. Type: string (or Expression with resultType string).
11900	AlternateKeyName interface{} `json:"alternateKeyName,omitempty"`
11901
11902	// The flag indicating whether to ignore null values from input dataset (except key fields) during write operation. Default is false. Type: boolean (or
11903	// Expression with resultType boolean).
11904	IgnoreNullValues interface{} `json:"ignoreNullValues,omitempty"`
11905}
11906
11907// MarshalJSON implements the json.Marshaller interface for type DynamicsCrmSink.
11908func (d DynamicsCrmSink) MarshalJSON() ([]byte, error) {
11909	objectMap := d.CopySink.marshalInternal("DynamicsCrmSink")
11910	populate(objectMap, "alternateKeyName", d.AlternateKeyName)
11911	populate(objectMap, "ignoreNullValues", d.IgnoreNullValues)
11912	populate(objectMap, "writeBehavior", d.WriteBehavior)
11913	return json.Marshal(objectMap)
11914}
11915
11916// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsCrmSink.
11917func (d *DynamicsCrmSink) UnmarshalJSON(data []byte) error {
11918	var rawMsg map[string]json.RawMessage
11919	if err := json.Unmarshal(data, &rawMsg); err != nil {
11920		return err
11921	}
11922	for key, val := range rawMsg {
11923		var err error
11924		switch key {
11925		case "alternateKeyName":
11926			err = unpopulate(val, &d.AlternateKeyName)
11927			delete(rawMsg, key)
11928		case "ignoreNullValues":
11929			err = unpopulate(val, &d.IgnoreNullValues)
11930			delete(rawMsg, key)
11931		case "writeBehavior":
11932			err = unpopulate(val, &d.WriteBehavior)
11933			delete(rawMsg, key)
11934		}
11935		if err != nil {
11936			return err
11937		}
11938	}
11939	return d.CopySink.unmarshalInternal(rawMsg)
11940}
11941
11942// DynamicsCrmSource - A copy activity Dynamics CRM source.
11943type DynamicsCrmSource struct {
11944	CopySource
11945	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
11946	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
11947
11948	// FetchXML is a proprietary query language that is used in Microsoft Dynamics CRM (online & on-premises). Type: string (or Expression with resultType string).
11949	Query interface{} `json:"query,omitempty"`
11950}
11951
11952// MarshalJSON implements the json.Marshaller interface for type DynamicsCrmSource.
11953func (d DynamicsCrmSource) MarshalJSON() ([]byte, error) {
11954	objectMap := d.CopySource.marshalInternal("DynamicsCrmSource")
11955	populate(objectMap, "additionalColumns", d.AdditionalColumns)
11956	populate(objectMap, "query", d.Query)
11957	return json.Marshal(objectMap)
11958}
11959
11960// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsCrmSource.
11961func (d *DynamicsCrmSource) UnmarshalJSON(data []byte) error {
11962	var rawMsg map[string]json.RawMessage
11963	if err := json.Unmarshal(data, &rawMsg); err != nil {
11964		return err
11965	}
11966	for key, val := range rawMsg {
11967		var err error
11968		switch key {
11969		case "additionalColumns":
11970			err = unpopulate(val, &d.AdditionalColumns)
11971			delete(rawMsg, key)
11972		case "query":
11973			err = unpopulate(val, &d.Query)
11974			delete(rawMsg, key)
11975		}
11976		if err != nil {
11977			return err
11978		}
11979	}
11980	return d.CopySource.unmarshalInternal(rawMsg)
11981}
11982
11983// DynamicsEntityDataset - The Dynamics entity dataset.
11984type DynamicsEntityDataset struct {
11985	Dataset
11986	// Dynamics entity dataset properties.
11987	TypeProperties *DynamicsEntityDatasetTypeProperties `json:"typeProperties,omitempty"`
11988}
11989
11990// MarshalJSON implements the json.Marshaller interface for type DynamicsEntityDataset.
11991func (d DynamicsEntityDataset) MarshalJSON() ([]byte, error) {
11992	objectMap := d.Dataset.marshalInternal("DynamicsEntity")
11993	populate(objectMap, "typeProperties", d.TypeProperties)
11994	return json.Marshal(objectMap)
11995}
11996
11997// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsEntityDataset.
11998func (d *DynamicsEntityDataset) UnmarshalJSON(data []byte) error {
11999	var rawMsg map[string]json.RawMessage
12000	if err := json.Unmarshal(data, &rawMsg); err != nil {
12001		return err
12002	}
12003	for key, val := range rawMsg {
12004		var err error
12005		switch key {
12006		case "typeProperties":
12007			err = unpopulate(val, &d.TypeProperties)
12008			delete(rawMsg, key)
12009		}
12010		if err != nil {
12011			return err
12012		}
12013	}
12014	return d.Dataset.unmarshalInternal(rawMsg)
12015}
12016
12017// DynamicsEntityDatasetTypeProperties - Dynamics entity dataset properties.
12018type DynamicsEntityDatasetTypeProperties struct {
12019	// The logical name of the entity. Type: string (or Expression with resultType string).
12020	EntityName interface{} `json:"entityName,omitempty"`
12021}
12022
12023// DynamicsLinkedService - Dynamics linked service.
12024type DynamicsLinkedService struct {
12025	LinkedService
12026	// REQUIRED; Dynamics linked service properties.
12027	TypeProperties *DynamicsLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
12028}
12029
12030// MarshalJSON implements the json.Marshaller interface for type DynamicsLinkedService.
12031func (d DynamicsLinkedService) MarshalJSON() ([]byte, error) {
12032	objectMap := d.LinkedService.marshalInternal("Dynamics")
12033	populate(objectMap, "typeProperties", d.TypeProperties)
12034	return json.Marshal(objectMap)
12035}
12036
12037// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsLinkedService.
12038func (d *DynamicsLinkedService) UnmarshalJSON(data []byte) error {
12039	var rawMsg map[string]json.RawMessage
12040	if err := json.Unmarshal(data, &rawMsg); err != nil {
12041		return err
12042	}
12043	for key, val := range rawMsg {
12044		var err error
12045		switch key {
12046		case "typeProperties":
12047			err = unpopulate(val, &d.TypeProperties)
12048			delete(rawMsg, key)
12049		}
12050		if err != nil {
12051			return err
12052		}
12053	}
12054	return d.LinkedService.unmarshalInternal(rawMsg)
12055}
12056
12057// DynamicsLinkedServiceTypeProperties - Dynamics linked service properties.
12058type DynamicsLinkedServiceTypeProperties struct {
12059	// REQUIRED; The authentication type to connect to Dynamics server. 'Office365' for online scenario, 'Ifd' for on-premises with Ifd scenario, 'AADServicePrincipal'
12060	// for Server-To-Server authentication in online
12061	// scenario. Type: string (or Expression with resultType string).
12062	AuthenticationType *DynamicsAuthenticationType `json:"authenticationType,omitempty"`
12063
12064	// REQUIRED; The deployment type of the Dynamics instance. 'Online' for Dynamics Online and 'OnPremisesWithIfd' for Dynamics on-premises with Ifd. Type:
12065	// string (or Expression with resultType string).
12066	DeploymentType *DynamicsDeploymentType `json:"deploymentType,omitempty"`
12067
12068	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
12069	// with resultType string).
12070	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
12071
12072	// The host name of the on-premises Dynamics server. The property is required for on-prem and not allowed for online. Type: string (or Expression with resultType
12073	// string).
12074	HostName interface{} `json:"hostName,omitempty"`
12075
12076	// The organization name of the Dynamics instance. The property is required for on-prem and required for online when there are more than one Dynamics instances
12077	// associated with the user. Type: string (or
12078	// Expression with resultType string).
12079	OrganizationName interface{} `json:"organizationName,omitempty"`
12080
12081	// Password to access the Dynamics instance.
12082	Password SecretBaseClassification `json:"password,omitempty"`
12083
12084	// The port of on-premises Dynamics server. The property is required for on-prem and not allowed for online. Default is 443. Type: integer (or Expression
12085	// with resultType integer), minimum: 0.
12086	Port interface{} `json:"port,omitempty"`
12087
12088	// The credential of the service principal object in Azure Active Directory. If servicePrincipalCredentialType is 'ServicePrincipalKey', servicePrincipalCredential
12089	// can be SecureString or
12090	// AzureKeyVaultSecretReference. If servicePrincipalCredentialType is 'ServicePrincipalCert', servicePrincipalCredential can only be AzureKeyVaultSecretReference.
12091	ServicePrincipalCredential SecretBaseClassification `json:"servicePrincipalCredential,omitempty"`
12092
12093	// The service principal credential type to use in Server-To-Server authentication. 'ServicePrincipalKey' for key/secret, 'ServicePrincipalCert' for certificate.
12094	// Type: string (or Expression with
12095	// resultType string).
12096	ServicePrincipalCredentialType *DynamicsServicePrincipalCredentialType `json:"servicePrincipalCredentialType,omitempty"`
12097
12098	// The client ID of the application in Azure Active Directory used for Server-To-Server authentication. Type: string (or Expression with resultType string).
12099	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
12100
12101	// The URL to the Microsoft Dynamics server. The property is required for on-line and not allowed for on-prem. Type: string (or Expression with resultType
12102	// string).
12103	ServiceURI interface{} `json:"serviceUri,omitempty"`
12104
12105	// User name to access the Dynamics instance. Type: string (or Expression with resultType string).
12106	Username interface{} `json:"username,omitempty"`
12107}
12108
12109// MarshalJSON implements the json.Marshaller interface for type DynamicsLinkedServiceTypeProperties.
12110func (d DynamicsLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
12111	objectMap := make(map[string]interface{})
12112	populate(objectMap, "authenticationType", d.AuthenticationType)
12113	populate(objectMap, "deploymentType", d.DeploymentType)
12114	populate(objectMap, "encryptedCredential", d.EncryptedCredential)
12115	populate(objectMap, "hostName", d.HostName)
12116	populate(objectMap, "organizationName", d.OrganizationName)
12117	populate(objectMap, "password", d.Password)
12118	populate(objectMap, "port", d.Port)
12119	populate(objectMap, "servicePrincipalCredential", d.ServicePrincipalCredential)
12120	populate(objectMap, "servicePrincipalCredentialType", d.ServicePrincipalCredentialType)
12121	populate(objectMap, "servicePrincipalId", d.ServicePrincipalID)
12122	populate(objectMap, "serviceUri", d.ServiceURI)
12123	populate(objectMap, "username", d.Username)
12124	return json.Marshal(objectMap)
12125}
12126
12127// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsLinkedServiceTypeProperties.
12128func (d *DynamicsLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
12129	var rawMsg map[string]json.RawMessage
12130	if err := json.Unmarshal(data, &rawMsg); err != nil {
12131		return err
12132	}
12133	for key, val := range rawMsg {
12134		var err error
12135		switch key {
12136		case "authenticationType":
12137			err = unpopulate(val, &d.AuthenticationType)
12138			delete(rawMsg, key)
12139		case "deploymentType":
12140			err = unpopulate(val, &d.DeploymentType)
12141			delete(rawMsg, key)
12142		case "encryptedCredential":
12143			err = unpopulate(val, &d.EncryptedCredential)
12144			delete(rawMsg, key)
12145		case "hostName":
12146			err = unpopulate(val, &d.HostName)
12147			delete(rawMsg, key)
12148		case "organizationName":
12149			err = unpopulate(val, &d.OrganizationName)
12150			delete(rawMsg, key)
12151		case "password":
12152			d.Password, err = unmarshalSecretBaseClassification(val)
12153			delete(rawMsg, key)
12154		case "port":
12155			err = unpopulate(val, &d.Port)
12156			delete(rawMsg, key)
12157		case "servicePrincipalCredential":
12158			d.ServicePrincipalCredential, err = unmarshalSecretBaseClassification(val)
12159			delete(rawMsg, key)
12160		case "servicePrincipalCredentialType":
12161			err = unpopulate(val, &d.ServicePrincipalCredentialType)
12162			delete(rawMsg, key)
12163		case "servicePrincipalId":
12164			err = unpopulate(val, &d.ServicePrincipalID)
12165			delete(rawMsg, key)
12166		case "serviceUri":
12167			err = unpopulate(val, &d.ServiceURI)
12168			delete(rawMsg, key)
12169		case "username":
12170			err = unpopulate(val, &d.Username)
12171			delete(rawMsg, key)
12172		}
12173		if err != nil {
12174			return err
12175		}
12176	}
12177	return nil
12178}
12179
12180// DynamicsSink - A copy activity Dynamics sink.
12181type DynamicsSink struct {
12182	CopySink
12183	// REQUIRED; The write behavior for the operation.
12184	WriteBehavior *DynamicsSinkWriteBehavior `json:"writeBehavior,omitempty"`
12185
12186	// The logical name of the alternate key which will be used when upserting records. Type: string (or Expression with resultType string).
12187	AlternateKeyName interface{} `json:"alternateKeyName,omitempty"`
12188
12189	// The flag indicating whether ignore null values from input dataset (except key fields) during write operation. Default is false. Type: boolean (or Expression
12190	// with resultType boolean).
12191	IgnoreNullValues interface{} `json:"ignoreNullValues,omitempty"`
12192}
12193
12194// MarshalJSON implements the json.Marshaller interface for type DynamicsSink.
12195func (d DynamicsSink) MarshalJSON() ([]byte, error) {
12196	objectMap := d.CopySink.marshalInternal("DynamicsSink")
12197	populate(objectMap, "alternateKeyName", d.AlternateKeyName)
12198	populate(objectMap, "ignoreNullValues", d.IgnoreNullValues)
12199	populate(objectMap, "writeBehavior", d.WriteBehavior)
12200	return json.Marshal(objectMap)
12201}
12202
12203// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsSink.
12204func (d *DynamicsSink) UnmarshalJSON(data []byte) error {
12205	var rawMsg map[string]json.RawMessage
12206	if err := json.Unmarshal(data, &rawMsg); err != nil {
12207		return err
12208	}
12209	for key, val := range rawMsg {
12210		var err error
12211		switch key {
12212		case "alternateKeyName":
12213			err = unpopulate(val, &d.AlternateKeyName)
12214			delete(rawMsg, key)
12215		case "ignoreNullValues":
12216			err = unpopulate(val, &d.IgnoreNullValues)
12217			delete(rawMsg, key)
12218		case "writeBehavior":
12219			err = unpopulate(val, &d.WriteBehavior)
12220			delete(rawMsg, key)
12221		}
12222		if err != nil {
12223			return err
12224		}
12225	}
12226	return d.CopySink.unmarshalInternal(rawMsg)
12227}
12228
12229// DynamicsSource - A copy activity Dynamics source.
12230type DynamicsSource struct {
12231	CopySource
12232	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
12233	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
12234
12235	// FetchXML is a proprietary query language that is used in Microsoft Dynamics (online & on-premises). Type: string (or Expression with resultType string).
12236	Query interface{} `json:"query,omitempty"`
12237}
12238
12239// MarshalJSON implements the json.Marshaller interface for type DynamicsSource.
12240func (d DynamicsSource) MarshalJSON() ([]byte, error) {
12241	objectMap := d.CopySource.marshalInternal("DynamicsSource")
12242	populate(objectMap, "additionalColumns", d.AdditionalColumns)
12243	populate(objectMap, "query", d.Query)
12244	return json.Marshal(objectMap)
12245}
12246
12247// UnmarshalJSON implements the json.Unmarshaller interface for type DynamicsSource.
12248func (d *DynamicsSource) UnmarshalJSON(data []byte) error {
12249	var rawMsg map[string]json.RawMessage
12250	if err := json.Unmarshal(data, &rawMsg); err != nil {
12251		return err
12252	}
12253	for key, val := range rawMsg {
12254		var err error
12255		switch key {
12256		case "additionalColumns":
12257			err = unpopulate(val, &d.AdditionalColumns)
12258			delete(rawMsg, key)
12259		case "query":
12260			err = unpopulate(val, &d.Query)
12261			delete(rawMsg, key)
12262		}
12263		if err != nil {
12264			return err
12265		}
12266	}
12267	return d.CopySource.unmarshalInternal(rawMsg)
12268}
12269
12270// EloquaLinkedService - Eloqua server linked service.
12271type EloquaLinkedService struct {
12272	LinkedService
12273	// REQUIRED; Eloqua server linked service properties.
12274	TypeProperties *EloquaLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
12275}
12276
12277// MarshalJSON implements the json.Marshaller interface for type EloquaLinkedService.
12278func (e EloquaLinkedService) MarshalJSON() ([]byte, error) {
12279	objectMap := e.LinkedService.marshalInternal("Eloqua")
12280	populate(objectMap, "typeProperties", e.TypeProperties)
12281	return json.Marshal(objectMap)
12282}
12283
12284// UnmarshalJSON implements the json.Unmarshaller interface for type EloquaLinkedService.
12285func (e *EloquaLinkedService) UnmarshalJSON(data []byte) error {
12286	var rawMsg map[string]json.RawMessage
12287	if err := json.Unmarshal(data, &rawMsg); err != nil {
12288		return err
12289	}
12290	for key, val := range rawMsg {
12291		var err error
12292		switch key {
12293		case "typeProperties":
12294			err = unpopulate(val, &e.TypeProperties)
12295			delete(rawMsg, key)
12296		}
12297		if err != nil {
12298			return err
12299		}
12300	}
12301	return e.LinkedService.unmarshalInternal(rawMsg)
12302}
12303
12304// EloquaLinkedServiceTypeProperties - Eloqua server linked service properties.
12305type EloquaLinkedServiceTypeProperties struct {
12306	// REQUIRED; The endpoint of the Eloqua server. (i.e. eloqua.example.com)
12307	Endpoint interface{} `json:"endpoint,omitempty"`
12308
12309	// REQUIRED; The site name and user name of your Eloqua account in the form: sitename/username. (i.e. Eloqua/Alice)
12310	Username interface{} `json:"username,omitempty"`
12311
12312	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
12313	// with resultType string).
12314	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
12315
12316	// The password corresponding to the user name.
12317	Password SecretBaseClassification `json:"password,omitempty"`
12318
12319	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
12320	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
12321
12322	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
12323	// is true.
12324	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
12325
12326	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
12327	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
12328}
12329
12330// MarshalJSON implements the json.Marshaller interface for type EloquaLinkedServiceTypeProperties.
12331func (e EloquaLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
12332	objectMap := make(map[string]interface{})
12333	populate(objectMap, "encryptedCredential", e.EncryptedCredential)
12334	populate(objectMap, "endpoint", e.Endpoint)
12335	populate(objectMap, "password", e.Password)
12336	populate(objectMap, "useEncryptedEndpoints", e.UseEncryptedEndpoints)
12337	populate(objectMap, "useHostVerification", e.UseHostVerification)
12338	populate(objectMap, "usePeerVerification", e.UsePeerVerification)
12339	populate(objectMap, "username", e.Username)
12340	return json.Marshal(objectMap)
12341}
12342
12343// UnmarshalJSON implements the json.Unmarshaller interface for type EloquaLinkedServiceTypeProperties.
12344func (e *EloquaLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
12345	var rawMsg map[string]json.RawMessage
12346	if err := json.Unmarshal(data, &rawMsg); err != nil {
12347		return err
12348	}
12349	for key, val := range rawMsg {
12350		var err error
12351		switch key {
12352		case "encryptedCredential":
12353			err = unpopulate(val, &e.EncryptedCredential)
12354			delete(rawMsg, key)
12355		case "endpoint":
12356			err = unpopulate(val, &e.Endpoint)
12357			delete(rawMsg, key)
12358		case "password":
12359			e.Password, err = unmarshalSecretBaseClassification(val)
12360			delete(rawMsg, key)
12361		case "useEncryptedEndpoints":
12362			err = unpopulate(val, &e.UseEncryptedEndpoints)
12363			delete(rawMsg, key)
12364		case "useHostVerification":
12365			err = unpopulate(val, &e.UseHostVerification)
12366			delete(rawMsg, key)
12367		case "usePeerVerification":
12368			err = unpopulate(val, &e.UsePeerVerification)
12369			delete(rawMsg, key)
12370		case "username":
12371			err = unpopulate(val, &e.Username)
12372			delete(rawMsg, key)
12373		}
12374		if err != nil {
12375			return err
12376		}
12377	}
12378	return nil
12379}
12380
12381// EloquaObjectDataset - Eloqua server dataset.
12382type EloquaObjectDataset struct {
12383	Dataset
12384	// Properties specific to this dataset type.
12385	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
12386}
12387
12388// MarshalJSON implements the json.Marshaller interface for type EloquaObjectDataset.
12389func (e EloquaObjectDataset) MarshalJSON() ([]byte, error) {
12390	objectMap := e.Dataset.marshalInternal("EloquaObject")
12391	populate(objectMap, "typeProperties", e.TypeProperties)
12392	return json.Marshal(objectMap)
12393}
12394
12395// UnmarshalJSON implements the json.Unmarshaller interface for type EloquaObjectDataset.
12396func (e *EloquaObjectDataset) UnmarshalJSON(data []byte) error {
12397	var rawMsg map[string]json.RawMessage
12398	if err := json.Unmarshal(data, &rawMsg); err != nil {
12399		return err
12400	}
12401	for key, val := range rawMsg {
12402		var err error
12403		switch key {
12404		case "typeProperties":
12405			err = unpopulate(val, &e.TypeProperties)
12406			delete(rawMsg, key)
12407		}
12408		if err != nil {
12409			return err
12410		}
12411	}
12412	return e.Dataset.unmarshalInternal(rawMsg)
12413}
12414
12415// EloquaSource - A copy activity Eloqua server source.
12416type EloquaSource struct {
12417	TabularSource
12418	// A query to retrieve data from source. Type: string (or Expression with resultType string).
12419	Query interface{} `json:"query,omitempty"`
12420}
12421
12422// MarshalJSON implements the json.Marshaller interface for type EloquaSource.
12423func (e EloquaSource) MarshalJSON() ([]byte, error) {
12424	objectMap := e.TabularSource.marshalInternal("EloquaSource")
12425	populate(objectMap, "query", e.Query)
12426	return json.Marshal(objectMap)
12427}
12428
12429// UnmarshalJSON implements the json.Unmarshaller interface for type EloquaSource.
12430func (e *EloquaSource) UnmarshalJSON(data []byte) error {
12431	var rawMsg map[string]json.RawMessage
12432	if err := json.Unmarshal(data, &rawMsg); err != nil {
12433		return err
12434	}
12435	for key, val := range rawMsg {
12436		var err error
12437		switch key {
12438		case "query":
12439			err = unpopulate(val, &e.Query)
12440			delete(rawMsg, key)
12441		}
12442		if err != nil {
12443			return err
12444		}
12445	}
12446	return e.TabularSource.unmarshalInternal(rawMsg)
12447}
12448
12449// EncryptionDetails - Details of the encryption associated with the workspace
12450type EncryptionDetails struct {
12451	// Customer Managed Key Details
12452	Cmk *CustomerManagedKeyDetails `json:"cmk,omitempty"`
12453
12454	// READ-ONLY; Double Encryption enabled
12455	DoubleEncryptionEnabled *bool `json:"doubleEncryptionEnabled,omitempty" azure:"ro"`
12456}
12457
12458// EntityReference - The entity reference.
12459type EntityReference struct {
12460	// The name of this referenced entity.
12461	ReferenceName *string `json:"referenceName,omitempty"`
12462
12463	// The type of this referenced entity.
12464	Type *IntegrationRuntimeEntityReferenceType `json:"type,omitempty"`
12465}
12466
12467// ErrorAdditionalInfo - The resource management error additional info.
12468type ErrorAdditionalInfo struct {
12469	// READ-ONLY; The additional info.
12470	Info interface{} `json:"info,omitempty" azure:"ro"`
12471
12472	// READ-ONLY; The additional info type.
12473	Type *string `json:"type,omitempty" azure:"ro"`
12474}
12475
12476// ErrorContract - Contains details when the response code indicates an error.
12477// Implements the error and azcore.HTTPResponse interfaces.
12478type ErrorContract struct {
12479	raw string
12480	// The error details.
12481	InnerError *ErrorResponse `json:"error,omitempty"`
12482}
12483
12484// Error implements the error interface for type ErrorContract.
12485// The contents of the error text are not contractual and subject to change.
12486func (e ErrorContract) Error() string {
12487	return e.raw
12488}
12489
12490// ErrorResponse - Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData
12491// error response format.)
12492type ErrorResponse struct {
12493	// READ-ONLY; The error additional info.
12494	AdditionalInfo []*ErrorAdditionalInfo `json:"additionalInfo,omitempty" azure:"ro"`
12495
12496	// READ-ONLY; The error code.
12497	Code *string `json:"code,omitempty" azure:"ro"`
12498
12499	// READ-ONLY; The error details.
12500	Details []*ErrorResponse `json:"details,omitempty" azure:"ro"`
12501
12502	// READ-ONLY; The error message.
12503	Message *string `json:"message,omitempty" azure:"ro"`
12504
12505	// READ-ONLY; The error target.
12506	Target *string `json:"target,omitempty" azure:"ro"`
12507}
12508
12509// MarshalJSON implements the json.Marshaller interface for type ErrorResponse.
12510func (e ErrorResponse) MarshalJSON() ([]byte, error) {
12511	objectMap := make(map[string]interface{})
12512	populate(objectMap, "additionalInfo", e.AdditionalInfo)
12513	populate(objectMap, "code", e.Code)
12514	populate(objectMap, "details", e.Details)
12515	populate(objectMap, "message", e.Message)
12516	populate(objectMap, "target", e.Target)
12517	return json.Marshal(objectMap)
12518}
12519
12520// EvaluateDataFlowExpressionRequest - Request body structure for data flow expression preview.
12521type EvaluateDataFlowExpressionRequest struct {
12522	// The data flow which contains the debug session.
12523	DataFlowName *string `json:"dataFlowName,omitempty"`
12524
12525	// The expression for preview.
12526	Expression *string `json:"expression,omitempty"`
12527
12528	// The row limit for preview request.
12529	RowLimits *int32 `json:"rowLimits,omitempty"`
12530
12531	// The ID of data flow debug session.
12532	SessionID *string `json:"sessionId,omitempty"`
12533
12534	// The output stream name.
12535	StreamName *string `json:"streamName,omitempty"`
12536}
12537
12538// ExcelDataset - Excel dataset.
12539type ExcelDataset struct {
12540	Dataset
12541	// Excel dataset properties.
12542	TypeProperties *ExcelDatasetTypeProperties `json:"typeProperties,omitempty"`
12543}
12544
12545// MarshalJSON implements the json.Marshaller interface for type ExcelDataset.
12546func (e ExcelDataset) MarshalJSON() ([]byte, error) {
12547	objectMap := e.Dataset.marshalInternal("Excel")
12548	populate(objectMap, "typeProperties", e.TypeProperties)
12549	return json.Marshal(objectMap)
12550}
12551
12552// UnmarshalJSON implements the json.Unmarshaller interface for type ExcelDataset.
12553func (e *ExcelDataset) UnmarshalJSON(data []byte) error {
12554	var rawMsg map[string]json.RawMessage
12555	if err := json.Unmarshal(data, &rawMsg); err != nil {
12556		return err
12557	}
12558	for key, val := range rawMsg {
12559		var err error
12560		switch key {
12561		case "typeProperties":
12562			err = unpopulate(val, &e.TypeProperties)
12563			delete(rawMsg, key)
12564		}
12565		if err != nil {
12566			return err
12567		}
12568	}
12569	return e.Dataset.unmarshalInternal(rawMsg)
12570}
12571
12572// ExcelDatasetTypeProperties - Excel dataset properties.
12573type ExcelDatasetTypeProperties struct {
12574	// REQUIRED; The location of the excel storage.
12575	Location DatasetLocationClassification `json:"location,omitempty"`
12576
12577	// REQUIRED; The sheet of excel file. Type: string (or Expression with resultType string).
12578	SheetName interface{} `json:"sheetName,omitempty"`
12579
12580	// The data compression method used for the json dataset.
12581	Compression DatasetCompressionClassification `json:"compression,omitempty"`
12582
12583	// When used as input, treat the first row of data as headers. When used as output,write the headers into the output as the first row of data. The default
12584	// value is false. Type: boolean (or Expression
12585	// with resultType boolean).
12586	FirstRowAsHeader interface{} `json:"firstRowAsHeader,omitempty"`
12587
12588	// The null value string. Type: string (or Expression with resultType string).
12589	NullValue interface{} `json:"nullValue,omitempty"`
12590
12591	// The partial data of one sheet. Type: string (or Expression with resultType string).
12592	Range interface{} `json:"range,omitempty"`
12593}
12594
12595// MarshalJSON implements the json.Marshaller interface for type ExcelDatasetTypeProperties.
12596func (e ExcelDatasetTypeProperties) MarshalJSON() ([]byte, error) {
12597	objectMap := make(map[string]interface{})
12598	populate(objectMap, "compression", e.Compression)
12599	populate(objectMap, "firstRowAsHeader", e.FirstRowAsHeader)
12600	populate(objectMap, "location", e.Location)
12601	populate(objectMap, "nullValue", e.NullValue)
12602	populate(objectMap, "range", e.Range)
12603	populate(objectMap, "sheetName", e.SheetName)
12604	return json.Marshal(objectMap)
12605}
12606
12607// UnmarshalJSON implements the json.Unmarshaller interface for type ExcelDatasetTypeProperties.
12608func (e *ExcelDatasetTypeProperties) UnmarshalJSON(data []byte) error {
12609	var rawMsg map[string]json.RawMessage
12610	if err := json.Unmarshal(data, &rawMsg); err != nil {
12611		return err
12612	}
12613	for key, val := range rawMsg {
12614		var err error
12615		switch key {
12616		case "compression":
12617			e.Compression, err = unmarshalDatasetCompressionClassification(val)
12618			delete(rawMsg, key)
12619		case "firstRowAsHeader":
12620			err = unpopulate(val, &e.FirstRowAsHeader)
12621			delete(rawMsg, key)
12622		case "location":
12623			e.Location, err = unmarshalDatasetLocationClassification(val)
12624			delete(rawMsg, key)
12625		case "nullValue":
12626			err = unpopulate(val, &e.NullValue)
12627			delete(rawMsg, key)
12628		case "range":
12629			err = unpopulate(val, &e.Range)
12630			delete(rawMsg, key)
12631		case "sheetName":
12632			err = unpopulate(val, &e.SheetName)
12633			delete(rawMsg, key)
12634		}
12635		if err != nil {
12636			return err
12637		}
12638	}
12639	return nil
12640}
12641
12642// ExcelSource - A copy activity excel source.
12643type ExcelSource struct {
12644	CopySource
12645	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
12646	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
12647
12648	// Excel store settings.
12649	StoreSettings StoreReadSettingsClassification `json:"storeSettings,omitempty"`
12650}
12651
12652// MarshalJSON implements the json.Marshaller interface for type ExcelSource.
12653func (e ExcelSource) MarshalJSON() ([]byte, error) {
12654	objectMap := e.CopySource.marshalInternal("ExcelSource")
12655	populate(objectMap, "additionalColumns", e.AdditionalColumns)
12656	populate(objectMap, "storeSettings", e.StoreSettings)
12657	return json.Marshal(objectMap)
12658}
12659
12660// UnmarshalJSON implements the json.Unmarshaller interface for type ExcelSource.
12661func (e *ExcelSource) UnmarshalJSON(data []byte) error {
12662	var rawMsg map[string]json.RawMessage
12663	if err := json.Unmarshal(data, &rawMsg); err != nil {
12664		return err
12665	}
12666	for key, val := range rawMsg {
12667		var err error
12668		switch key {
12669		case "additionalColumns":
12670			err = unpopulate(val, &e.AdditionalColumns)
12671			delete(rawMsg, key)
12672		case "storeSettings":
12673			e.StoreSettings, err = unmarshalStoreReadSettingsClassification(val)
12674			delete(rawMsg, key)
12675		}
12676		if err != nil {
12677			return err
12678		}
12679	}
12680	return e.CopySource.unmarshalInternal(rawMsg)
12681}
12682
12683// ExecuteDataFlowActivity - Execute data flow activity.
12684type ExecuteDataFlowActivity struct {
12685	ExecutionActivity
12686	// REQUIRED; Execute data flow activity properties.
12687	TypeProperties *ExecuteDataFlowActivityTypeProperties `json:"typeProperties,omitempty"`
12688}
12689
12690// MarshalJSON implements the json.Marshaller interface for type ExecuteDataFlowActivity.
12691func (e ExecuteDataFlowActivity) MarshalJSON() ([]byte, error) {
12692	objectMap := e.ExecutionActivity.marshalInternal("ExecuteDataFlow")
12693	populate(objectMap, "typeProperties", e.TypeProperties)
12694	return json.Marshal(objectMap)
12695}
12696
12697// UnmarshalJSON implements the json.Unmarshaller interface for type ExecuteDataFlowActivity.
12698func (e *ExecuteDataFlowActivity) UnmarshalJSON(data []byte) error {
12699	var rawMsg map[string]json.RawMessage
12700	if err := json.Unmarshal(data, &rawMsg); err != nil {
12701		return err
12702	}
12703	for key, val := range rawMsg {
12704		var err error
12705		switch key {
12706		case "typeProperties":
12707			err = unpopulate(val, &e.TypeProperties)
12708			delete(rawMsg, key)
12709		}
12710		if err != nil {
12711			return err
12712		}
12713	}
12714	return e.ExecutionActivity.unmarshalInternal(rawMsg)
12715}
12716
12717// ExecuteDataFlowActivityTypeProperties - Execute data flow activity properties.
12718type ExecuteDataFlowActivityTypeProperties struct {
12719	// REQUIRED; Data flow reference.
12720	Dataflow *DataFlowReference `json:"dataflow,omitempty"`
12721
12722	// Compute properties for data flow activity.
12723	Compute *ExecuteDataFlowActivityTypePropertiesCompute `json:"compute,omitempty"`
12724
12725	// Continue on error setting used for data flow execution. Enables processing to continue if a sink fails. Type: boolean (or Expression with resultType
12726	// boolean)
12727	ContinueOnError interface{} `json:"continueOnError,omitempty"`
12728
12729	// The integration runtime reference.
12730	IntegrationRuntime *IntegrationRuntimeReference `json:"integrationRuntime,omitempty"`
12731
12732	// Concurrent run setting used for data flow execution. Allows sinks with the same save order to be processed concurrently. Type: boolean (or Expression
12733	// with resultType boolean)
12734	RunConcurrently interface{} `json:"runConcurrently,omitempty"`
12735
12736	// Staging info for execute data flow activity.
12737	Staging *DataFlowStagingInfo `json:"staging,omitempty"`
12738
12739	// Trace level setting used for data flow monitoring output. Supported values are: 'coarse', 'fine', and 'none'. Type: string (or Expression with resultType
12740	// string)
12741	TraceLevel interface{} `json:"traceLevel,omitempty"`
12742}
12743
12744// ExecuteDataFlowActivityTypePropertiesCompute - Compute properties for data flow activity.
12745type ExecuteDataFlowActivityTypePropertiesCompute struct {
12746	// Compute type of the cluster which will execute data flow job.
12747	ComputeType *DataFlowComputeType `json:"computeType,omitempty"`
12748
12749	// Core count of the cluster which will execute data flow job. Supported values are: 8, 16, 32, 48, 80, 144 and 272.
12750	CoreCount *int32 `json:"coreCount,omitempty"`
12751}
12752
12753// ExecutePipelineActivity - Execute pipeline activity.
12754type ExecutePipelineActivity struct {
12755	ControlActivity
12756	// REQUIRED; Execute pipeline activity properties.
12757	TypeProperties *ExecutePipelineActivityTypeProperties `json:"typeProperties,omitempty"`
12758}
12759
12760// MarshalJSON implements the json.Marshaller interface for type ExecutePipelineActivity.
12761func (e ExecutePipelineActivity) MarshalJSON() ([]byte, error) {
12762	objectMap := e.ControlActivity.marshalInternal("ExecutePipeline")
12763	populate(objectMap, "typeProperties", e.TypeProperties)
12764	return json.Marshal(objectMap)
12765}
12766
12767// UnmarshalJSON implements the json.Unmarshaller interface for type ExecutePipelineActivity.
12768func (e *ExecutePipelineActivity) UnmarshalJSON(data []byte) error {
12769	var rawMsg map[string]json.RawMessage
12770	if err := json.Unmarshal(data, &rawMsg); err != nil {
12771		return err
12772	}
12773	for key, val := range rawMsg {
12774		var err error
12775		switch key {
12776		case "typeProperties":
12777			err = unpopulate(val, &e.TypeProperties)
12778			delete(rawMsg, key)
12779		}
12780		if err != nil {
12781			return err
12782		}
12783	}
12784	return e.ControlActivity.unmarshalInternal(rawMsg)
12785}
12786
12787// ExecutePipelineActivityTypeProperties - Execute pipeline activity properties.
12788type ExecutePipelineActivityTypeProperties struct {
12789	// REQUIRED; Pipeline reference.
12790	Pipeline *PipelineReference `json:"pipeline,omitempty"`
12791
12792	// Pipeline parameters.
12793	Parameters map[string]interface{} `json:"parameters,omitempty"`
12794
12795	// Defines whether activity execution will wait for the dependent pipeline execution to finish. Default is false.
12796	WaitOnCompletion *bool `json:"waitOnCompletion,omitempty"`
12797}
12798
12799// MarshalJSON implements the json.Marshaller interface for type ExecutePipelineActivityTypeProperties.
12800func (e ExecutePipelineActivityTypeProperties) MarshalJSON() ([]byte, error) {
12801	objectMap := make(map[string]interface{})
12802	populate(objectMap, "parameters", e.Parameters)
12803	populate(objectMap, "pipeline", e.Pipeline)
12804	populate(objectMap, "waitOnCompletion", e.WaitOnCompletion)
12805	return json.Marshal(objectMap)
12806}
12807
12808// ExecuteSSISPackageActivity - Execute SSIS package activity.
12809type ExecuteSSISPackageActivity struct {
12810	ExecutionActivity
12811	// REQUIRED; Execute SSIS package activity properties.
12812	TypeProperties *ExecuteSSISPackageActivityTypeProperties `json:"typeProperties,omitempty"`
12813}
12814
12815// MarshalJSON implements the json.Marshaller interface for type ExecuteSSISPackageActivity.
12816func (e ExecuteSSISPackageActivity) MarshalJSON() ([]byte, error) {
12817	objectMap := e.ExecutionActivity.marshalInternal("ExecuteSSISPackage")
12818	populate(objectMap, "typeProperties", e.TypeProperties)
12819	return json.Marshal(objectMap)
12820}
12821
12822// UnmarshalJSON implements the json.Unmarshaller interface for type ExecuteSSISPackageActivity.
12823func (e *ExecuteSSISPackageActivity) UnmarshalJSON(data []byte) error {
12824	var rawMsg map[string]json.RawMessage
12825	if err := json.Unmarshal(data, &rawMsg); err != nil {
12826		return err
12827	}
12828	for key, val := range rawMsg {
12829		var err error
12830		switch key {
12831		case "typeProperties":
12832			err = unpopulate(val, &e.TypeProperties)
12833			delete(rawMsg, key)
12834		}
12835		if err != nil {
12836			return err
12837		}
12838	}
12839	return e.ExecutionActivity.unmarshalInternal(rawMsg)
12840}
12841
12842// ExecuteSSISPackageActivityTypeProperties - Execute SSIS package activity properties.
12843type ExecuteSSISPackageActivityTypeProperties struct {
12844	// REQUIRED; The integration runtime reference.
12845	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
12846
12847	// REQUIRED; SSIS package location.
12848	PackageLocation *SSISPackageLocation `json:"packageLocation,omitempty"`
12849
12850	// The environment path to execute the SSIS package. Type: string (or Expression with resultType string).
12851	EnvironmentPath interface{} `json:"environmentPath,omitempty"`
12852
12853	// The package execution credential.
12854	ExecutionCredential *SSISExecutionCredential `json:"executionCredential,omitempty"`
12855
12856	// SSIS package execution log location.
12857	LogLocation *SSISLogLocation `json:"logLocation,omitempty"`
12858
12859	// The logging level of SSIS package execution. Type: string (or Expression with resultType string).
12860	LoggingLevel interface{} `json:"loggingLevel,omitempty"`
12861
12862	// The package level connection managers to execute the SSIS package.
12863	PackageConnectionManagers map[string]map[string]*SSISExecutionParameter `json:"packageConnectionManagers,omitempty"`
12864
12865	// The package level parameters to execute the SSIS package.
12866	PackageParameters map[string]*SSISExecutionParameter `json:"packageParameters,omitempty"`
12867
12868	// The project level connection managers to execute the SSIS package.
12869	ProjectConnectionManagers map[string]map[string]*SSISExecutionParameter `json:"projectConnectionManagers,omitempty"`
12870
12871	// The project level parameters to execute the SSIS package.
12872	ProjectParameters map[string]*SSISExecutionParameter `json:"projectParameters,omitempty"`
12873
12874	// The property overrides to execute the SSIS package.
12875	PropertyOverrides map[string]*SSISPropertyOverride `json:"propertyOverrides,omitempty"`
12876
12877	// Specifies the runtime to execute SSIS package. The value should be "x86" or "x64". Type: string (or Expression with resultType string).
12878	Runtime interface{} `json:"runtime,omitempty"`
12879}
12880
12881// MarshalJSON implements the json.Marshaller interface for type ExecuteSSISPackageActivityTypeProperties.
12882func (e ExecuteSSISPackageActivityTypeProperties) MarshalJSON() ([]byte, error) {
12883	objectMap := make(map[string]interface{})
12884	populate(objectMap, "connectVia", e.ConnectVia)
12885	populate(objectMap, "environmentPath", e.EnvironmentPath)
12886	populate(objectMap, "executionCredential", e.ExecutionCredential)
12887	populate(objectMap, "logLocation", e.LogLocation)
12888	populate(objectMap, "loggingLevel", e.LoggingLevel)
12889	populate(objectMap, "packageConnectionManagers", e.PackageConnectionManagers)
12890	populate(objectMap, "packageLocation", e.PackageLocation)
12891	populate(objectMap, "packageParameters", e.PackageParameters)
12892	populate(objectMap, "projectConnectionManagers", e.ProjectConnectionManagers)
12893	populate(objectMap, "projectParameters", e.ProjectParameters)
12894	populate(objectMap, "propertyOverrides", e.PropertyOverrides)
12895	populate(objectMap, "runtime", e.Runtime)
12896	return json.Marshal(objectMap)
12897}
12898
12899// ExecutionActivityClassification provides polymorphic access to related types.
12900// Call the interface's GetExecutionActivity() method to access the common type.
12901// Use a type switch to determine the concrete type.  The possible types are:
12902// - *AzureDataExplorerCommandActivity, *AzureFunctionActivity, *AzureMLBatchExecutionActivity, *AzureMLExecutePipelineActivity,
12903// - *AzureMLUpdateResourceActivity, *CopyActivity, *CustomActivity, *DataLakeAnalyticsUSQLActivity, *DatabricksNotebookActivity,
12904// - *DatabricksSparkJarActivity, *DatabricksSparkPythonActivity, *DeleteActivity, *ExecuteDataFlowActivity, *ExecuteSSISPackageActivity,
12905// - *ExecutionActivity, *GetMetadataActivity, *HDInsightHiveActivity, *HDInsightMapReduceActivity, *HDInsightPigActivity,
12906// - *HDInsightSparkActivity, *HDInsightStreamingActivity, *LookupActivity, *SqlServerStoredProcedureActivity, *SynapseNotebookActivity,
12907// - *SynapseSparkJobDefinitionActivity, *WebActivity
12908type ExecutionActivityClassification interface {
12909	ActivityClassification
12910	// GetExecutionActivity returns the ExecutionActivity content of the underlying type.
12911	GetExecutionActivity() *ExecutionActivity
12912}
12913
12914// ExecutionActivity - Base class for all execution activities.
12915type ExecutionActivity struct {
12916	Activity
12917	// Linked service reference.
12918	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
12919
12920	// Activity policy.
12921	Policy *ActivityPolicy `json:"policy,omitempty"`
12922}
12923
12924// GetExecutionActivity implements the ExecutionActivityClassification interface for type ExecutionActivity.
12925func (e *ExecutionActivity) GetExecutionActivity() *ExecutionActivity { return e }
12926
12927// MarshalJSON implements the json.Marshaller interface for type ExecutionActivity.
12928func (e ExecutionActivity) MarshalJSON() ([]byte, error) {
12929	objectMap := e.marshalInternal("Execution")
12930	return json.Marshal(objectMap)
12931}
12932
12933// UnmarshalJSON implements the json.Unmarshaller interface for type ExecutionActivity.
12934func (e *ExecutionActivity) UnmarshalJSON(data []byte) error {
12935	var rawMsg map[string]json.RawMessage
12936	if err := json.Unmarshal(data, &rawMsg); err != nil {
12937		return err
12938	}
12939	return e.unmarshalInternal(rawMsg)
12940}
12941
12942func (e ExecutionActivity) marshalInternal(discValue string) map[string]interface{} {
12943	objectMap := e.Activity.marshalInternal(discValue)
12944	populate(objectMap, "linkedServiceName", e.LinkedServiceName)
12945	populate(objectMap, "policy", e.Policy)
12946	return objectMap
12947}
12948
12949func (e *ExecutionActivity) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
12950	for key, val := range rawMsg {
12951		var err error
12952		switch key {
12953		case "linkedServiceName":
12954			err = unpopulate(val, &e.LinkedServiceName)
12955			delete(rawMsg, key)
12956		case "policy":
12957			err = unpopulate(val, &e.Policy)
12958			delete(rawMsg, key)
12959		}
12960		if err != nil {
12961			return err
12962		}
12963	}
12964	return e.Activity.unmarshalInternal(rawMsg)
12965}
12966
12967// ExportSettingsClassification provides polymorphic access to related types.
12968// Call the interface's GetExportSettings() method to access the common type.
12969// Use a type switch to determine the concrete type.  The possible types are:
12970// - *AzureDatabricksDeltaLakeExportCommand, *ExportSettings, *SnowflakeExportCopyCommand
12971type ExportSettingsClassification interface {
12972	// GetExportSettings returns the ExportSettings content of the underlying type.
12973	GetExportSettings() *ExportSettings
12974}
12975
12976// ExportSettings - Export command settings.
12977type ExportSettings struct {
12978	// REQUIRED; The export setting type.
12979	Type *string `json:"type,omitempty"`
12980
12981	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
12982	AdditionalProperties map[string]interface{}
12983}
12984
12985// GetExportSettings implements the ExportSettingsClassification interface for type ExportSettings.
12986func (e *ExportSettings) GetExportSettings() *ExportSettings { return e }
12987
12988// UnmarshalJSON implements the json.Unmarshaller interface for type ExportSettings.
12989func (e *ExportSettings) UnmarshalJSON(data []byte) error {
12990	var rawMsg map[string]json.RawMessage
12991	if err := json.Unmarshal(data, &rawMsg); err != nil {
12992		return err
12993	}
12994	return e.unmarshalInternal(rawMsg)
12995}
12996
12997func (e ExportSettings) marshalInternal(discValue string) map[string]interface{} {
12998	objectMap := make(map[string]interface{})
12999	e.Type = &discValue
13000	objectMap["type"] = e.Type
13001	if e.AdditionalProperties != nil {
13002		for key, val := range e.AdditionalProperties {
13003			objectMap[key] = val
13004		}
13005	}
13006	return objectMap
13007}
13008
13009func (e *ExportSettings) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
13010	for key, val := range rawMsg {
13011		var err error
13012		switch key {
13013		case "type":
13014			err = unpopulate(val, &e.Type)
13015			delete(rawMsg, key)
13016		default:
13017			if e.AdditionalProperties == nil {
13018				e.AdditionalProperties = map[string]interface{}{}
13019			}
13020			if val != nil {
13021				var aux interface{}
13022				err = json.Unmarshal(val, &aux)
13023				e.AdditionalProperties[key] = aux
13024			}
13025			delete(rawMsg, key)
13026		}
13027		if err != nil {
13028			return err
13029		}
13030	}
13031	return nil
13032}
13033
13034// ExposureControlRequest - The exposure control request.
13035type ExposureControlRequest struct {
13036	// The feature name.
13037	FeatureName *string `json:"featureName,omitempty"`
13038
13039	// The feature type.
13040	FeatureType *string `json:"featureType,omitempty"`
13041}
13042
13043// ExposureControlResponse - The exposure control response.
13044type ExposureControlResponse struct {
13045	// READ-ONLY; The feature name.
13046	FeatureName *string `json:"featureName,omitempty" azure:"ro"`
13047
13048	// READ-ONLY; The feature value.
13049	Value *string `json:"value,omitempty" azure:"ro"`
13050}
13051
13052// Expression - Azure Synapse expression definition.
13053type Expression struct {
13054	// REQUIRED; Expression type.
13055	Type *ExpressionType `json:"type,omitempty"`
13056
13057	// REQUIRED; Expression value.
13058	Value *string `json:"value,omitempty"`
13059}
13060
13061// FileServerLinkedService - File system linked service.
13062type FileServerLinkedService struct {
13063	LinkedService
13064	// REQUIRED; File system linked service properties.
13065	TypeProperties *FileServerLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
13066}
13067
13068// MarshalJSON implements the json.Marshaller interface for type FileServerLinkedService.
13069func (f FileServerLinkedService) MarshalJSON() ([]byte, error) {
13070	objectMap := f.LinkedService.marshalInternal("FileServer")
13071	populate(objectMap, "typeProperties", f.TypeProperties)
13072	return json.Marshal(objectMap)
13073}
13074
13075// UnmarshalJSON implements the json.Unmarshaller interface for type FileServerLinkedService.
13076func (f *FileServerLinkedService) UnmarshalJSON(data []byte) error {
13077	var rawMsg map[string]json.RawMessage
13078	if err := json.Unmarshal(data, &rawMsg); err != nil {
13079		return err
13080	}
13081	for key, val := range rawMsg {
13082		var err error
13083		switch key {
13084		case "typeProperties":
13085			err = unpopulate(val, &f.TypeProperties)
13086			delete(rawMsg, key)
13087		}
13088		if err != nil {
13089			return err
13090		}
13091	}
13092	return f.LinkedService.unmarshalInternal(rawMsg)
13093}
13094
13095// FileServerLinkedServiceTypeProperties - File system linked service properties.
13096type FileServerLinkedServiceTypeProperties struct {
13097	// REQUIRED; Host name of the server. Type: string (or Expression with resultType string).
13098	Host interface{} `json:"host,omitempty"`
13099
13100	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
13101	// with resultType string).
13102	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
13103
13104	// Password to logon the server.
13105	Password SecretBaseClassification `json:"password,omitempty"`
13106
13107	// User ID to logon the server. Type: string (or Expression with resultType string).
13108	UserID interface{} `json:"userId,omitempty"`
13109}
13110
13111// MarshalJSON implements the json.Marshaller interface for type FileServerLinkedServiceTypeProperties.
13112func (f FileServerLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
13113	objectMap := make(map[string]interface{})
13114	populate(objectMap, "encryptedCredential", f.EncryptedCredential)
13115	populate(objectMap, "host", f.Host)
13116	populate(objectMap, "password", f.Password)
13117	populate(objectMap, "userId", f.UserID)
13118	return json.Marshal(objectMap)
13119}
13120
13121// UnmarshalJSON implements the json.Unmarshaller interface for type FileServerLinkedServiceTypeProperties.
13122func (f *FileServerLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
13123	var rawMsg map[string]json.RawMessage
13124	if err := json.Unmarshal(data, &rawMsg); err != nil {
13125		return err
13126	}
13127	for key, val := range rawMsg {
13128		var err error
13129		switch key {
13130		case "encryptedCredential":
13131			err = unpopulate(val, &f.EncryptedCredential)
13132			delete(rawMsg, key)
13133		case "host":
13134			err = unpopulate(val, &f.Host)
13135			delete(rawMsg, key)
13136		case "password":
13137			f.Password, err = unmarshalSecretBaseClassification(val)
13138			delete(rawMsg, key)
13139		case "userId":
13140			err = unpopulate(val, &f.UserID)
13141			delete(rawMsg, key)
13142		}
13143		if err != nil {
13144			return err
13145		}
13146	}
13147	return nil
13148}
13149
13150// FileServerLocation - The location of file server dataset.
13151type FileServerLocation struct {
13152	DatasetLocation
13153}
13154
13155// MarshalJSON implements the json.Marshaller interface for type FileServerLocation.
13156func (f FileServerLocation) MarshalJSON() ([]byte, error) {
13157	objectMap := f.DatasetLocation.marshalInternal("FileServerLocation")
13158	return json.Marshal(objectMap)
13159}
13160
13161// FileServerReadSettings - File server read settings.
13162type FileServerReadSettings struct {
13163	StoreReadSettings
13164	// Indicates whether the source files need to be deleted after copy completion. Default is false. Type: boolean (or Expression with resultType boolean).
13165	DeleteFilesAfterCompletion interface{} `json:"deleteFilesAfterCompletion,omitempty"`
13166
13167	// Indicates whether to enable partition discovery.
13168	EnablePartitionDiscovery *bool `json:"enablePartitionDiscovery,omitempty"`
13169
13170	// Specify a filter to be used to select a subset of files in the folderPath rather than all files. Type: string (or Expression with resultType string).
13171	FileFilter interface{} `json:"fileFilter,omitempty"`
13172
13173	// Point to a text file that lists each file (relative path to the path configured in the dataset) that you want to copy. Type: string (or Expression with
13174	// resultType string).
13175	FileListPath interface{} `json:"fileListPath,omitempty"`
13176
13177	// The end of file's modified datetime. Type: string (or Expression with resultType string).
13178	ModifiedDatetimeEnd interface{} `json:"modifiedDatetimeEnd,omitempty"`
13179
13180	// The start of file's modified datetime. Type: string (or Expression with resultType string).
13181	ModifiedDatetimeStart interface{} `json:"modifiedDatetimeStart,omitempty"`
13182
13183	// Specify the root path where partition discovery starts from. Type: string (or Expression with resultType string).
13184	PartitionRootPath interface{} `json:"partitionRootPath,omitempty"`
13185
13186	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
13187	Recursive interface{} `json:"recursive,omitempty"`
13188
13189	// FileServer wildcardFileName. Type: string (or Expression with resultType string).
13190	WildcardFileName interface{} `json:"wildcardFileName,omitempty"`
13191
13192	// FileServer wildcardFolderPath. Type: string (or Expression with resultType string).
13193	WildcardFolderPath interface{} `json:"wildcardFolderPath,omitempty"`
13194}
13195
13196// MarshalJSON implements the json.Marshaller interface for type FileServerReadSettings.
13197func (f FileServerReadSettings) MarshalJSON() ([]byte, error) {
13198	objectMap := f.StoreReadSettings.marshalInternal("FileServerReadSettings")
13199	populate(objectMap, "deleteFilesAfterCompletion", f.DeleteFilesAfterCompletion)
13200	populate(objectMap, "enablePartitionDiscovery", f.EnablePartitionDiscovery)
13201	populate(objectMap, "fileFilter", f.FileFilter)
13202	populate(objectMap, "fileListPath", f.FileListPath)
13203	populate(objectMap, "modifiedDatetimeEnd", f.ModifiedDatetimeEnd)
13204	populate(objectMap, "modifiedDatetimeStart", f.ModifiedDatetimeStart)
13205	populate(objectMap, "partitionRootPath", f.PartitionRootPath)
13206	populate(objectMap, "recursive", f.Recursive)
13207	populate(objectMap, "wildcardFileName", f.WildcardFileName)
13208	populate(objectMap, "wildcardFolderPath", f.WildcardFolderPath)
13209	return json.Marshal(objectMap)
13210}
13211
13212// UnmarshalJSON implements the json.Unmarshaller interface for type FileServerReadSettings.
13213func (f *FileServerReadSettings) UnmarshalJSON(data []byte) error {
13214	var rawMsg map[string]json.RawMessage
13215	if err := json.Unmarshal(data, &rawMsg); err != nil {
13216		return err
13217	}
13218	for key, val := range rawMsg {
13219		var err error
13220		switch key {
13221		case "deleteFilesAfterCompletion":
13222			err = unpopulate(val, &f.DeleteFilesAfterCompletion)
13223			delete(rawMsg, key)
13224		case "enablePartitionDiscovery":
13225			err = unpopulate(val, &f.EnablePartitionDiscovery)
13226			delete(rawMsg, key)
13227		case "fileFilter":
13228			err = unpopulate(val, &f.FileFilter)
13229			delete(rawMsg, key)
13230		case "fileListPath":
13231			err = unpopulate(val, &f.FileListPath)
13232			delete(rawMsg, key)
13233		case "modifiedDatetimeEnd":
13234			err = unpopulate(val, &f.ModifiedDatetimeEnd)
13235			delete(rawMsg, key)
13236		case "modifiedDatetimeStart":
13237			err = unpopulate(val, &f.ModifiedDatetimeStart)
13238			delete(rawMsg, key)
13239		case "partitionRootPath":
13240			err = unpopulate(val, &f.PartitionRootPath)
13241			delete(rawMsg, key)
13242		case "recursive":
13243			err = unpopulate(val, &f.Recursive)
13244			delete(rawMsg, key)
13245		case "wildcardFileName":
13246			err = unpopulate(val, &f.WildcardFileName)
13247			delete(rawMsg, key)
13248		case "wildcardFolderPath":
13249			err = unpopulate(val, &f.WildcardFolderPath)
13250			delete(rawMsg, key)
13251		}
13252		if err != nil {
13253			return err
13254		}
13255	}
13256	return f.StoreReadSettings.unmarshalInternal(rawMsg)
13257}
13258
13259// FileServerWriteSettings - File server write settings.
13260type FileServerWriteSettings struct {
13261	StoreWriteSettings
13262}
13263
13264// MarshalJSON implements the json.Marshaller interface for type FileServerWriteSettings.
13265func (f FileServerWriteSettings) MarshalJSON() ([]byte, error) {
13266	objectMap := f.StoreWriteSettings.marshalInternal("FileServerWriteSettings")
13267	return json.Marshal(objectMap)
13268}
13269
13270// FileShareDataset - An on-premises file system dataset.
13271type FileShareDataset struct {
13272	Dataset
13273	// On-premises file system dataset properties.
13274	TypeProperties *FileShareDatasetTypeProperties `json:"typeProperties,omitempty"`
13275}
13276
13277// MarshalJSON implements the json.Marshaller interface for type FileShareDataset.
13278func (f FileShareDataset) MarshalJSON() ([]byte, error) {
13279	objectMap := f.Dataset.marshalInternal("FileShare")
13280	populate(objectMap, "typeProperties", f.TypeProperties)
13281	return json.Marshal(objectMap)
13282}
13283
13284// UnmarshalJSON implements the json.Unmarshaller interface for type FileShareDataset.
13285func (f *FileShareDataset) UnmarshalJSON(data []byte) error {
13286	var rawMsg map[string]json.RawMessage
13287	if err := json.Unmarshal(data, &rawMsg); err != nil {
13288		return err
13289	}
13290	for key, val := range rawMsg {
13291		var err error
13292		switch key {
13293		case "typeProperties":
13294			err = unpopulate(val, &f.TypeProperties)
13295			delete(rawMsg, key)
13296		}
13297		if err != nil {
13298			return err
13299		}
13300	}
13301	return f.Dataset.unmarshalInternal(rawMsg)
13302}
13303
13304// FileShareDatasetTypeProperties - On-premises file system dataset properties.
13305type FileShareDatasetTypeProperties struct {
13306	// The data compression method used for the file system.
13307	Compression DatasetCompressionClassification `json:"compression,omitempty"`
13308
13309	// Specify a filter to be used to select a subset of files in the folderPath rather than all files. Type: string (or Expression with resultType string).
13310	FileFilter interface{} `json:"fileFilter,omitempty"`
13311
13312	// The name of the on-premises file system. Type: string (or Expression with resultType string).
13313	FileName interface{} `json:"fileName,omitempty"`
13314
13315	// The path of the on-premises file system. Type: string (or Expression with resultType string).
13316	FolderPath interface{} `json:"folderPath,omitempty"`
13317
13318	// The format of the files.
13319	Format DatasetStorageFormatClassification `json:"format,omitempty"`
13320
13321	// The end of file's modified datetime. Type: string (or Expression with resultType string).
13322	ModifiedDatetimeEnd interface{} `json:"modifiedDatetimeEnd,omitempty"`
13323
13324	// The start of file's modified datetime. Type: string (or Expression with resultType string).
13325	ModifiedDatetimeStart interface{} `json:"modifiedDatetimeStart,omitempty"`
13326}
13327
13328// MarshalJSON implements the json.Marshaller interface for type FileShareDatasetTypeProperties.
13329func (f FileShareDatasetTypeProperties) MarshalJSON() ([]byte, error) {
13330	objectMap := make(map[string]interface{})
13331	populate(objectMap, "compression", f.Compression)
13332	populate(objectMap, "fileFilter", f.FileFilter)
13333	populate(objectMap, "fileName", f.FileName)
13334	populate(objectMap, "folderPath", f.FolderPath)
13335	populate(objectMap, "format", f.Format)
13336	populate(objectMap, "modifiedDatetimeEnd", f.ModifiedDatetimeEnd)
13337	populate(objectMap, "modifiedDatetimeStart", f.ModifiedDatetimeStart)
13338	return json.Marshal(objectMap)
13339}
13340
13341// UnmarshalJSON implements the json.Unmarshaller interface for type FileShareDatasetTypeProperties.
13342func (f *FileShareDatasetTypeProperties) UnmarshalJSON(data []byte) error {
13343	var rawMsg map[string]json.RawMessage
13344	if err := json.Unmarshal(data, &rawMsg); err != nil {
13345		return err
13346	}
13347	for key, val := range rawMsg {
13348		var err error
13349		switch key {
13350		case "compression":
13351			f.Compression, err = unmarshalDatasetCompressionClassification(val)
13352			delete(rawMsg, key)
13353		case "fileFilter":
13354			err = unpopulate(val, &f.FileFilter)
13355			delete(rawMsg, key)
13356		case "fileName":
13357			err = unpopulate(val, &f.FileName)
13358			delete(rawMsg, key)
13359		case "folderPath":
13360			err = unpopulate(val, &f.FolderPath)
13361			delete(rawMsg, key)
13362		case "format":
13363			f.Format, err = unmarshalDatasetStorageFormatClassification(val)
13364			delete(rawMsg, key)
13365		case "modifiedDatetimeEnd":
13366			err = unpopulate(val, &f.ModifiedDatetimeEnd)
13367			delete(rawMsg, key)
13368		case "modifiedDatetimeStart":
13369			err = unpopulate(val, &f.ModifiedDatetimeStart)
13370			delete(rawMsg, key)
13371		}
13372		if err != nil {
13373			return err
13374		}
13375	}
13376	return nil
13377}
13378
13379// FileSystemSink - A copy activity file system sink.
13380type FileSystemSink struct {
13381	CopySink
13382	// The type of copy behavior for copy sink.
13383	CopyBehavior interface{} `json:"copyBehavior,omitempty"`
13384}
13385
13386// MarshalJSON implements the json.Marshaller interface for type FileSystemSink.
13387func (f FileSystemSink) MarshalJSON() ([]byte, error) {
13388	objectMap := f.CopySink.marshalInternal("FileSystemSink")
13389	populate(objectMap, "copyBehavior", f.CopyBehavior)
13390	return json.Marshal(objectMap)
13391}
13392
13393// UnmarshalJSON implements the json.Unmarshaller interface for type FileSystemSink.
13394func (f *FileSystemSink) UnmarshalJSON(data []byte) error {
13395	var rawMsg map[string]json.RawMessage
13396	if err := json.Unmarshal(data, &rawMsg); err != nil {
13397		return err
13398	}
13399	for key, val := range rawMsg {
13400		var err error
13401		switch key {
13402		case "copyBehavior":
13403			err = unpopulate(val, &f.CopyBehavior)
13404			delete(rawMsg, key)
13405		}
13406		if err != nil {
13407			return err
13408		}
13409	}
13410	return f.CopySink.unmarshalInternal(rawMsg)
13411}
13412
13413// FileSystemSource - A copy activity file system source.
13414type FileSystemSource struct {
13415	CopySource
13416	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
13417	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
13418
13419	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
13420	Recursive interface{} `json:"recursive,omitempty"`
13421}
13422
13423// MarshalJSON implements the json.Marshaller interface for type FileSystemSource.
13424func (f FileSystemSource) MarshalJSON() ([]byte, error) {
13425	objectMap := f.CopySource.marshalInternal("FileSystemSource")
13426	populate(objectMap, "additionalColumns", f.AdditionalColumns)
13427	populate(objectMap, "recursive", f.Recursive)
13428	return json.Marshal(objectMap)
13429}
13430
13431// UnmarshalJSON implements the json.Unmarshaller interface for type FileSystemSource.
13432func (f *FileSystemSource) UnmarshalJSON(data []byte) error {
13433	var rawMsg map[string]json.RawMessage
13434	if err := json.Unmarshal(data, &rawMsg); err != nil {
13435		return err
13436	}
13437	for key, val := range rawMsg {
13438		var err error
13439		switch key {
13440		case "additionalColumns":
13441			err = unpopulate(val, &f.AdditionalColumns)
13442			delete(rawMsg, key)
13443		case "recursive":
13444			err = unpopulate(val, &f.Recursive)
13445			delete(rawMsg, key)
13446		}
13447		if err != nil {
13448			return err
13449		}
13450	}
13451	return f.CopySource.unmarshalInternal(rawMsg)
13452}
13453
13454// FilterActivity - Filter and return results from input array based on the conditions.
13455type FilterActivity struct {
13456	ControlActivity
13457	// REQUIRED; Filter activity properties.
13458	TypeProperties *FilterActivityTypeProperties `json:"typeProperties,omitempty"`
13459}
13460
13461// MarshalJSON implements the json.Marshaller interface for type FilterActivity.
13462func (f FilterActivity) MarshalJSON() ([]byte, error) {
13463	objectMap := f.ControlActivity.marshalInternal("Filter")
13464	populate(objectMap, "typeProperties", f.TypeProperties)
13465	return json.Marshal(objectMap)
13466}
13467
13468// UnmarshalJSON implements the json.Unmarshaller interface for type FilterActivity.
13469func (f *FilterActivity) UnmarshalJSON(data []byte) error {
13470	var rawMsg map[string]json.RawMessage
13471	if err := json.Unmarshal(data, &rawMsg); err != nil {
13472		return err
13473	}
13474	for key, val := range rawMsg {
13475		var err error
13476		switch key {
13477		case "typeProperties":
13478			err = unpopulate(val, &f.TypeProperties)
13479			delete(rawMsg, key)
13480		}
13481		if err != nil {
13482			return err
13483		}
13484	}
13485	return f.ControlActivity.unmarshalInternal(rawMsg)
13486}
13487
13488// FilterActivityTypeProperties - Filter activity properties.
13489type FilterActivityTypeProperties struct {
13490	// REQUIRED; Condition to be used for filtering the input.
13491	Condition *Expression `json:"condition,omitempty"`
13492
13493	// REQUIRED; Input array on which filter should be applied.
13494	Items *Expression `json:"items,omitempty"`
13495}
13496
13497// ForEachActivity - This activity is used for iterating over a collection and execute given activities.
13498type ForEachActivity struct {
13499	ControlActivity
13500	// REQUIRED; ForEach activity properties.
13501	TypeProperties *ForEachActivityTypeProperties `json:"typeProperties,omitempty"`
13502}
13503
13504// MarshalJSON implements the json.Marshaller interface for type ForEachActivity.
13505func (f ForEachActivity) MarshalJSON() ([]byte, error) {
13506	objectMap := f.ControlActivity.marshalInternal("ForEach")
13507	populate(objectMap, "typeProperties", f.TypeProperties)
13508	return json.Marshal(objectMap)
13509}
13510
13511// UnmarshalJSON implements the json.Unmarshaller interface for type ForEachActivity.
13512func (f *ForEachActivity) UnmarshalJSON(data []byte) error {
13513	var rawMsg map[string]json.RawMessage
13514	if err := json.Unmarshal(data, &rawMsg); err != nil {
13515		return err
13516	}
13517	for key, val := range rawMsg {
13518		var err error
13519		switch key {
13520		case "typeProperties":
13521			err = unpopulate(val, &f.TypeProperties)
13522			delete(rawMsg, key)
13523		}
13524		if err != nil {
13525			return err
13526		}
13527	}
13528	return f.ControlActivity.unmarshalInternal(rawMsg)
13529}
13530
13531// ForEachActivityTypeProperties - ForEach activity properties.
13532type ForEachActivityTypeProperties struct {
13533	// REQUIRED; List of activities to execute .
13534	Activities []ActivityClassification `json:"activities,omitempty"`
13535
13536	// REQUIRED; Collection to iterate.
13537	Items *Expression `json:"items,omitempty"`
13538
13539	// Batch count to be used for controlling the number of parallel execution (when isSequential is set to false).
13540	BatchCount *int32 `json:"batchCount,omitempty"`
13541
13542	// Should the loop be executed in sequence or in parallel (max 50)
13543	IsSequential *bool `json:"isSequential,omitempty"`
13544}
13545
13546// MarshalJSON implements the json.Marshaller interface for type ForEachActivityTypeProperties.
13547func (f ForEachActivityTypeProperties) MarshalJSON() ([]byte, error) {
13548	objectMap := make(map[string]interface{})
13549	populate(objectMap, "activities", f.Activities)
13550	populate(objectMap, "batchCount", f.BatchCount)
13551	populate(objectMap, "isSequential", f.IsSequential)
13552	populate(objectMap, "items", f.Items)
13553	return json.Marshal(objectMap)
13554}
13555
13556// UnmarshalJSON implements the json.Unmarshaller interface for type ForEachActivityTypeProperties.
13557func (f *ForEachActivityTypeProperties) UnmarshalJSON(data []byte) error {
13558	var rawMsg map[string]json.RawMessage
13559	if err := json.Unmarshal(data, &rawMsg); err != nil {
13560		return err
13561	}
13562	for key, val := range rawMsg {
13563		var err error
13564		switch key {
13565		case "activities":
13566			f.Activities, err = unmarshalActivityClassificationArray(val)
13567			delete(rawMsg, key)
13568		case "batchCount":
13569			err = unpopulate(val, &f.BatchCount)
13570			delete(rawMsg, key)
13571		case "isSequential":
13572			err = unpopulate(val, &f.IsSequential)
13573			delete(rawMsg, key)
13574		case "items":
13575			err = unpopulate(val, &f.Items)
13576			delete(rawMsg, key)
13577		}
13578		if err != nil {
13579			return err
13580		}
13581	}
13582	return nil
13583}
13584
13585// FormatReadSettingsClassification provides polymorphic access to related types.
13586// Call the interface's GetFormatReadSettings() method to access the common type.
13587// Use a type switch to determine the concrete type.  The possible types are:
13588// - *BinaryReadSettings, *DelimitedTextReadSettings, *FormatReadSettings, *JsonReadSettings, *XmlReadSettings
13589type FormatReadSettingsClassification interface {
13590	// GetFormatReadSettings returns the FormatReadSettings content of the underlying type.
13591	GetFormatReadSettings() *FormatReadSettings
13592}
13593
13594// FormatReadSettings - Format read settings.
13595type FormatReadSettings struct {
13596	// REQUIRED; The read setting type.
13597	Type *string `json:"type,omitempty"`
13598
13599	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
13600	AdditionalProperties map[string]interface{}
13601}
13602
13603// GetFormatReadSettings implements the FormatReadSettingsClassification interface for type FormatReadSettings.
13604func (f *FormatReadSettings) GetFormatReadSettings() *FormatReadSettings { return f }
13605
13606// UnmarshalJSON implements the json.Unmarshaller interface for type FormatReadSettings.
13607func (f *FormatReadSettings) UnmarshalJSON(data []byte) error {
13608	var rawMsg map[string]json.RawMessage
13609	if err := json.Unmarshal(data, &rawMsg); err != nil {
13610		return err
13611	}
13612	return f.unmarshalInternal(rawMsg)
13613}
13614
13615func (f FormatReadSettings) marshalInternal(discValue string) map[string]interface{} {
13616	objectMap := make(map[string]interface{})
13617	f.Type = &discValue
13618	objectMap["type"] = f.Type
13619	if f.AdditionalProperties != nil {
13620		for key, val := range f.AdditionalProperties {
13621			objectMap[key] = val
13622		}
13623	}
13624	return objectMap
13625}
13626
13627func (f *FormatReadSettings) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
13628	for key, val := range rawMsg {
13629		var err error
13630		switch key {
13631		case "type":
13632			err = unpopulate(val, &f.Type)
13633			delete(rawMsg, key)
13634		default:
13635			if f.AdditionalProperties == nil {
13636				f.AdditionalProperties = map[string]interface{}{}
13637			}
13638			if val != nil {
13639				var aux interface{}
13640				err = json.Unmarshal(val, &aux)
13641				f.AdditionalProperties[key] = aux
13642			}
13643			delete(rawMsg, key)
13644		}
13645		if err != nil {
13646			return err
13647		}
13648	}
13649	return nil
13650}
13651
13652// FormatWriteSettingsClassification provides polymorphic access to related types.
13653// Call the interface's GetFormatWriteSettings() method to access the common type.
13654// Use a type switch to determine the concrete type.  The possible types are:
13655// - *AvroWriteSettings, *DelimitedTextWriteSettings, *FormatWriteSettings, *JsonWriteSettings, *OrcWriteSettings, *ParquetWriteSettings
13656type FormatWriteSettingsClassification interface {
13657	// GetFormatWriteSettings returns the FormatWriteSettings content of the underlying type.
13658	GetFormatWriteSettings() *FormatWriteSettings
13659}
13660
13661// FormatWriteSettings - Format write settings.
13662type FormatWriteSettings struct {
13663	// REQUIRED; The write setting type.
13664	Type *string `json:"type,omitempty"`
13665
13666	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
13667	AdditionalProperties map[string]interface{}
13668}
13669
13670// GetFormatWriteSettings implements the FormatWriteSettingsClassification interface for type FormatWriteSettings.
13671func (f *FormatWriteSettings) GetFormatWriteSettings() *FormatWriteSettings { return f }
13672
13673// UnmarshalJSON implements the json.Unmarshaller interface for type FormatWriteSettings.
13674func (f *FormatWriteSettings) UnmarshalJSON(data []byte) error {
13675	var rawMsg map[string]json.RawMessage
13676	if err := json.Unmarshal(data, &rawMsg); err != nil {
13677		return err
13678	}
13679	return f.unmarshalInternal(rawMsg)
13680}
13681
13682func (f FormatWriteSettings) marshalInternal(discValue string) map[string]interface{} {
13683	objectMap := make(map[string]interface{})
13684	f.Type = &discValue
13685	objectMap["type"] = f.Type
13686	if f.AdditionalProperties != nil {
13687		for key, val := range f.AdditionalProperties {
13688			objectMap[key] = val
13689		}
13690	}
13691	return objectMap
13692}
13693
13694func (f *FormatWriteSettings) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
13695	for key, val := range rawMsg {
13696		var err error
13697		switch key {
13698		case "type":
13699			err = unpopulate(val, &f.Type)
13700			delete(rawMsg, key)
13701		default:
13702			if f.AdditionalProperties == nil {
13703				f.AdditionalProperties = map[string]interface{}{}
13704			}
13705			if val != nil {
13706				var aux interface{}
13707				err = json.Unmarshal(val, &aux)
13708				f.AdditionalProperties[key] = aux
13709			}
13710			delete(rawMsg, key)
13711		}
13712		if err != nil {
13713			return err
13714		}
13715	}
13716	return nil
13717}
13718
13719// FtpReadSettings - Ftp read settings.
13720type FtpReadSettings struct {
13721	StoreReadSettings
13722	// Indicates whether the source files need to be deleted after copy completion. Default is false. Type: boolean (or Expression with resultType boolean).
13723	DeleteFilesAfterCompletion interface{} `json:"deleteFilesAfterCompletion,omitempty"`
13724
13725	// Indicates whether to enable partition discovery.
13726	EnablePartitionDiscovery *bool `json:"enablePartitionDiscovery,omitempty"`
13727
13728	// Point to a text file that lists each file (relative path to the path configured in the dataset) that you want to copy. Type: string (or Expression with
13729	// resultType string).
13730	FileListPath interface{} `json:"fileListPath,omitempty"`
13731
13732	// Specify the root path where partition discovery starts from. Type: string (or Expression with resultType string).
13733	PartitionRootPath interface{} `json:"partitionRootPath,omitempty"`
13734
13735	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
13736	Recursive interface{} `json:"recursive,omitempty"`
13737
13738	// Specify whether to use binary transfer mode for FTP stores.
13739	UseBinaryTransfer *bool `json:"useBinaryTransfer,omitempty"`
13740
13741	// Ftp wildcardFileName. Type: string (or Expression with resultType string).
13742	WildcardFileName interface{} `json:"wildcardFileName,omitempty"`
13743
13744	// Ftp wildcardFolderPath. Type: string (or Expression with resultType string).
13745	WildcardFolderPath interface{} `json:"wildcardFolderPath,omitempty"`
13746}
13747
13748// MarshalJSON implements the json.Marshaller interface for type FtpReadSettings.
13749func (f FtpReadSettings) MarshalJSON() ([]byte, error) {
13750	objectMap := f.StoreReadSettings.marshalInternal("FtpReadSettings")
13751	populate(objectMap, "deleteFilesAfterCompletion", f.DeleteFilesAfterCompletion)
13752	populate(objectMap, "enablePartitionDiscovery", f.EnablePartitionDiscovery)
13753	populate(objectMap, "fileListPath", f.FileListPath)
13754	populate(objectMap, "partitionRootPath", f.PartitionRootPath)
13755	populate(objectMap, "recursive", f.Recursive)
13756	populate(objectMap, "useBinaryTransfer", f.UseBinaryTransfer)
13757	populate(objectMap, "wildcardFileName", f.WildcardFileName)
13758	populate(objectMap, "wildcardFolderPath", f.WildcardFolderPath)
13759	return json.Marshal(objectMap)
13760}
13761
13762// UnmarshalJSON implements the json.Unmarshaller interface for type FtpReadSettings.
13763func (f *FtpReadSettings) UnmarshalJSON(data []byte) error {
13764	var rawMsg map[string]json.RawMessage
13765	if err := json.Unmarshal(data, &rawMsg); err != nil {
13766		return err
13767	}
13768	for key, val := range rawMsg {
13769		var err error
13770		switch key {
13771		case "deleteFilesAfterCompletion":
13772			err = unpopulate(val, &f.DeleteFilesAfterCompletion)
13773			delete(rawMsg, key)
13774		case "enablePartitionDiscovery":
13775			err = unpopulate(val, &f.EnablePartitionDiscovery)
13776			delete(rawMsg, key)
13777		case "fileListPath":
13778			err = unpopulate(val, &f.FileListPath)
13779			delete(rawMsg, key)
13780		case "partitionRootPath":
13781			err = unpopulate(val, &f.PartitionRootPath)
13782			delete(rawMsg, key)
13783		case "recursive":
13784			err = unpopulate(val, &f.Recursive)
13785			delete(rawMsg, key)
13786		case "useBinaryTransfer":
13787			err = unpopulate(val, &f.UseBinaryTransfer)
13788			delete(rawMsg, key)
13789		case "wildcardFileName":
13790			err = unpopulate(val, &f.WildcardFileName)
13791			delete(rawMsg, key)
13792		case "wildcardFolderPath":
13793			err = unpopulate(val, &f.WildcardFolderPath)
13794			delete(rawMsg, key)
13795		}
13796		if err != nil {
13797			return err
13798		}
13799	}
13800	return f.StoreReadSettings.unmarshalInternal(rawMsg)
13801}
13802
13803// FtpServerLinkedService - A FTP server Linked Service.
13804type FtpServerLinkedService struct {
13805	LinkedService
13806	// REQUIRED; Properties specific to this linked service type.
13807	TypeProperties *FtpServerLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
13808}
13809
13810// MarshalJSON implements the json.Marshaller interface for type FtpServerLinkedService.
13811func (f FtpServerLinkedService) MarshalJSON() ([]byte, error) {
13812	objectMap := f.LinkedService.marshalInternal("FtpServer")
13813	populate(objectMap, "typeProperties", f.TypeProperties)
13814	return json.Marshal(objectMap)
13815}
13816
13817// UnmarshalJSON implements the json.Unmarshaller interface for type FtpServerLinkedService.
13818func (f *FtpServerLinkedService) UnmarshalJSON(data []byte) error {
13819	var rawMsg map[string]json.RawMessage
13820	if err := json.Unmarshal(data, &rawMsg); err != nil {
13821		return err
13822	}
13823	for key, val := range rawMsg {
13824		var err error
13825		switch key {
13826		case "typeProperties":
13827			err = unpopulate(val, &f.TypeProperties)
13828			delete(rawMsg, key)
13829		}
13830		if err != nil {
13831			return err
13832		}
13833	}
13834	return f.LinkedService.unmarshalInternal(rawMsg)
13835}
13836
13837// FtpServerLinkedServiceTypeProperties - Properties specific to this linked service type.
13838type FtpServerLinkedServiceTypeProperties struct {
13839	// REQUIRED; Host name of the FTP server. Type: string (or Expression with resultType string).
13840	Host interface{} `json:"host,omitempty"`
13841
13842	// The authentication type to be used to connect to the FTP server.
13843	AuthenticationType *FtpAuthenticationType `json:"authenticationType,omitempty"`
13844
13845	// If true, connect to the FTP server over SSL/TLS channel. Default value is true. Type: boolean (or Expression with resultType boolean).
13846	EnableSSL interface{} `json:"enableSsl,omitempty"`
13847
13848	// If true, validate the FTP server SSL certificate when connect over SSL/TLS channel. Default value is true. Type: boolean (or Expression with resultType
13849	// boolean).
13850	EnableServerCertificateValidation interface{} `json:"enableServerCertificateValidation,omitempty"`
13851
13852	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
13853	// with resultType string).
13854	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
13855
13856	// Password to logon the FTP server.
13857	Password SecretBaseClassification `json:"password,omitempty"`
13858
13859	// The TCP port number that the FTP server uses to listen for client connections. Default value is 21. Type: integer (or Expression with resultType integer),
13860	// minimum: 0.
13861	Port interface{} `json:"port,omitempty"`
13862
13863	// Username to logon the FTP server. Type: string (or Expression with resultType string).
13864	UserName interface{} `json:"userName,omitempty"`
13865}
13866
13867// MarshalJSON implements the json.Marshaller interface for type FtpServerLinkedServiceTypeProperties.
13868func (f FtpServerLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
13869	objectMap := make(map[string]interface{})
13870	populate(objectMap, "authenticationType", f.AuthenticationType)
13871	populate(objectMap, "enableSsl", f.EnableSSL)
13872	populate(objectMap, "enableServerCertificateValidation", f.EnableServerCertificateValidation)
13873	populate(objectMap, "encryptedCredential", f.EncryptedCredential)
13874	populate(objectMap, "host", f.Host)
13875	populate(objectMap, "password", f.Password)
13876	populate(objectMap, "port", f.Port)
13877	populate(objectMap, "userName", f.UserName)
13878	return json.Marshal(objectMap)
13879}
13880
13881// UnmarshalJSON implements the json.Unmarshaller interface for type FtpServerLinkedServiceTypeProperties.
13882func (f *FtpServerLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
13883	var rawMsg map[string]json.RawMessage
13884	if err := json.Unmarshal(data, &rawMsg); err != nil {
13885		return err
13886	}
13887	for key, val := range rawMsg {
13888		var err error
13889		switch key {
13890		case "authenticationType":
13891			err = unpopulate(val, &f.AuthenticationType)
13892			delete(rawMsg, key)
13893		case "enableSsl":
13894			err = unpopulate(val, &f.EnableSSL)
13895			delete(rawMsg, key)
13896		case "enableServerCertificateValidation":
13897			err = unpopulate(val, &f.EnableServerCertificateValidation)
13898			delete(rawMsg, key)
13899		case "encryptedCredential":
13900			err = unpopulate(val, &f.EncryptedCredential)
13901			delete(rawMsg, key)
13902		case "host":
13903			err = unpopulate(val, &f.Host)
13904			delete(rawMsg, key)
13905		case "password":
13906			f.Password, err = unmarshalSecretBaseClassification(val)
13907			delete(rawMsg, key)
13908		case "port":
13909			err = unpopulate(val, &f.Port)
13910			delete(rawMsg, key)
13911		case "userName":
13912			err = unpopulate(val, &f.UserName)
13913			delete(rawMsg, key)
13914		}
13915		if err != nil {
13916			return err
13917		}
13918	}
13919	return nil
13920}
13921
13922// FtpServerLocation - The location of ftp server dataset.
13923type FtpServerLocation struct {
13924	DatasetLocation
13925}
13926
13927// MarshalJSON implements the json.Marshaller interface for type FtpServerLocation.
13928func (f FtpServerLocation) MarshalJSON() ([]byte, error) {
13929	objectMap := f.DatasetLocation.marshalInternal("FtpServerLocation")
13930	return json.Marshal(objectMap)
13931}
13932
13933// GenericDatasetTypeProperties - Properties specific to this dataset type.
13934type GenericDatasetTypeProperties struct {
13935	// The table name. Type: string (or Expression with resultType string).
13936	TableName interface{} `json:"tableName,omitempty"`
13937}
13938
13939// GetMetadataActivity - Activity to get metadata of dataset
13940type GetMetadataActivity struct {
13941	ExecutionActivity
13942	// REQUIRED; GetMetadata activity properties.
13943	TypeProperties *GetMetadataActivityTypeProperties `json:"typeProperties,omitempty"`
13944}
13945
13946// MarshalJSON implements the json.Marshaller interface for type GetMetadataActivity.
13947func (g GetMetadataActivity) MarshalJSON() ([]byte, error) {
13948	objectMap := g.ExecutionActivity.marshalInternal("GetMetadata")
13949	populate(objectMap, "typeProperties", g.TypeProperties)
13950	return json.Marshal(objectMap)
13951}
13952
13953// UnmarshalJSON implements the json.Unmarshaller interface for type GetMetadataActivity.
13954func (g *GetMetadataActivity) UnmarshalJSON(data []byte) error {
13955	var rawMsg map[string]json.RawMessage
13956	if err := json.Unmarshal(data, &rawMsg); err != nil {
13957		return err
13958	}
13959	for key, val := range rawMsg {
13960		var err error
13961		switch key {
13962		case "typeProperties":
13963			err = unpopulate(val, &g.TypeProperties)
13964			delete(rawMsg, key)
13965		}
13966		if err != nil {
13967			return err
13968		}
13969	}
13970	return g.ExecutionActivity.unmarshalInternal(rawMsg)
13971}
13972
13973// GetMetadataActivityTypeProperties - GetMetadata activity properties.
13974type GetMetadataActivityTypeProperties struct {
13975	// REQUIRED; GetMetadata activity dataset reference.
13976	Dataset *DatasetReference `json:"dataset,omitempty"`
13977
13978	// Fields of metadata to get from dataset.
13979	FieldList []interface{} `json:"fieldList,omitempty"`
13980
13981	// GetMetadata activity format settings.
13982	FormatSettings FormatReadSettingsClassification `json:"formatSettings,omitempty"`
13983
13984	// GetMetadata activity store settings.
13985	StoreSettings StoreReadSettingsClassification `json:"storeSettings,omitempty"`
13986}
13987
13988// MarshalJSON implements the json.Marshaller interface for type GetMetadataActivityTypeProperties.
13989func (g GetMetadataActivityTypeProperties) MarshalJSON() ([]byte, error) {
13990	objectMap := make(map[string]interface{})
13991	populate(objectMap, "dataset", g.Dataset)
13992	populate(objectMap, "fieldList", g.FieldList)
13993	populate(objectMap, "formatSettings", g.FormatSettings)
13994	populate(objectMap, "storeSettings", g.StoreSettings)
13995	return json.Marshal(objectMap)
13996}
13997
13998// UnmarshalJSON implements the json.Unmarshaller interface for type GetMetadataActivityTypeProperties.
13999func (g *GetMetadataActivityTypeProperties) UnmarshalJSON(data []byte) error {
14000	var rawMsg map[string]json.RawMessage
14001	if err := json.Unmarshal(data, &rawMsg); err != nil {
14002		return err
14003	}
14004	for key, val := range rawMsg {
14005		var err error
14006		switch key {
14007		case "dataset":
14008			err = unpopulate(val, &g.Dataset)
14009			delete(rawMsg, key)
14010		case "fieldList":
14011			err = unpopulate(val, &g.FieldList)
14012			delete(rawMsg, key)
14013		case "formatSettings":
14014			g.FormatSettings, err = unmarshalFormatReadSettingsClassification(val)
14015			delete(rawMsg, key)
14016		case "storeSettings":
14017			g.StoreSettings, err = unmarshalStoreReadSettingsClassification(val)
14018			delete(rawMsg, key)
14019		}
14020		if err != nil {
14021			return err
14022		}
14023	}
14024	return nil
14025}
14026
14027// GetSsisObjectMetadataRequest - The request payload of get SSIS object metadata.
14028type GetSsisObjectMetadataRequest struct {
14029	// Metadata path.
14030	MetadataPath *string `json:"metadataPath,omitempty"`
14031}
14032
14033type GitHubAccessTokenRequest struct {
14034	// REQUIRED; The GitHub Access code.
14035	GitHubAccessCode *string `json:"gitHubAccessCode,omitempty"`
14036
14037	// REQUIRED; The GitHub access token base URL.
14038	GitHubAccessTokenBaseURL *string `json:"gitHubAccessTokenBaseUrl,omitempty"`
14039
14040	// REQUIRED; The GitHub Client Id.
14041	GitHubClientID *string `json:"gitHubClientId,omitempty"`
14042}
14043
14044type GitHubAccessTokenResponse struct {
14045	GitHubAccessToken *string `json:"gitHubAccessToken,omitempty"`
14046}
14047
14048// GoogleAdWordsLinkedService - Google AdWords service linked service.
14049type GoogleAdWordsLinkedService struct {
14050	LinkedService
14051	// REQUIRED; Google AdWords service linked service properties.
14052	TypeProperties *GoogleAdWordsLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
14053}
14054
14055// MarshalJSON implements the json.Marshaller interface for type GoogleAdWordsLinkedService.
14056func (g GoogleAdWordsLinkedService) MarshalJSON() ([]byte, error) {
14057	objectMap := g.LinkedService.marshalInternal("GoogleAdWords")
14058	populate(objectMap, "typeProperties", g.TypeProperties)
14059	return json.Marshal(objectMap)
14060}
14061
14062// UnmarshalJSON implements the json.Unmarshaller interface for type GoogleAdWordsLinkedService.
14063func (g *GoogleAdWordsLinkedService) UnmarshalJSON(data []byte) error {
14064	var rawMsg map[string]json.RawMessage
14065	if err := json.Unmarshal(data, &rawMsg); err != nil {
14066		return err
14067	}
14068	for key, val := range rawMsg {
14069		var err error
14070		switch key {
14071		case "typeProperties":
14072			err = unpopulate(val, &g.TypeProperties)
14073			delete(rawMsg, key)
14074		}
14075		if err != nil {
14076			return err
14077		}
14078	}
14079	return g.LinkedService.unmarshalInternal(rawMsg)
14080}
14081
14082// GoogleAdWordsLinkedServiceTypeProperties - Google AdWords service linked service properties.
14083type GoogleAdWordsLinkedServiceTypeProperties struct {
14084	// REQUIRED; The OAuth 2.0 authentication mechanism used for authentication. ServiceAuthentication can only be used on self-hosted IR.
14085	AuthenticationType *GoogleAdWordsAuthenticationType `json:"authenticationType,omitempty"`
14086
14087	// REQUIRED; The Client customer ID of the AdWords account that you want to fetch report data for.
14088	ClientCustomerID interface{} `json:"clientCustomerID,omitempty"`
14089
14090	// REQUIRED; The developer token associated with the manager account that you use to grant access to the AdWords API.
14091	DeveloperToken SecretBaseClassification `json:"developerToken,omitempty"`
14092
14093	// The client id of the google application used to acquire the refresh token. Type: string (or Expression with resultType string).
14094	ClientID interface{} `json:"clientId,omitempty"`
14095
14096	// The client secret of the google application used to acquire the refresh token.
14097	ClientSecret SecretBaseClassification `json:"clientSecret,omitempty"`
14098
14099	// The service account email ID that is used for ServiceAuthentication and can only be used on self-hosted IR.
14100	Email interface{} `json:"email,omitempty"`
14101
14102	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
14103	// with resultType string).
14104	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
14105
14106	// The full path to the .p12 key file that is used to authenticate the service account email address and can only be used on self-hosted IR.
14107	KeyFilePath interface{} `json:"keyFilePath,omitempty"`
14108
14109	// The refresh token obtained from Google for authorizing access to AdWords for UserAuthentication.
14110	RefreshToken SecretBaseClassification `json:"refreshToken,omitempty"`
14111
14112	// The full path of the .pem file containing trusted CA certificates for verifying the server when connecting over SSL. This property can only be set when
14113	// using SSL on self-hosted IR. The default value
14114	// is the cacerts.pem file installed with the IR.
14115	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
14116
14117	// Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.
14118	UseSystemTrustStore interface{} `json:"useSystemTrustStore,omitempty"`
14119}
14120
14121// MarshalJSON implements the json.Marshaller interface for type GoogleAdWordsLinkedServiceTypeProperties.
14122func (g GoogleAdWordsLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
14123	objectMap := make(map[string]interface{})
14124	populate(objectMap, "authenticationType", g.AuthenticationType)
14125	populate(objectMap, "clientCustomerID", g.ClientCustomerID)
14126	populate(objectMap, "clientId", g.ClientID)
14127	populate(objectMap, "clientSecret", g.ClientSecret)
14128	populate(objectMap, "developerToken", g.DeveloperToken)
14129	populate(objectMap, "email", g.Email)
14130	populate(objectMap, "encryptedCredential", g.EncryptedCredential)
14131	populate(objectMap, "keyFilePath", g.KeyFilePath)
14132	populate(objectMap, "refreshToken", g.RefreshToken)
14133	populate(objectMap, "trustedCertPath", g.TrustedCertPath)
14134	populate(objectMap, "useSystemTrustStore", g.UseSystemTrustStore)
14135	return json.Marshal(objectMap)
14136}
14137
14138// UnmarshalJSON implements the json.Unmarshaller interface for type GoogleAdWordsLinkedServiceTypeProperties.
14139func (g *GoogleAdWordsLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
14140	var rawMsg map[string]json.RawMessage
14141	if err := json.Unmarshal(data, &rawMsg); err != nil {
14142		return err
14143	}
14144	for key, val := range rawMsg {
14145		var err error
14146		switch key {
14147		case "authenticationType":
14148			err = unpopulate(val, &g.AuthenticationType)
14149			delete(rawMsg, key)
14150		case "clientCustomerID":
14151			err = unpopulate(val, &g.ClientCustomerID)
14152			delete(rawMsg, key)
14153		case "clientId":
14154			err = unpopulate(val, &g.ClientID)
14155			delete(rawMsg, key)
14156		case "clientSecret":
14157			g.ClientSecret, err = unmarshalSecretBaseClassification(val)
14158			delete(rawMsg, key)
14159		case "developerToken":
14160			g.DeveloperToken, err = unmarshalSecretBaseClassification(val)
14161			delete(rawMsg, key)
14162		case "email":
14163			err = unpopulate(val, &g.Email)
14164			delete(rawMsg, key)
14165		case "encryptedCredential":
14166			err = unpopulate(val, &g.EncryptedCredential)
14167			delete(rawMsg, key)
14168		case "keyFilePath":
14169			err = unpopulate(val, &g.KeyFilePath)
14170			delete(rawMsg, key)
14171		case "refreshToken":
14172			g.RefreshToken, err = unmarshalSecretBaseClassification(val)
14173			delete(rawMsg, key)
14174		case "trustedCertPath":
14175			err = unpopulate(val, &g.TrustedCertPath)
14176			delete(rawMsg, key)
14177		case "useSystemTrustStore":
14178			err = unpopulate(val, &g.UseSystemTrustStore)
14179			delete(rawMsg, key)
14180		}
14181		if err != nil {
14182			return err
14183		}
14184	}
14185	return nil
14186}
14187
14188// GoogleAdWordsObjectDataset - Google AdWords service dataset.
14189type GoogleAdWordsObjectDataset struct {
14190	Dataset
14191	// Properties specific to this dataset type.
14192	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
14193}
14194
14195// MarshalJSON implements the json.Marshaller interface for type GoogleAdWordsObjectDataset.
14196func (g GoogleAdWordsObjectDataset) MarshalJSON() ([]byte, error) {
14197	objectMap := g.Dataset.marshalInternal("GoogleAdWordsObject")
14198	populate(objectMap, "typeProperties", g.TypeProperties)
14199	return json.Marshal(objectMap)
14200}
14201
14202// UnmarshalJSON implements the json.Unmarshaller interface for type GoogleAdWordsObjectDataset.
14203func (g *GoogleAdWordsObjectDataset) UnmarshalJSON(data []byte) error {
14204	var rawMsg map[string]json.RawMessage
14205	if err := json.Unmarshal(data, &rawMsg); err != nil {
14206		return err
14207	}
14208	for key, val := range rawMsg {
14209		var err error
14210		switch key {
14211		case "typeProperties":
14212			err = unpopulate(val, &g.TypeProperties)
14213			delete(rawMsg, key)
14214		}
14215		if err != nil {
14216			return err
14217		}
14218	}
14219	return g.Dataset.unmarshalInternal(rawMsg)
14220}
14221
14222// GoogleAdWordsSource - A copy activity Google AdWords service source.
14223type GoogleAdWordsSource struct {
14224	TabularSource
14225	// A query to retrieve data from source. Type: string (or Expression with resultType string).
14226	Query interface{} `json:"query,omitempty"`
14227}
14228
14229// MarshalJSON implements the json.Marshaller interface for type GoogleAdWordsSource.
14230func (g GoogleAdWordsSource) MarshalJSON() ([]byte, error) {
14231	objectMap := g.TabularSource.marshalInternal("GoogleAdWordsSource")
14232	populate(objectMap, "query", g.Query)
14233	return json.Marshal(objectMap)
14234}
14235
14236// UnmarshalJSON implements the json.Unmarshaller interface for type GoogleAdWordsSource.
14237func (g *GoogleAdWordsSource) UnmarshalJSON(data []byte) error {
14238	var rawMsg map[string]json.RawMessage
14239	if err := json.Unmarshal(data, &rawMsg); err != nil {
14240		return err
14241	}
14242	for key, val := range rawMsg {
14243		var err error
14244		switch key {
14245		case "query":
14246			err = unpopulate(val, &g.Query)
14247			delete(rawMsg, key)
14248		}
14249		if err != nil {
14250			return err
14251		}
14252	}
14253	return g.TabularSource.unmarshalInternal(rawMsg)
14254}
14255
14256// GoogleBigQueryDatasetTypeProperties - Google BigQuery Dataset Properties
14257type GoogleBigQueryDatasetTypeProperties struct {
14258	// The database name of the Google BigQuery. Type: string (or Expression with resultType string).
14259	Dataset interface{} `json:"dataset,omitempty"`
14260
14261	// The table name of the Google BigQuery. Type: string (or Expression with resultType string).
14262	Table interface{} `json:"table,omitempty"`
14263
14264	// This property will be retired. Please consider using database + table properties instead.
14265	TableName interface{} `json:"tableName,omitempty"`
14266}
14267
14268// GoogleBigQueryLinkedService - Google BigQuery service linked service.
14269type GoogleBigQueryLinkedService struct {
14270	LinkedService
14271	// REQUIRED; Google BigQuery service linked service properties.
14272	TypeProperties *GoogleBigQueryLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
14273}
14274
14275// MarshalJSON implements the json.Marshaller interface for type GoogleBigQueryLinkedService.
14276func (g GoogleBigQueryLinkedService) MarshalJSON() ([]byte, error) {
14277	objectMap := g.LinkedService.marshalInternal("GoogleBigQuery")
14278	populate(objectMap, "typeProperties", g.TypeProperties)
14279	return json.Marshal(objectMap)
14280}
14281
14282// UnmarshalJSON implements the json.Unmarshaller interface for type GoogleBigQueryLinkedService.
14283func (g *GoogleBigQueryLinkedService) UnmarshalJSON(data []byte) error {
14284	var rawMsg map[string]json.RawMessage
14285	if err := json.Unmarshal(data, &rawMsg); err != nil {
14286		return err
14287	}
14288	for key, val := range rawMsg {
14289		var err error
14290		switch key {
14291		case "typeProperties":
14292			err = unpopulate(val, &g.TypeProperties)
14293			delete(rawMsg, key)
14294		}
14295		if err != nil {
14296			return err
14297		}
14298	}
14299	return g.LinkedService.unmarshalInternal(rawMsg)
14300}
14301
14302// GoogleBigQueryLinkedServiceTypeProperties - Google BigQuery service linked service properties.
14303type GoogleBigQueryLinkedServiceTypeProperties struct {
14304	// REQUIRED; The OAuth 2.0 authentication mechanism used for authentication. ServiceAuthentication can only be used on self-hosted IR.
14305	AuthenticationType *GoogleBigQueryAuthenticationType `json:"authenticationType,omitempty"`
14306
14307	// REQUIRED; The default BigQuery project to query against.
14308	Project interface{} `json:"project,omitempty"`
14309
14310	// A comma-separated list of public BigQuery projects to access.
14311	AdditionalProjects interface{} `json:"additionalProjects,omitempty"`
14312
14313	// The client id of the google application used to acquire the refresh token. Type: string (or Expression with resultType string).
14314	ClientID interface{} `json:"clientId,omitempty"`
14315
14316	// The client secret of the google application used to acquire the refresh token.
14317	ClientSecret SecretBaseClassification `json:"clientSecret,omitempty"`
14318
14319	// The service account email ID that is used for ServiceAuthentication and can only be used on self-hosted IR.
14320	Email interface{} `json:"email,omitempty"`
14321
14322	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
14323	// with resultType string).
14324	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
14325
14326	// The full path to the .p12 key file that is used to authenticate the service account email address and can only be used on self-hosted IR.
14327	KeyFilePath interface{} `json:"keyFilePath,omitempty"`
14328
14329	// The refresh token obtained from Google for authorizing access to BigQuery for UserAuthentication.
14330	RefreshToken SecretBaseClassification `json:"refreshToken,omitempty"`
14331
14332	// Whether to request access to Google Drive. Allowing Google Drive access enables support for federated tables that combine BigQuery data with data from
14333	// Google Drive. The default value is false.
14334	RequestGoogleDriveScope interface{} `json:"requestGoogleDriveScope,omitempty"`
14335
14336	// The full path of the .pem file containing trusted CA certificates for verifying the server when connecting over SSL. This property can only be set when
14337	// using SSL on self-hosted IR. The default value
14338	// is the cacerts.pem file installed with the IR.
14339	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
14340
14341	// Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.
14342	UseSystemTrustStore interface{} `json:"useSystemTrustStore,omitempty"`
14343}
14344
14345// MarshalJSON implements the json.Marshaller interface for type GoogleBigQueryLinkedServiceTypeProperties.
14346func (g GoogleBigQueryLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
14347	objectMap := make(map[string]interface{})
14348	populate(objectMap, "additionalProjects", g.AdditionalProjects)
14349	populate(objectMap, "authenticationType", g.AuthenticationType)
14350	populate(objectMap, "clientId", g.ClientID)
14351	populate(objectMap, "clientSecret", g.ClientSecret)
14352	populate(objectMap, "email", g.Email)
14353	populate(objectMap, "encryptedCredential", g.EncryptedCredential)
14354	populate(objectMap, "keyFilePath", g.KeyFilePath)
14355	populate(objectMap, "project", g.Project)
14356	populate(objectMap, "refreshToken", g.RefreshToken)
14357	populate(objectMap, "requestGoogleDriveScope", g.RequestGoogleDriveScope)
14358	populate(objectMap, "trustedCertPath", g.TrustedCertPath)
14359	populate(objectMap, "useSystemTrustStore", g.UseSystemTrustStore)
14360	return json.Marshal(objectMap)
14361}
14362
14363// UnmarshalJSON implements the json.Unmarshaller interface for type GoogleBigQueryLinkedServiceTypeProperties.
14364func (g *GoogleBigQueryLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
14365	var rawMsg map[string]json.RawMessage
14366	if err := json.Unmarshal(data, &rawMsg); err != nil {
14367		return err
14368	}
14369	for key, val := range rawMsg {
14370		var err error
14371		switch key {
14372		case "additionalProjects":
14373			err = unpopulate(val, &g.AdditionalProjects)
14374			delete(rawMsg, key)
14375		case "authenticationType":
14376			err = unpopulate(val, &g.AuthenticationType)
14377			delete(rawMsg, key)
14378		case "clientId":
14379			err = unpopulate(val, &g.ClientID)
14380			delete(rawMsg, key)
14381		case "clientSecret":
14382			g.ClientSecret, err = unmarshalSecretBaseClassification(val)
14383			delete(rawMsg, key)
14384		case "email":
14385			err = unpopulate(val, &g.Email)
14386			delete(rawMsg, key)
14387		case "encryptedCredential":
14388			err = unpopulate(val, &g.EncryptedCredential)
14389			delete(rawMsg, key)
14390		case "keyFilePath":
14391			err = unpopulate(val, &g.KeyFilePath)
14392			delete(rawMsg, key)
14393		case "project":
14394			err = unpopulate(val, &g.Project)
14395			delete(rawMsg, key)
14396		case "refreshToken":
14397			g.RefreshToken, err = unmarshalSecretBaseClassification(val)
14398			delete(rawMsg, key)
14399		case "requestGoogleDriveScope":
14400			err = unpopulate(val, &g.RequestGoogleDriveScope)
14401			delete(rawMsg, key)
14402		case "trustedCertPath":
14403			err = unpopulate(val, &g.TrustedCertPath)
14404			delete(rawMsg, key)
14405		case "useSystemTrustStore":
14406			err = unpopulate(val, &g.UseSystemTrustStore)
14407			delete(rawMsg, key)
14408		}
14409		if err != nil {
14410			return err
14411		}
14412	}
14413	return nil
14414}
14415
14416// GoogleBigQueryObjectDataset - Google BigQuery service dataset.
14417type GoogleBigQueryObjectDataset struct {
14418	Dataset
14419	// Properties specific to this dataset type.
14420	TypeProperties *GoogleBigQueryDatasetTypeProperties `json:"typeProperties,omitempty"`
14421}
14422
14423// MarshalJSON implements the json.Marshaller interface for type GoogleBigQueryObjectDataset.
14424func (g GoogleBigQueryObjectDataset) MarshalJSON() ([]byte, error) {
14425	objectMap := g.Dataset.marshalInternal("GoogleBigQueryObject")
14426	populate(objectMap, "typeProperties", g.TypeProperties)
14427	return json.Marshal(objectMap)
14428}
14429
14430// UnmarshalJSON implements the json.Unmarshaller interface for type GoogleBigQueryObjectDataset.
14431func (g *GoogleBigQueryObjectDataset) UnmarshalJSON(data []byte) error {
14432	var rawMsg map[string]json.RawMessage
14433	if err := json.Unmarshal(data, &rawMsg); err != nil {
14434		return err
14435	}
14436	for key, val := range rawMsg {
14437		var err error
14438		switch key {
14439		case "typeProperties":
14440			err = unpopulate(val, &g.TypeProperties)
14441			delete(rawMsg, key)
14442		}
14443		if err != nil {
14444			return err
14445		}
14446	}
14447	return g.Dataset.unmarshalInternal(rawMsg)
14448}
14449
14450// GoogleBigQuerySource - A copy activity Google BigQuery service source.
14451type GoogleBigQuerySource struct {
14452	TabularSource
14453	// A query to retrieve data from source. Type: string (or Expression with resultType string).
14454	Query interface{} `json:"query,omitempty"`
14455}
14456
14457// MarshalJSON implements the json.Marshaller interface for type GoogleBigQuerySource.
14458func (g GoogleBigQuerySource) MarshalJSON() ([]byte, error) {
14459	objectMap := g.TabularSource.marshalInternal("GoogleBigQuerySource")
14460	populate(objectMap, "query", g.Query)
14461	return json.Marshal(objectMap)
14462}
14463
14464// UnmarshalJSON implements the json.Unmarshaller interface for type GoogleBigQuerySource.
14465func (g *GoogleBigQuerySource) UnmarshalJSON(data []byte) error {
14466	var rawMsg map[string]json.RawMessage
14467	if err := json.Unmarshal(data, &rawMsg); err != nil {
14468		return err
14469	}
14470	for key, val := range rawMsg {
14471		var err error
14472		switch key {
14473		case "query":
14474			err = unpopulate(val, &g.Query)
14475			delete(rawMsg, key)
14476		}
14477		if err != nil {
14478			return err
14479		}
14480	}
14481	return g.TabularSource.unmarshalInternal(rawMsg)
14482}
14483
14484// GoogleCloudStorageLinkedService - Linked service for Google Cloud Storage.
14485type GoogleCloudStorageLinkedService struct {
14486	LinkedService
14487	// REQUIRED; Google Cloud Storage linked service properties.
14488	TypeProperties *GoogleCloudStorageLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
14489}
14490
14491// MarshalJSON implements the json.Marshaller interface for type GoogleCloudStorageLinkedService.
14492func (g GoogleCloudStorageLinkedService) MarshalJSON() ([]byte, error) {
14493	objectMap := g.LinkedService.marshalInternal("GoogleCloudStorage")
14494	populate(objectMap, "typeProperties", g.TypeProperties)
14495	return json.Marshal(objectMap)
14496}
14497
14498// UnmarshalJSON implements the json.Unmarshaller interface for type GoogleCloudStorageLinkedService.
14499func (g *GoogleCloudStorageLinkedService) UnmarshalJSON(data []byte) error {
14500	var rawMsg map[string]json.RawMessage
14501	if err := json.Unmarshal(data, &rawMsg); err != nil {
14502		return err
14503	}
14504	for key, val := range rawMsg {
14505		var err error
14506		switch key {
14507		case "typeProperties":
14508			err = unpopulate(val, &g.TypeProperties)
14509			delete(rawMsg, key)
14510		}
14511		if err != nil {
14512			return err
14513		}
14514	}
14515	return g.LinkedService.unmarshalInternal(rawMsg)
14516}
14517
14518// GoogleCloudStorageLinkedServiceTypeProperties - Google Cloud Storage linked service properties.
14519type GoogleCloudStorageLinkedServiceTypeProperties struct {
14520	// The access key identifier of the Google Cloud Storage Identity and Access Management (IAM) user. Type: string (or Expression with resultType string).
14521	AccessKeyID interface{} `json:"accessKeyId,omitempty"`
14522
14523	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
14524	// with resultType string).
14525	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
14526
14527	// The secret access key of the Google Cloud Storage Identity and Access Management (IAM) user.
14528	SecretAccessKey SecretBaseClassification `json:"secretAccessKey,omitempty"`
14529
14530	// This value specifies the endpoint to access with the Google Cloud Storage Connector. This is an optional property; change it only if you want to try
14531	// a different service endpoint or want to switch
14532	// between https and http. Type: string (or Expression with resultType string).
14533	ServiceURL interface{} `json:"serviceUrl,omitempty"`
14534}
14535
14536// MarshalJSON implements the json.Marshaller interface for type GoogleCloudStorageLinkedServiceTypeProperties.
14537func (g GoogleCloudStorageLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
14538	objectMap := make(map[string]interface{})
14539	populate(objectMap, "accessKeyId", g.AccessKeyID)
14540	populate(objectMap, "encryptedCredential", g.EncryptedCredential)
14541	populate(objectMap, "secretAccessKey", g.SecretAccessKey)
14542	populate(objectMap, "serviceUrl", g.ServiceURL)
14543	return json.Marshal(objectMap)
14544}
14545
14546// UnmarshalJSON implements the json.Unmarshaller interface for type GoogleCloudStorageLinkedServiceTypeProperties.
14547func (g *GoogleCloudStorageLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
14548	var rawMsg map[string]json.RawMessage
14549	if err := json.Unmarshal(data, &rawMsg); err != nil {
14550		return err
14551	}
14552	for key, val := range rawMsg {
14553		var err error
14554		switch key {
14555		case "accessKeyId":
14556			err = unpopulate(val, &g.AccessKeyID)
14557			delete(rawMsg, key)
14558		case "encryptedCredential":
14559			err = unpopulate(val, &g.EncryptedCredential)
14560			delete(rawMsg, key)
14561		case "secretAccessKey":
14562			g.SecretAccessKey, err = unmarshalSecretBaseClassification(val)
14563			delete(rawMsg, key)
14564		case "serviceUrl":
14565			err = unpopulate(val, &g.ServiceURL)
14566			delete(rawMsg, key)
14567		}
14568		if err != nil {
14569			return err
14570		}
14571	}
14572	return nil
14573}
14574
14575// GoogleCloudStorageLocation - The location of Google Cloud Storage dataset.
14576type GoogleCloudStorageLocation struct {
14577	DatasetLocation
14578	// Specify the bucketName of Google Cloud Storage. Type: string (or Expression with resultType string)
14579	BucketName interface{} `json:"bucketName,omitempty"`
14580
14581	// Specify the version of Google Cloud Storage. Type: string (or Expression with resultType string).
14582	Version interface{} `json:"version,omitempty"`
14583}
14584
14585// MarshalJSON implements the json.Marshaller interface for type GoogleCloudStorageLocation.
14586func (g GoogleCloudStorageLocation) MarshalJSON() ([]byte, error) {
14587	objectMap := g.DatasetLocation.marshalInternal("GoogleCloudStorageLocation")
14588	populate(objectMap, "bucketName", g.BucketName)
14589	populate(objectMap, "version", g.Version)
14590	return json.Marshal(objectMap)
14591}
14592
14593// UnmarshalJSON implements the json.Unmarshaller interface for type GoogleCloudStorageLocation.
14594func (g *GoogleCloudStorageLocation) UnmarshalJSON(data []byte) error {
14595	var rawMsg map[string]json.RawMessage
14596	if err := json.Unmarshal(data, &rawMsg); err != nil {
14597		return err
14598	}
14599	for key, val := range rawMsg {
14600		var err error
14601		switch key {
14602		case "bucketName":
14603			err = unpopulate(val, &g.BucketName)
14604			delete(rawMsg, key)
14605		case "version":
14606			err = unpopulate(val, &g.Version)
14607			delete(rawMsg, key)
14608		}
14609		if err != nil {
14610			return err
14611		}
14612	}
14613	return g.DatasetLocation.unmarshalInternal(rawMsg)
14614}
14615
14616// GoogleCloudStorageReadSettings - Google Cloud Storage read settings.
14617type GoogleCloudStorageReadSettings struct {
14618	StoreReadSettings
14619	// Indicates whether the source files need to be deleted after copy completion. Default is false. Type: boolean (or Expression with resultType boolean).
14620	DeleteFilesAfterCompletion interface{} `json:"deleteFilesAfterCompletion,omitempty"`
14621
14622	// Indicates whether to enable partition discovery.
14623	EnablePartitionDiscovery *bool `json:"enablePartitionDiscovery,omitempty"`
14624
14625	// Point to a text file that lists each file (relative path to the path configured in the dataset) that you want to copy. Type: string (or Expression with
14626	// resultType string).
14627	FileListPath interface{} `json:"fileListPath,omitempty"`
14628
14629	// The end of file's modified datetime. Type: string (or Expression with resultType string).
14630	ModifiedDatetimeEnd interface{} `json:"modifiedDatetimeEnd,omitempty"`
14631
14632	// The start of file's modified datetime. Type: string (or Expression with resultType string).
14633	ModifiedDatetimeStart interface{} `json:"modifiedDatetimeStart,omitempty"`
14634
14635	// Specify the root path where partition discovery starts from. Type: string (or Expression with resultType string).
14636	PartitionRootPath interface{} `json:"partitionRootPath,omitempty"`
14637
14638	// The prefix filter for the Google Cloud Storage object name. Type: string (or Expression with resultType string).
14639	Prefix interface{} `json:"prefix,omitempty"`
14640
14641	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
14642	Recursive interface{} `json:"recursive,omitempty"`
14643
14644	// Google Cloud Storage wildcardFileName. Type: string (or Expression with resultType string).
14645	WildcardFileName interface{} `json:"wildcardFileName,omitempty"`
14646
14647	// Google Cloud Storage wildcardFolderPath. Type: string (or Expression with resultType string).
14648	WildcardFolderPath interface{} `json:"wildcardFolderPath,omitempty"`
14649}
14650
14651// MarshalJSON implements the json.Marshaller interface for type GoogleCloudStorageReadSettings.
14652func (g GoogleCloudStorageReadSettings) MarshalJSON() ([]byte, error) {
14653	objectMap := g.StoreReadSettings.marshalInternal("GoogleCloudStorageReadSettings")
14654	populate(objectMap, "deleteFilesAfterCompletion", g.DeleteFilesAfterCompletion)
14655	populate(objectMap, "enablePartitionDiscovery", g.EnablePartitionDiscovery)
14656	populate(objectMap, "fileListPath", g.FileListPath)
14657	populate(objectMap, "modifiedDatetimeEnd", g.ModifiedDatetimeEnd)
14658	populate(objectMap, "modifiedDatetimeStart", g.ModifiedDatetimeStart)
14659	populate(objectMap, "partitionRootPath", g.PartitionRootPath)
14660	populate(objectMap, "prefix", g.Prefix)
14661	populate(objectMap, "recursive", g.Recursive)
14662	populate(objectMap, "wildcardFileName", g.WildcardFileName)
14663	populate(objectMap, "wildcardFolderPath", g.WildcardFolderPath)
14664	return json.Marshal(objectMap)
14665}
14666
14667// UnmarshalJSON implements the json.Unmarshaller interface for type GoogleCloudStorageReadSettings.
14668func (g *GoogleCloudStorageReadSettings) UnmarshalJSON(data []byte) error {
14669	var rawMsg map[string]json.RawMessage
14670	if err := json.Unmarshal(data, &rawMsg); err != nil {
14671		return err
14672	}
14673	for key, val := range rawMsg {
14674		var err error
14675		switch key {
14676		case "deleteFilesAfterCompletion":
14677			err = unpopulate(val, &g.DeleteFilesAfterCompletion)
14678			delete(rawMsg, key)
14679		case "enablePartitionDiscovery":
14680			err = unpopulate(val, &g.EnablePartitionDiscovery)
14681			delete(rawMsg, key)
14682		case "fileListPath":
14683			err = unpopulate(val, &g.FileListPath)
14684			delete(rawMsg, key)
14685		case "modifiedDatetimeEnd":
14686			err = unpopulate(val, &g.ModifiedDatetimeEnd)
14687			delete(rawMsg, key)
14688		case "modifiedDatetimeStart":
14689			err = unpopulate(val, &g.ModifiedDatetimeStart)
14690			delete(rawMsg, key)
14691		case "partitionRootPath":
14692			err = unpopulate(val, &g.PartitionRootPath)
14693			delete(rawMsg, key)
14694		case "prefix":
14695			err = unpopulate(val, &g.Prefix)
14696			delete(rawMsg, key)
14697		case "recursive":
14698			err = unpopulate(val, &g.Recursive)
14699			delete(rawMsg, key)
14700		case "wildcardFileName":
14701			err = unpopulate(val, &g.WildcardFileName)
14702			delete(rawMsg, key)
14703		case "wildcardFolderPath":
14704			err = unpopulate(val, &g.WildcardFolderPath)
14705			delete(rawMsg, key)
14706		}
14707		if err != nil {
14708			return err
14709		}
14710	}
14711	return g.StoreReadSettings.unmarshalInternal(rawMsg)
14712}
14713
14714// GreenplumDatasetTypeProperties - Greenplum Dataset Properties
14715type GreenplumDatasetTypeProperties struct {
14716	// The schema name of Greenplum. Type: string (or Expression with resultType string).
14717	Schema interface{} `json:"schema,omitempty"`
14718
14719	// The table name of Greenplum. Type: string (or Expression with resultType string).
14720	Table interface{} `json:"table,omitempty"`
14721
14722	// This property will be retired. Please consider using schema + table properties instead.
14723	TableName interface{} `json:"tableName,omitempty"`
14724}
14725
14726// GreenplumLinkedService - Greenplum Database linked service.
14727type GreenplumLinkedService struct {
14728	LinkedService
14729	// REQUIRED; Greenplum Database linked service properties.
14730	TypeProperties *GreenplumLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
14731}
14732
14733// MarshalJSON implements the json.Marshaller interface for type GreenplumLinkedService.
14734func (g GreenplumLinkedService) MarshalJSON() ([]byte, error) {
14735	objectMap := g.LinkedService.marshalInternal("Greenplum")
14736	populate(objectMap, "typeProperties", g.TypeProperties)
14737	return json.Marshal(objectMap)
14738}
14739
14740// UnmarshalJSON implements the json.Unmarshaller interface for type GreenplumLinkedService.
14741func (g *GreenplumLinkedService) UnmarshalJSON(data []byte) error {
14742	var rawMsg map[string]json.RawMessage
14743	if err := json.Unmarshal(data, &rawMsg); err != nil {
14744		return err
14745	}
14746	for key, val := range rawMsg {
14747		var err error
14748		switch key {
14749		case "typeProperties":
14750			err = unpopulate(val, &g.TypeProperties)
14751			delete(rawMsg, key)
14752		}
14753		if err != nil {
14754			return err
14755		}
14756	}
14757	return g.LinkedService.unmarshalInternal(rawMsg)
14758}
14759
14760// GreenplumLinkedServiceTypeProperties - Greenplum Database linked service properties.
14761type GreenplumLinkedServiceTypeProperties struct {
14762	// An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
14763	ConnectionString interface{} `json:"connectionString,omitempty"`
14764
14765	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
14766	// with resultType string).
14767	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
14768
14769	// The Azure key vault secret reference of password in connection string.
14770	Pwd *AzureKeyVaultSecretReference `json:"pwd,omitempty"`
14771}
14772
14773// GreenplumSource - A copy activity Greenplum Database source.
14774type GreenplumSource struct {
14775	TabularSource
14776	// A query to retrieve data from source. Type: string (or Expression with resultType string).
14777	Query interface{} `json:"query,omitempty"`
14778}
14779
14780// MarshalJSON implements the json.Marshaller interface for type GreenplumSource.
14781func (g GreenplumSource) MarshalJSON() ([]byte, error) {
14782	objectMap := g.TabularSource.marshalInternal("GreenplumSource")
14783	populate(objectMap, "query", g.Query)
14784	return json.Marshal(objectMap)
14785}
14786
14787// UnmarshalJSON implements the json.Unmarshaller interface for type GreenplumSource.
14788func (g *GreenplumSource) UnmarshalJSON(data []byte) error {
14789	var rawMsg map[string]json.RawMessage
14790	if err := json.Unmarshal(data, &rawMsg); err != nil {
14791		return err
14792	}
14793	for key, val := range rawMsg {
14794		var err error
14795		switch key {
14796		case "query":
14797			err = unpopulate(val, &g.Query)
14798			delete(rawMsg, key)
14799		}
14800		if err != nil {
14801			return err
14802		}
14803	}
14804	return g.TabularSource.unmarshalInternal(rawMsg)
14805}
14806
14807// GreenplumTableDataset - Greenplum Database dataset.
14808type GreenplumTableDataset struct {
14809	Dataset
14810	// Properties specific to this dataset type.
14811	TypeProperties *GreenplumDatasetTypeProperties `json:"typeProperties,omitempty"`
14812}
14813
14814// MarshalJSON implements the json.Marshaller interface for type GreenplumTableDataset.
14815func (g GreenplumTableDataset) MarshalJSON() ([]byte, error) {
14816	objectMap := g.Dataset.marshalInternal("GreenplumTable")
14817	populate(objectMap, "typeProperties", g.TypeProperties)
14818	return json.Marshal(objectMap)
14819}
14820
14821// UnmarshalJSON implements the json.Unmarshaller interface for type GreenplumTableDataset.
14822func (g *GreenplumTableDataset) UnmarshalJSON(data []byte) error {
14823	var rawMsg map[string]json.RawMessage
14824	if err := json.Unmarshal(data, &rawMsg); err != nil {
14825		return err
14826	}
14827	for key, val := range rawMsg {
14828		var err error
14829		switch key {
14830		case "typeProperties":
14831			err = unpopulate(val, &g.TypeProperties)
14832			delete(rawMsg, key)
14833		}
14834		if err != nil {
14835			return err
14836		}
14837	}
14838	return g.Dataset.unmarshalInternal(rawMsg)
14839}
14840
14841// HBaseLinkedService - HBase server linked service.
14842type HBaseLinkedService struct {
14843	LinkedService
14844	// REQUIRED; HBase server linked service properties.
14845	TypeProperties *HBaseLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
14846}
14847
14848// MarshalJSON implements the json.Marshaller interface for type HBaseLinkedService.
14849func (h HBaseLinkedService) MarshalJSON() ([]byte, error) {
14850	objectMap := h.LinkedService.marshalInternal("HBase")
14851	populate(objectMap, "typeProperties", h.TypeProperties)
14852	return json.Marshal(objectMap)
14853}
14854
14855// UnmarshalJSON implements the json.Unmarshaller interface for type HBaseLinkedService.
14856func (h *HBaseLinkedService) UnmarshalJSON(data []byte) error {
14857	var rawMsg map[string]json.RawMessage
14858	if err := json.Unmarshal(data, &rawMsg); err != nil {
14859		return err
14860	}
14861	for key, val := range rawMsg {
14862		var err error
14863		switch key {
14864		case "typeProperties":
14865			err = unpopulate(val, &h.TypeProperties)
14866			delete(rawMsg, key)
14867		}
14868		if err != nil {
14869			return err
14870		}
14871	}
14872	return h.LinkedService.unmarshalInternal(rawMsg)
14873}
14874
14875// HBaseLinkedServiceTypeProperties - HBase server linked service properties.
14876type HBaseLinkedServiceTypeProperties struct {
14877	// REQUIRED; The authentication mechanism to use to connect to the HBase server.
14878	AuthenticationType *HBaseAuthenticationType `json:"authenticationType,omitempty"`
14879
14880	// REQUIRED; The IP address or host name of the HBase server. (i.e. 192.168.222.160)
14881	Host interface{} `json:"host,omitempty"`
14882
14883	// Specifies whether to require a CA-issued SSL certificate name to match the host name of the server when connecting over SSL. The default value is false.
14884	AllowHostNameCNMismatch interface{} `json:"allowHostNameCNMismatch,omitempty"`
14885
14886	// Specifies whether to allow self-signed certificates from the server. The default value is false.
14887	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
14888
14889	// Specifies whether the connections to the server are encrypted using SSL. The default value is false.
14890	EnableSSL interface{} `json:"enableSsl,omitempty"`
14891
14892	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
14893	// with resultType string).
14894	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
14895
14896	// The partial URL corresponding to the HBase server. (i.e. /gateway/sandbox/hbase/version)
14897	HTTPPath interface{} `json:"httpPath,omitempty"`
14898
14899	// The password corresponding to the user name.
14900	Password SecretBaseClassification `json:"password,omitempty"`
14901
14902	// The TCP port that the HBase instance uses to listen for client connections. The default value is 9090.
14903	Port interface{} `json:"port,omitempty"`
14904
14905	// The full path of the .pem file containing trusted CA certificates for verifying the server when connecting over SSL. This property can only be set when
14906	// using SSL on self-hosted IR. The default value
14907	// is the cacerts.pem file installed with the IR.
14908	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
14909
14910	// The user name used to connect to the HBase instance.
14911	Username interface{} `json:"username,omitempty"`
14912}
14913
14914// MarshalJSON implements the json.Marshaller interface for type HBaseLinkedServiceTypeProperties.
14915func (h HBaseLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
14916	objectMap := make(map[string]interface{})
14917	populate(objectMap, "allowHostNameCNMismatch", h.AllowHostNameCNMismatch)
14918	populate(objectMap, "allowSelfSignedServerCert", h.AllowSelfSignedServerCert)
14919	populate(objectMap, "authenticationType", h.AuthenticationType)
14920	populate(objectMap, "enableSsl", h.EnableSSL)
14921	populate(objectMap, "encryptedCredential", h.EncryptedCredential)
14922	populate(objectMap, "httpPath", h.HTTPPath)
14923	populate(objectMap, "host", h.Host)
14924	populate(objectMap, "password", h.Password)
14925	populate(objectMap, "port", h.Port)
14926	populate(objectMap, "trustedCertPath", h.TrustedCertPath)
14927	populate(objectMap, "username", h.Username)
14928	return json.Marshal(objectMap)
14929}
14930
14931// UnmarshalJSON implements the json.Unmarshaller interface for type HBaseLinkedServiceTypeProperties.
14932func (h *HBaseLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
14933	var rawMsg map[string]json.RawMessage
14934	if err := json.Unmarshal(data, &rawMsg); err != nil {
14935		return err
14936	}
14937	for key, val := range rawMsg {
14938		var err error
14939		switch key {
14940		case "allowHostNameCNMismatch":
14941			err = unpopulate(val, &h.AllowHostNameCNMismatch)
14942			delete(rawMsg, key)
14943		case "allowSelfSignedServerCert":
14944			err = unpopulate(val, &h.AllowSelfSignedServerCert)
14945			delete(rawMsg, key)
14946		case "authenticationType":
14947			err = unpopulate(val, &h.AuthenticationType)
14948			delete(rawMsg, key)
14949		case "enableSsl":
14950			err = unpopulate(val, &h.EnableSSL)
14951			delete(rawMsg, key)
14952		case "encryptedCredential":
14953			err = unpopulate(val, &h.EncryptedCredential)
14954			delete(rawMsg, key)
14955		case "httpPath":
14956			err = unpopulate(val, &h.HTTPPath)
14957			delete(rawMsg, key)
14958		case "host":
14959			err = unpopulate(val, &h.Host)
14960			delete(rawMsg, key)
14961		case "password":
14962			h.Password, err = unmarshalSecretBaseClassification(val)
14963			delete(rawMsg, key)
14964		case "port":
14965			err = unpopulate(val, &h.Port)
14966			delete(rawMsg, key)
14967		case "trustedCertPath":
14968			err = unpopulate(val, &h.TrustedCertPath)
14969			delete(rawMsg, key)
14970		case "username":
14971			err = unpopulate(val, &h.Username)
14972			delete(rawMsg, key)
14973		}
14974		if err != nil {
14975			return err
14976		}
14977	}
14978	return nil
14979}
14980
14981// HBaseObjectDataset - HBase server dataset.
14982type HBaseObjectDataset struct {
14983	Dataset
14984	// Properties specific to this dataset type.
14985	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
14986}
14987
14988// MarshalJSON implements the json.Marshaller interface for type HBaseObjectDataset.
14989func (h HBaseObjectDataset) MarshalJSON() ([]byte, error) {
14990	objectMap := h.Dataset.marshalInternal("HBaseObject")
14991	populate(objectMap, "typeProperties", h.TypeProperties)
14992	return json.Marshal(objectMap)
14993}
14994
14995// UnmarshalJSON implements the json.Unmarshaller interface for type HBaseObjectDataset.
14996func (h *HBaseObjectDataset) UnmarshalJSON(data []byte) error {
14997	var rawMsg map[string]json.RawMessage
14998	if err := json.Unmarshal(data, &rawMsg); err != nil {
14999		return err
15000	}
15001	for key, val := range rawMsg {
15002		var err error
15003		switch key {
15004		case "typeProperties":
15005			err = unpopulate(val, &h.TypeProperties)
15006			delete(rawMsg, key)
15007		}
15008		if err != nil {
15009			return err
15010		}
15011	}
15012	return h.Dataset.unmarshalInternal(rawMsg)
15013}
15014
15015// HBaseSource - A copy activity HBase server source.
15016type HBaseSource struct {
15017	TabularSource
15018	// A query to retrieve data from source. Type: string (or Expression with resultType string).
15019	Query interface{} `json:"query,omitempty"`
15020}
15021
15022// MarshalJSON implements the json.Marshaller interface for type HBaseSource.
15023func (h HBaseSource) MarshalJSON() ([]byte, error) {
15024	objectMap := h.TabularSource.marshalInternal("HBaseSource")
15025	populate(objectMap, "query", h.Query)
15026	return json.Marshal(objectMap)
15027}
15028
15029// UnmarshalJSON implements the json.Unmarshaller interface for type HBaseSource.
15030func (h *HBaseSource) UnmarshalJSON(data []byte) error {
15031	var rawMsg map[string]json.RawMessage
15032	if err := json.Unmarshal(data, &rawMsg); err != nil {
15033		return err
15034	}
15035	for key, val := range rawMsg {
15036		var err error
15037		switch key {
15038		case "query":
15039			err = unpopulate(val, &h.Query)
15040			delete(rawMsg, key)
15041		}
15042		if err != nil {
15043			return err
15044		}
15045	}
15046	return h.TabularSource.unmarshalInternal(rawMsg)
15047}
15048
15049// HDInsightHiveActivity - HDInsight Hive activity type.
15050type HDInsightHiveActivity struct {
15051	ExecutionActivity
15052	// REQUIRED; HDInsight Hive activity properties.
15053	TypeProperties *HDInsightHiveActivityTypeProperties `json:"typeProperties,omitempty"`
15054}
15055
15056// MarshalJSON implements the json.Marshaller interface for type HDInsightHiveActivity.
15057func (h HDInsightHiveActivity) MarshalJSON() ([]byte, error) {
15058	objectMap := h.ExecutionActivity.marshalInternal("HDInsightHive")
15059	populate(objectMap, "typeProperties", h.TypeProperties)
15060	return json.Marshal(objectMap)
15061}
15062
15063// UnmarshalJSON implements the json.Unmarshaller interface for type HDInsightHiveActivity.
15064func (h *HDInsightHiveActivity) UnmarshalJSON(data []byte) error {
15065	var rawMsg map[string]json.RawMessage
15066	if err := json.Unmarshal(data, &rawMsg); err != nil {
15067		return err
15068	}
15069	for key, val := range rawMsg {
15070		var err error
15071		switch key {
15072		case "typeProperties":
15073			err = unpopulate(val, &h.TypeProperties)
15074			delete(rawMsg, key)
15075		}
15076		if err != nil {
15077			return err
15078		}
15079	}
15080	return h.ExecutionActivity.unmarshalInternal(rawMsg)
15081}
15082
15083// HDInsightHiveActivityTypeProperties - HDInsight Hive activity properties.
15084type HDInsightHiveActivityTypeProperties struct {
15085	// User specified arguments to HDInsightActivity.
15086	Arguments []interface{} `json:"arguments,omitempty"`
15087
15088	// Allows user to specify defines for Hive job request.
15089	Defines map[string]interface{} `json:"defines,omitempty"`
15090
15091	// Debug info option.
15092	GetDebugInfo *HDInsightActivityDebugInfoOption `json:"getDebugInfo,omitempty"`
15093
15094	// Query timeout value (in minutes). Effective when the HDInsight cluster is with ESP (Enterprise Security Package)
15095	QueryTimeout *int32 `json:"queryTimeout,omitempty"`
15096
15097	// Script linked service reference.
15098	ScriptLinkedService *LinkedServiceReference `json:"scriptLinkedService,omitempty"`
15099
15100	// Script path. Type: string (or Expression with resultType string).
15101	ScriptPath interface{} `json:"scriptPath,omitempty"`
15102
15103	// Storage linked service references.
15104	StorageLinkedServices []*LinkedServiceReference `json:"storageLinkedServices,omitempty"`
15105
15106	// User specified arguments under hivevar namespace.
15107	Variables []interface{} `json:"variables,omitempty"`
15108}
15109
15110// MarshalJSON implements the json.Marshaller interface for type HDInsightHiveActivityTypeProperties.
15111func (h HDInsightHiveActivityTypeProperties) MarshalJSON() ([]byte, error) {
15112	objectMap := make(map[string]interface{})
15113	populate(objectMap, "arguments", h.Arguments)
15114	populate(objectMap, "defines", h.Defines)
15115	populate(objectMap, "getDebugInfo", h.GetDebugInfo)
15116	populate(objectMap, "queryTimeout", h.QueryTimeout)
15117	populate(objectMap, "scriptLinkedService", h.ScriptLinkedService)
15118	populate(objectMap, "scriptPath", h.ScriptPath)
15119	populate(objectMap, "storageLinkedServices", h.StorageLinkedServices)
15120	populate(objectMap, "variables", h.Variables)
15121	return json.Marshal(objectMap)
15122}
15123
15124// HDInsightLinkedService - HDInsight linked service.
15125type HDInsightLinkedService struct {
15126	LinkedService
15127	// REQUIRED; HDInsight linked service properties.
15128	TypeProperties *HDInsightLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
15129}
15130
15131// MarshalJSON implements the json.Marshaller interface for type HDInsightLinkedService.
15132func (h HDInsightLinkedService) MarshalJSON() ([]byte, error) {
15133	objectMap := h.LinkedService.marshalInternal("HDInsight")
15134	populate(objectMap, "typeProperties", h.TypeProperties)
15135	return json.Marshal(objectMap)
15136}
15137
15138// UnmarshalJSON implements the json.Unmarshaller interface for type HDInsightLinkedService.
15139func (h *HDInsightLinkedService) UnmarshalJSON(data []byte) error {
15140	var rawMsg map[string]json.RawMessage
15141	if err := json.Unmarshal(data, &rawMsg); err != nil {
15142		return err
15143	}
15144	for key, val := range rawMsg {
15145		var err error
15146		switch key {
15147		case "typeProperties":
15148			err = unpopulate(val, &h.TypeProperties)
15149			delete(rawMsg, key)
15150		}
15151		if err != nil {
15152			return err
15153		}
15154	}
15155	return h.LinkedService.unmarshalInternal(rawMsg)
15156}
15157
15158// HDInsightLinkedServiceTypeProperties - HDInsight linked service properties.
15159type HDInsightLinkedServiceTypeProperties struct {
15160	// REQUIRED; HDInsight cluster URI. Type: string (or Expression with resultType string).
15161	ClusterURI interface{} `json:"clusterUri,omitempty"`
15162
15163	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
15164	// with resultType string).
15165	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
15166
15167	// Specify the FileSystem if the main storage for the HDInsight is ADLS Gen2. Type: string (or Expression with resultType string).
15168	FileSystem interface{} `json:"fileSystem,omitempty"`
15169
15170	// A reference to the Azure SQL linked service that points to the HCatalog database.
15171	HcatalogLinkedServiceName *LinkedServiceReference `json:"hcatalogLinkedServiceName,omitempty"`
15172
15173	// Specify if the HDInsight is created with ESP (Enterprise Security Package). Type: Boolean.
15174	IsEspEnabled interface{} `json:"isEspEnabled,omitempty"`
15175
15176	// The Azure Storage linked service reference.
15177	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
15178
15179	// HDInsight cluster password.
15180	Password SecretBaseClassification `json:"password,omitempty"`
15181
15182	// HDInsight cluster user name. Type: string (or Expression with resultType string).
15183	UserName interface{} `json:"userName,omitempty"`
15184}
15185
15186// MarshalJSON implements the json.Marshaller interface for type HDInsightLinkedServiceTypeProperties.
15187func (h HDInsightLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
15188	objectMap := make(map[string]interface{})
15189	populate(objectMap, "clusterUri", h.ClusterURI)
15190	populate(objectMap, "encryptedCredential", h.EncryptedCredential)
15191	populate(objectMap, "fileSystem", h.FileSystem)
15192	populate(objectMap, "hcatalogLinkedServiceName", h.HcatalogLinkedServiceName)
15193	populate(objectMap, "isEspEnabled", h.IsEspEnabled)
15194	populate(objectMap, "linkedServiceName", h.LinkedServiceName)
15195	populate(objectMap, "password", h.Password)
15196	populate(objectMap, "userName", h.UserName)
15197	return json.Marshal(objectMap)
15198}
15199
15200// UnmarshalJSON implements the json.Unmarshaller interface for type HDInsightLinkedServiceTypeProperties.
15201func (h *HDInsightLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
15202	var rawMsg map[string]json.RawMessage
15203	if err := json.Unmarshal(data, &rawMsg); err != nil {
15204		return err
15205	}
15206	for key, val := range rawMsg {
15207		var err error
15208		switch key {
15209		case "clusterUri":
15210			err = unpopulate(val, &h.ClusterURI)
15211			delete(rawMsg, key)
15212		case "encryptedCredential":
15213			err = unpopulate(val, &h.EncryptedCredential)
15214			delete(rawMsg, key)
15215		case "fileSystem":
15216			err = unpopulate(val, &h.FileSystem)
15217			delete(rawMsg, key)
15218		case "hcatalogLinkedServiceName":
15219			err = unpopulate(val, &h.HcatalogLinkedServiceName)
15220			delete(rawMsg, key)
15221		case "isEspEnabled":
15222			err = unpopulate(val, &h.IsEspEnabled)
15223			delete(rawMsg, key)
15224		case "linkedServiceName":
15225			err = unpopulate(val, &h.LinkedServiceName)
15226			delete(rawMsg, key)
15227		case "password":
15228			h.Password, err = unmarshalSecretBaseClassification(val)
15229			delete(rawMsg, key)
15230		case "userName":
15231			err = unpopulate(val, &h.UserName)
15232			delete(rawMsg, key)
15233		}
15234		if err != nil {
15235			return err
15236		}
15237	}
15238	return nil
15239}
15240
15241// HDInsightMapReduceActivity - HDInsight MapReduce activity type.
15242type HDInsightMapReduceActivity struct {
15243	ExecutionActivity
15244	// REQUIRED; HDInsight MapReduce activity properties.
15245	TypeProperties *HDInsightMapReduceActivityTypeProperties `json:"typeProperties,omitempty"`
15246}
15247
15248// MarshalJSON implements the json.Marshaller interface for type HDInsightMapReduceActivity.
15249func (h HDInsightMapReduceActivity) MarshalJSON() ([]byte, error) {
15250	objectMap := h.ExecutionActivity.marshalInternal("HDInsightMapReduce")
15251	populate(objectMap, "typeProperties", h.TypeProperties)
15252	return json.Marshal(objectMap)
15253}
15254
15255// UnmarshalJSON implements the json.Unmarshaller interface for type HDInsightMapReduceActivity.
15256func (h *HDInsightMapReduceActivity) UnmarshalJSON(data []byte) error {
15257	var rawMsg map[string]json.RawMessage
15258	if err := json.Unmarshal(data, &rawMsg); err != nil {
15259		return err
15260	}
15261	for key, val := range rawMsg {
15262		var err error
15263		switch key {
15264		case "typeProperties":
15265			err = unpopulate(val, &h.TypeProperties)
15266			delete(rawMsg, key)
15267		}
15268		if err != nil {
15269			return err
15270		}
15271	}
15272	return h.ExecutionActivity.unmarshalInternal(rawMsg)
15273}
15274
15275// HDInsightMapReduceActivityTypeProperties - HDInsight MapReduce activity properties.
15276type HDInsightMapReduceActivityTypeProperties struct {
15277	// REQUIRED; Class name. Type: string (or Expression with resultType string).
15278	ClassName interface{} `json:"className,omitempty"`
15279
15280	// REQUIRED; Jar path. Type: string (or Expression with resultType string).
15281	JarFilePath interface{} `json:"jarFilePath,omitempty"`
15282
15283	// User specified arguments to HDInsightActivity.
15284	Arguments []interface{} `json:"arguments,omitempty"`
15285
15286	// Allows user to specify defines for the MapReduce job request.
15287	Defines map[string]interface{} `json:"defines,omitempty"`
15288
15289	// Debug info option.
15290	GetDebugInfo *HDInsightActivityDebugInfoOption `json:"getDebugInfo,omitempty"`
15291
15292	// Jar libs.
15293	JarLibs []interface{} `json:"jarLibs,omitempty"`
15294
15295	// Jar linked service reference.
15296	JarLinkedService *LinkedServiceReference `json:"jarLinkedService,omitempty"`
15297
15298	// Storage linked service references.
15299	StorageLinkedServices []*LinkedServiceReference `json:"storageLinkedServices,omitempty"`
15300}
15301
15302// MarshalJSON implements the json.Marshaller interface for type HDInsightMapReduceActivityTypeProperties.
15303func (h HDInsightMapReduceActivityTypeProperties) MarshalJSON() ([]byte, error) {
15304	objectMap := make(map[string]interface{})
15305	populate(objectMap, "arguments", h.Arguments)
15306	populate(objectMap, "className", h.ClassName)
15307	populate(objectMap, "defines", h.Defines)
15308	populate(objectMap, "getDebugInfo", h.GetDebugInfo)
15309	populate(objectMap, "jarFilePath", h.JarFilePath)
15310	populate(objectMap, "jarLibs", h.JarLibs)
15311	populate(objectMap, "jarLinkedService", h.JarLinkedService)
15312	populate(objectMap, "storageLinkedServices", h.StorageLinkedServices)
15313	return json.Marshal(objectMap)
15314}
15315
15316// HDInsightOnDemandLinkedService - HDInsight ondemand linked service.
15317type HDInsightOnDemandLinkedService struct {
15318	LinkedService
15319	// REQUIRED; HDInsight ondemand linked service properties.
15320	TypeProperties *HDInsightOnDemandLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
15321}
15322
15323// MarshalJSON implements the json.Marshaller interface for type HDInsightOnDemandLinkedService.
15324func (h HDInsightOnDemandLinkedService) MarshalJSON() ([]byte, error) {
15325	objectMap := h.LinkedService.marshalInternal("HDInsightOnDemand")
15326	populate(objectMap, "typeProperties", h.TypeProperties)
15327	return json.Marshal(objectMap)
15328}
15329
15330// UnmarshalJSON implements the json.Unmarshaller interface for type HDInsightOnDemandLinkedService.
15331func (h *HDInsightOnDemandLinkedService) UnmarshalJSON(data []byte) error {
15332	var rawMsg map[string]json.RawMessage
15333	if err := json.Unmarshal(data, &rawMsg); err != nil {
15334		return err
15335	}
15336	for key, val := range rawMsg {
15337		var err error
15338		switch key {
15339		case "typeProperties":
15340			err = unpopulate(val, &h.TypeProperties)
15341			delete(rawMsg, key)
15342		}
15343		if err != nil {
15344			return err
15345		}
15346	}
15347	return h.LinkedService.unmarshalInternal(rawMsg)
15348}
15349
15350// HDInsightOnDemandLinkedServiceTypeProperties - HDInsight ondemand linked service properties.
15351type HDInsightOnDemandLinkedServiceTypeProperties struct {
15352	// REQUIRED; The resource group where the cluster belongs. Type: string (or Expression with resultType string).
15353	ClusterResourceGroup interface{} `json:"clusterResourceGroup,omitempty"`
15354
15355	// REQUIRED; Number of worker/data nodes in the cluster. Suggestion value: 4. Type: string (or Expression with resultType string).
15356	ClusterSize interface{} `json:"clusterSize,omitempty"`
15357
15358	// REQUIRED; The customer’s subscription to host the cluster. Type: string (or Expression with resultType string).
15359	HostSubscriptionID interface{} `json:"hostSubscriptionId,omitempty"`
15360
15361	// REQUIRED; Azure Storage linked service to be used by the on-demand cluster for storing and processing data.
15362	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
15363
15364	// REQUIRED; The Tenant id/name to which the service principal belongs. Type: string (or Expression with resultType string).
15365	Tenant interface{} `json:"tenant,omitempty"`
15366
15367	// REQUIRED; The allowed idle time for the on-demand HDInsight cluster. Specifies how long the on-demand HDInsight cluster stays alive after completion
15368	// of an activity run if there are no other active jobs in the
15369	// cluster. The minimum value is 5 mins. Type: string (or Expression with resultType string).
15370	TimeToLive interface{} `json:"timeToLive,omitempty"`
15371
15372	// REQUIRED; Version of the HDInsight cluster. Type: string (or Expression with resultType string).
15373	Version interface{} `json:"version,omitempty"`
15374
15375	// Specifies additional storage accounts for the HDInsight linked service so that the Data Factory service can register them on your behalf.
15376	AdditionalLinkedServiceNames []*LinkedServiceReference `json:"additionalLinkedServiceNames,omitempty"`
15377
15378	// The prefix of cluster name, postfix will be distinct with timestamp. Type: string (or Expression with resultType string).
15379	ClusterNamePrefix interface{} `json:"clusterNamePrefix,omitempty"`
15380
15381	// The password to access the cluster.
15382	ClusterPassword SecretBaseClassification `json:"clusterPassword,omitempty"`
15383
15384	// The password to SSH remotely connect cluster’s node (for Linux).
15385	ClusterSSHPassword SecretBaseClassification `json:"clusterSshPassword,omitempty"`
15386
15387	// The username to SSH remotely connect to cluster’s node (for Linux). Type: string (or Expression with resultType string).
15388	ClusterSSHUserName interface{} `json:"clusterSshUserName,omitempty"`
15389
15390	// The cluster type. Type: string (or Expression with resultType string).
15391	ClusterType interface{} `json:"clusterType,omitempty"`
15392
15393	// The username to access the cluster. Type: string (or Expression with resultType string).
15394	ClusterUserName interface{} `json:"clusterUserName,omitempty"`
15395
15396	// Specifies the core configuration parameters (as in core-site.xml) for the HDInsight cluster to be created.
15397	CoreConfiguration interface{} `json:"coreConfiguration,omitempty"`
15398
15399	// Specifies the size of the data node for the HDInsight cluster.
15400	DataNodeSize interface{} `json:"dataNodeSize,omitempty"`
15401
15402	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
15403	// with resultType string).
15404	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
15405
15406	// Specifies the HBase configuration parameters (hbase-site.xml) for the HDInsight cluster.
15407	HBaseConfiguration interface{} `json:"hBaseConfiguration,omitempty"`
15408
15409	// The name of Azure SQL linked service that point to the HCatalog database. The on-demand HDInsight cluster is created by using the Azure SQL database
15410	// as the metastore.
15411	HcatalogLinkedServiceName *LinkedServiceReference `json:"hcatalogLinkedServiceName,omitempty"`
15412
15413	// Specifies the HDFS configuration parameters (hdfs-site.xml) for the HDInsight cluster.
15414	HdfsConfiguration interface{} `json:"hdfsConfiguration,omitempty"`
15415
15416	// Specifies the size of the head node for the HDInsight cluster.
15417	HeadNodeSize interface{} `json:"headNodeSize,omitempty"`
15418
15419	// Specifies the hive configuration parameters (hive-site.xml) for the HDInsight cluster.
15420	HiveConfiguration interface{} `json:"hiveConfiguration,omitempty"`
15421
15422	// Specifies the MapReduce configuration parameters (mapred-site.xml) for the HDInsight cluster.
15423	MapReduceConfiguration interface{} `json:"mapReduceConfiguration,omitempty"`
15424
15425	// Specifies the Oozie configuration parameters (oozie-site.xml) for the HDInsight cluster.
15426	OozieConfiguration interface{} `json:"oozieConfiguration,omitempty"`
15427
15428	// Custom script actions to run on HDI ondemand cluster once it's up. Please refer to
15429	// https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-customize-cluster-linux?toc=%2Fen-us%2Fazure%2Fhdinsight%2Fr-server%2FTOC.json&bc=%2Fen-us%2Fazure%2Fbread%2Ftoc.json#understanding-script-actions.
15430	ScriptActions []*ScriptAction `json:"scriptActions,omitempty"`
15431
15432	// The service principal id for the hostSubscriptionId. Type: string (or Expression with resultType string).
15433	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
15434
15435	// The key for the service principal id.
15436	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
15437
15438	// The version of spark if the cluster type is 'spark'. Type: string (or Expression with resultType string).
15439	SparkVersion interface{} `json:"sparkVersion,omitempty"`
15440
15441	// Specifies the Storm configuration parameters (storm-site.xml) for the HDInsight cluster.
15442	StormConfiguration interface{} `json:"stormConfiguration,omitempty"`
15443
15444	// The ARM resource ID for the subnet in the vNet. If virtualNetworkId was specified, then this property is required. Type: string (or Expression with resultType
15445	// string).
15446	SubnetName interface{} `json:"subnetName,omitempty"`
15447
15448	// The ARM resource ID for the vNet to which the cluster should be joined after creation. Type: string (or Expression with resultType string).
15449	VirtualNetworkID interface{} `json:"virtualNetworkId,omitempty"`
15450
15451	// Specifies the Yarn configuration parameters (yarn-site.xml) for the HDInsight cluster.
15452	YarnConfiguration interface{} `json:"yarnConfiguration,omitempty"`
15453
15454	// Specifies the size of the Zoo Keeper node for the HDInsight cluster.
15455	ZookeeperNodeSize interface{} `json:"zookeeperNodeSize,omitempty"`
15456}
15457
15458// MarshalJSON implements the json.Marshaller interface for type HDInsightOnDemandLinkedServiceTypeProperties.
15459func (h HDInsightOnDemandLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
15460	objectMap := make(map[string]interface{})
15461	populate(objectMap, "additionalLinkedServiceNames", h.AdditionalLinkedServiceNames)
15462	populate(objectMap, "clusterNamePrefix", h.ClusterNamePrefix)
15463	populate(objectMap, "clusterPassword", h.ClusterPassword)
15464	populate(objectMap, "clusterResourceGroup", h.ClusterResourceGroup)
15465	populate(objectMap, "clusterSshPassword", h.ClusterSSHPassword)
15466	populate(objectMap, "clusterSshUserName", h.ClusterSSHUserName)
15467	populate(objectMap, "clusterSize", h.ClusterSize)
15468	populate(objectMap, "clusterType", h.ClusterType)
15469	populate(objectMap, "clusterUserName", h.ClusterUserName)
15470	populate(objectMap, "coreConfiguration", h.CoreConfiguration)
15471	populate(objectMap, "dataNodeSize", h.DataNodeSize)
15472	populate(objectMap, "encryptedCredential", h.EncryptedCredential)
15473	populate(objectMap, "hBaseConfiguration", h.HBaseConfiguration)
15474	populate(objectMap, "hcatalogLinkedServiceName", h.HcatalogLinkedServiceName)
15475	populate(objectMap, "hdfsConfiguration", h.HdfsConfiguration)
15476	populate(objectMap, "headNodeSize", h.HeadNodeSize)
15477	populate(objectMap, "hiveConfiguration", h.HiveConfiguration)
15478	populate(objectMap, "hostSubscriptionId", h.HostSubscriptionID)
15479	populate(objectMap, "linkedServiceName", h.LinkedServiceName)
15480	populate(objectMap, "mapReduceConfiguration", h.MapReduceConfiguration)
15481	populate(objectMap, "oozieConfiguration", h.OozieConfiguration)
15482	populate(objectMap, "scriptActions", h.ScriptActions)
15483	populate(objectMap, "servicePrincipalId", h.ServicePrincipalID)
15484	populate(objectMap, "servicePrincipalKey", h.ServicePrincipalKey)
15485	populate(objectMap, "sparkVersion", h.SparkVersion)
15486	populate(objectMap, "stormConfiguration", h.StormConfiguration)
15487	populate(objectMap, "subnetName", h.SubnetName)
15488	populate(objectMap, "tenant", h.Tenant)
15489	populate(objectMap, "timeToLive", h.TimeToLive)
15490	populate(objectMap, "version", h.Version)
15491	populate(objectMap, "virtualNetworkId", h.VirtualNetworkID)
15492	populate(objectMap, "yarnConfiguration", h.YarnConfiguration)
15493	populate(objectMap, "zookeeperNodeSize", h.ZookeeperNodeSize)
15494	return json.Marshal(objectMap)
15495}
15496
15497// UnmarshalJSON implements the json.Unmarshaller interface for type HDInsightOnDemandLinkedServiceTypeProperties.
15498func (h *HDInsightOnDemandLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
15499	var rawMsg map[string]json.RawMessage
15500	if err := json.Unmarshal(data, &rawMsg); err != nil {
15501		return err
15502	}
15503	for key, val := range rawMsg {
15504		var err error
15505		switch key {
15506		case "additionalLinkedServiceNames":
15507			err = unpopulate(val, &h.AdditionalLinkedServiceNames)
15508			delete(rawMsg, key)
15509		case "clusterNamePrefix":
15510			err = unpopulate(val, &h.ClusterNamePrefix)
15511			delete(rawMsg, key)
15512		case "clusterPassword":
15513			h.ClusterPassword, err = unmarshalSecretBaseClassification(val)
15514			delete(rawMsg, key)
15515		case "clusterResourceGroup":
15516			err = unpopulate(val, &h.ClusterResourceGroup)
15517			delete(rawMsg, key)
15518		case "clusterSshPassword":
15519			h.ClusterSSHPassword, err = unmarshalSecretBaseClassification(val)
15520			delete(rawMsg, key)
15521		case "clusterSshUserName":
15522			err = unpopulate(val, &h.ClusterSSHUserName)
15523			delete(rawMsg, key)
15524		case "clusterSize":
15525			err = unpopulate(val, &h.ClusterSize)
15526			delete(rawMsg, key)
15527		case "clusterType":
15528			err = unpopulate(val, &h.ClusterType)
15529			delete(rawMsg, key)
15530		case "clusterUserName":
15531			err = unpopulate(val, &h.ClusterUserName)
15532			delete(rawMsg, key)
15533		case "coreConfiguration":
15534			err = unpopulate(val, &h.CoreConfiguration)
15535			delete(rawMsg, key)
15536		case "dataNodeSize":
15537			err = unpopulate(val, &h.DataNodeSize)
15538			delete(rawMsg, key)
15539		case "encryptedCredential":
15540			err = unpopulate(val, &h.EncryptedCredential)
15541			delete(rawMsg, key)
15542		case "hBaseConfiguration":
15543			err = unpopulate(val, &h.HBaseConfiguration)
15544			delete(rawMsg, key)
15545		case "hcatalogLinkedServiceName":
15546			err = unpopulate(val, &h.HcatalogLinkedServiceName)
15547			delete(rawMsg, key)
15548		case "hdfsConfiguration":
15549			err = unpopulate(val, &h.HdfsConfiguration)
15550			delete(rawMsg, key)
15551		case "headNodeSize":
15552			err = unpopulate(val, &h.HeadNodeSize)
15553			delete(rawMsg, key)
15554		case "hiveConfiguration":
15555			err = unpopulate(val, &h.HiveConfiguration)
15556			delete(rawMsg, key)
15557		case "hostSubscriptionId":
15558			err = unpopulate(val, &h.HostSubscriptionID)
15559			delete(rawMsg, key)
15560		case "linkedServiceName":
15561			err = unpopulate(val, &h.LinkedServiceName)
15562			delete(rawMsg, key)
15563		case "mapReduceConfiguration":
15564			err = unpopulate(val, &h.MapReduceConfiguration)
15565			delete(rawMsg, key)
15566		case "oozieConfiguration":
15567			err = unpopulate(val, &h.OozieConfiguration)
15568			delete(rawMsg, key)
15569		case "scriptActions":
15570			err = unpopulate(val, &h.ScriptActions)
15571			delete(rawMsg, key)
15572		case "servicePrincipalId":
15573			err = unpopulate(val, &h.ServicePrincipalID)
15574			delete(rawMsg, key)
15575		case "servicePrincipalKey":
15576			h.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
15577			delete(rawMsg, key)
15578		case "sparkVersion":
15579			err = unpopulate(val, &h.SparkVersion)
15580			delete(rawMsg, key)
15581		case "stormConfiguration":
15582			err = unpopulate(val, &h.StormConfiguration)
15583			delete(rawMsg, key)
15584		case "subnetName":
15585			err = unpopulate(val, &h.SubnetName)
15586			delete(rawMsg, key)
15587		case "tenant":
15588			err = unpopulate(val, &h.Tenant)
15589			delete(rawMsg, key)
15590		case "timeToLive":
15591			err = unpopulate(val, &h.TimeToLive)
15592			delete(rawMsg, key)
15593		case "version":
15594			err = unpopulate(val, &h.Version)
15595			delete(rawMsg, key)
15596		case "virtualNetworkId":
15597			err = unpopulate(val, &h.VirtualNetworkID)
15598			delete(rawMsg, key)
15599		case "yarnConfiguration":
15600			err = unpopulate(val, &h.YarnConfiguration)
15601			delete(rawMsg, key)
15602		case "zookeeperNodeSize":
15603			err = unpopulate(val, &h.ZookeeperNodeSize)
15604			delete(rawMsg, key)
15605		}
15606		if err != nil {
15607			return err
15608		}
15609	}
15610	return nil
15611}
15612
15613// HDInsightPigActivity - HDInsight Pig activity type.
15614type HDInsightPigActivity struct {
15615	ExecutionActivity
15616	// REQUIRED; HDInsight Pig activity properties.
15617	TypeProperties *HDInsightPigActivityTypeProperties `json:"typeProperties,omitempty"`
15618}
15619
15620// MarshalJSON implements the json.Marshaller interface for type HDInsightPigActivity.
15621func (h HDInsightPigActivity) MarshalJSON() ([]byte, error) {
15622	objectMap := h.ExecutionActivity.marshalInternal("HDInsightPig")
15623	populate(objectMap, "typeProperties", h.TypeProperties)
15624	return json.Marshal(objectMap)
15625}
15626
15627// UnmarshalJSON implements the json.Unmarshaller interface for type HDInsightPigActivity.
15628func (h *HDInsightPigActivity) UnmarshalJSON(data []byte) error {
15629	var rawMsg map[string]json.RawMessage
15630	if err := json.Unmarshal(data, &rawMsg); err != nil {
15631		return err
15632	}
15633	for key, val := range rawMsg {
15634		var err error
15635		switch key {
15636		case "typeProperties":
15637			err = unpopulate(val, &h.TypeProperties)
15638			delete(rawMsg, key)
15639		}
15640		if err != nil {
15641			return err
15642		}
15643	}
15644	return h.ExecutionActivity.unmarshalInternal(rawMsg)
15645}
15646
15647// HDInsightPigActivityTypeProperties - HDInsight Pig activity properties.
15648type HDInsightPigActivityTypeProperties struct {
15649	// User specified arguments to HDInsightActivity. Type: array (or Expression with resultType array).
15650	Arguments interface{} `json:"arguments,omitempty"`
15651
15652	// Allows user to specify defines for Pig job request.
15653	Defines map[string]interface{} `json:"defines,omitempty"`
15654
15655	// Debug info option.
15656	GetDebugInfo *HDInsightActivityDebugInfoOption `json:"getDebugInfo,omitempty"`
15657
15658	// Script linked service reference.
15659	ScriptLinkedService *LinkedServiceReference `json:"scriptLinkedService,omitempty"`
15660
15661	// Script path. Type: string (or Expression with resultType string).
15662	ScriptPath interface{} `json:"scriptPath,omitempty"`
15663
15664	// Storage linked service references.
15665	StorageLinkedServices []*LinkedServiceReference `json:"storageLinkedServices,omitempty"`
15666}
15667
15668// MarshalJSON implements the json.Marshaller interface for type HDInsightPigActivityTypeProperties.
15669func (h HDInsightPigActivityTypeProperties) MarshalJSON() ([]byte, error) {
15670	objectMap := make(map[string]interface{})
15671	populate(objectMap, "arguments", h.Arguments)
15672	populate(objectMap, "defines", h.Defines)
15673	populate(objectMap, "getDebugInfo", h.GetDebugInfo)
15674	populate(objectMap, "scriptLinkedService", h.ScriptLinkedService)
15675	populate(objectMap, "scriptPath", h.ScriptPath)
15676	populate(objectMap, "storageLinkedServices", h.StorageLinkedServices)
15677	return json.Marshal(objectMap)
15678}
15679
15680// HDInsightSparkActivity - HDInsight Spark activity.
15681type HDInsightSparkActivity struct {
15682	ExecutionActivity
15683	// REQUIRED; HDInsight spark activity properties.
15684	TypeProperties *HDInsightSparkActivityTypeProperties `json:"typeProperties,omitempty"`
15685}
15686
15687// MarshalJSON implements the json.Marshaller interface for type HDInsightSparkActivity.
15688func (h HDInsightSparkActivity) MarshalJSON() ([]byte, error) {
15689	objectMap := h.ExecutionActivity.marshalInternal("HDInsightSpark")
15690	populate(objectMap, "typeProperties", h.TypeProperties)
15691	return json.Marshal(objectMap)
15692}
15693
15694// UnmarshalJSON implements the json.Unmarshaller interface for type HDInsightSparkActivity.
15695func (h *HDInsightSparkActivity) UnmarshalJSON(data []byte) error {
15696	var rawMsg map[string]json.RawMessage
15697	if err := json.Unmarshal(data, &rawMsg); err != nil {
15698		return err
15699	}
15700	for key, val := range rawMsg {
15701		var err error
15702		switch key {
15703		case "typeProperties":
15704			err = unpopulate(val, &h.TypeProperties)
15705			delete(rawMsg, key)
15706		}
15707		if err != nil {
15708			return err
15709		}
15710	}
15711	return h.ExecutionActivity.unmarshalInternal(rawMsg)
15712}
15713
15714// HDInsightSparkActivityTypeProperties - HDInsight spark activity properties.
15715type HDInsightSparkActivityTypeProperties struct {
15716	// REQUIRED; The relative path to the root folder of the code/package to be executed. Type: string (or Expression with resultType string).
15717	EntryFilePath interface{} `json:"entryFilePath,omitempty"`
15718
15719	// REQUIRED; The root path in 'sparkJobLinkedService' for all the job’s files. Type: string (or Expression with resultType string).
15720	RootPath interface{} `json:"rootPath,omitempty"`
15721
15722	// The user-specified arguments to HDInsightSparkActivity.
15723	Arguments []interface{} `json:"arguments,omitempty"`
15724
15725	// The application's Java/Spark main class.
15726	ClassName *string `json:"className,omitempty"`
15727
15728	// Debug info option.
15729	GetDebugInfo *HDInsightActivityDebugInfoOption `json:"getDebugInfo,omitempty"`
15730
15731	// The user to impersonate that will execute the job. Type: string (or Expression with resultType string).
15732	ProxyUser interface{} `json:"proxyUser,omitempty"`
15733
15734	// Spark configuration property.
15735	SparkConfig map[string]interface{} `json:"sparkConfig,omitempty"`
15736
15737	// The storage linked service for uploading the entry file and dependencies, and for receiving logs.
15738	SparkJobLinkedService *LinkedServiceReference `json:"sparkJobLinkedService,omitempty"`
15739}
15740
15741// MarshalJSON implements the json.Marshaller interface for type HDInsightSparkActivityTypeProperties.
15742func (h HDInsightSparkActivityTypeProperties) MarshalJSON() ([]byte, error) {
15743	objectMap := make(map[string]interface{})
15744	populate(objectMap, "arguments", h.Arguments)
15745	populate(objectMap, "className", h.ClassName)
15746	populate(objectMap, "entryFilePath", h.EntryFilePath)
15747	populate(objectMap, "getDebugInfo", h.GetDebugInfo)
15748	populate(objectMap, "proxyUser", h.ProxyUser)
15749	populate(objectMap, "rootPath", h.RootPath)
15750	populate(objectMap, "sparkConfig", h.SparkConfig)
15751	populate(objectMap, "sparkJobLinkedService", h.SparkJobLinkedService)
15752	return json.Marshal(objectMap)
15753}
15754
15755// HDInsightStreamingActivity - HDInsight streaming activity type.
15756type HDInsightStreamingActivity struct {
15757	ExecutionActivity
15758	// REQUIRED; HDInsight streaming activity properties.
15759	TypeProperties *HDInsightStreamingActivityTypeProperties `json:"typeProperties,omitempty"`
15760}
15761
15762// MarshalJSON implements the json.Marshaller interface for type HDInsightStreamingActivity.
15763func (h HDInsightStreamingActivity) MarshalJSON() ([]byte, error) {
15764	objectMap := h.ExecutionActivity.marshalInternal("HDInsightStreaming")
15765	populate(objectMap, "typeProperties", h.TypeProperties)
15766	return json.Marshal(objectMap)
15767}
15768
15769// UnmarshalJSON implements the json.Unmarshaller interface for type HDInsightStreamingActivity.
15770func (h *HDInsightStreamingActivity) UnmarshalJSON(data []byte) error {
15771	var rawMsg map[string]json.RawMessage
15772	if err := json.Unmarshal(data, &rawMsg); err != nil {
15773		return err
15774	}
15775	for key, val := range rawMsg {
15776		var err error
15777		switch key {
15778		case "typeProperties":
15779			err = unpopulate(val, &h.TypeProperties)
15780			delete(rawMsg, key)
15781		}
15782		if err != nil {
15783			return err
15784		}
15785	}
15786	return h.ExecutionActivity.unmarshalInternal(rawMsg)
15787}
15788
15789// HDInsightStreamingActivityTypeProperties - HDInsight streaming activity properties.
15790type HDInsightStreamingActivityTypeProperties struct {
15791	// REQUIRED; Paths to streaming job files. Can be directories.
15792	FilePaths []interface{} `json:"filePaths,omitempty"`
15793
15794	// REQUIRED; Input blob path. Type: string (or Expression with resultType string).
15795	Input interface{} `json:"input,omitempty"`
15796
15797	// REQUIRED; Mapper executable name. Type: string (or Expression with resultType string).
15798	Mapper interface{} `json:"mapper,omitempty"`
15799
15800	// REQUIRED; Output blob path. Type: string (or Expression with resultType string).
15801	Output interface{} `json:"output,omitempty"`
15802
15803	// REQUIRED; Reducer executable name. Type: string (or Expression with resultType string).
15804	Reducer interface{} `json:"reducer,omitempty"`
15805
15806	// User specified arguments to HDInsightActivity.
15807	Arguments []interface{} `json:"arguments,omitempty"`
15808
15809	// Combiner executable name. Type: string (or Expression with resultType string).
15810	Combiner interface{} `json:"combiner,omitempty"`
15811
15812	// Command line environment values.
15813	CommandEnvironment []interface{} `json:"commandEnvironment,omitempty"`
15814
15815	// Allows user to specify defines for streaming job request.
15816	Defines map[string]interface{} `json:"defines,omitempty"`
15817
15818	// Linked service reference where the files are located.
15819	FileLinkedService *LinkedServiceReference `json:"fileLinkedService,omitempty"`
15820
15821	// Debug info option.
15822	GetDebugInfo *HDInsightActivityDebugInfoOption `json:"getDebugInfo,omitempty"`
15823
15824	// Storage linked service references.
15825	StorageLinkedServices []*LinkedServiceReference `json:"storageLinkedServices,omitempty"`
15826}
15827
15828// MarshalJSON implements the json.Marshaller interface for type HDInsightStreamingActivityTypeProperties.
15829func (h HDInsightStreamingActivityTypeProperties) MarshalJSON() ([]byte, error) {
15830	objectMap := make(map[string]interface{})
15831	populate(objectMap, "arguments", h.Arguments)
15832	populate(objectMap, "combiner", h.Combiner)
15833	populate(objectMap, "commandEnvironment", h.CommandEnvironment)
15834	populate(objectMap, "defines", h.Defines)
15835	populate(objectMap, "fileLinkedService", h.FileLinkedService)
15836	populate(objectMap, "filePaths", h.FilePaths)
15837	populate(objectMap, "getDebugInfo", h.GetDebugInfo)
15838	populate(objectMap, "input", h.Input)
15839	populate(objectMap, "mapper", h.Mapper)
15840	populate(objectMap, "output", h.Output)
15841	populate(objectMap, "reducer", h.Reducer)
15842	populate(objectMap, "storageLinkedServices", h.StorageLinkedServices)
15843	return json.Marshal(objectMap)
15844}
15845
15846// HTTPDataset - A file in an HTTP web server.
15847type HTTPDataset struct {
15848	Dataset
15849	// Properties specific to this dataset type.
15850	TypeProperties *HTTPDatasetTypeProperties `json:"typeProperties,omitempty"`
15851}
15852
15853// MarshalJSON implements the json.Marshaller interface for type HTTPDataset.
15854func (h HTTPDataset) MarshalJSON() ([]byte, error) {
15855	objectMap := h.Dataset.marshalInternal("HttpFile")
15856	populate(objectMap, "typeProperties", h.TypeProperties)
15857	return json.Marshal(objectMap)
15858}
15859
15860// UnmarshalJSON implements the json.Unmarshaller interface for type HTTPDataset.
15861func (h *HTTPDataset) UnmarshalJSON(data []byte) error {
15862	var rawMsg map[string]json.RawMessage
15863	if err := json.Unmarshal(data, &rawMsg); err != nil {
15864		return err
15865	}
15866	for key, val := range rawMsg {
15867		var err error
15868		switch key {
15869		case "typeProperties":
15870			err = unpopulate(val, &h.TypeProperties)
15871			delete(rawMsg, key)
15872		}
15873		if err != nil {
15874			return err
15875		}
15876	}
15877	return h.Dataset.unmarshalInternal(rawMsg)
15878}
15879
15880// HTTPDatasetTypeProperties - Properties specific to this dataset type.
15881type HTTPDatasetTypeProperties struct {
15882	// The headers for the HTTP Request. e.g. request-header-name-1:request-header-value-1 … request-header-name-n:request-header-value-n Type: string (or Expression
15883	// with resultType string).
15884	AdditionalHeaders interface{} `json:"additionalHeaders,omitempty"`
15885
15886	// The data compression method used on files.
15887	Compression DatasetCompressionClassification `json:"compression,omitempty"`
15888
15889	// The format of files.
15890	Format DatasetStorageFormatClassification `json:"format,omitempty"`
15891
15892	// The relative URL based on the URL in the HttpLinkedService refers to an HTTP file Type: string (or Expression with resultType string).
15893	RelativeURL interface{} `json:"relativeUrl,omitempty"`
15894
15895	// The body for the HTTP request. Type: string (or Expression with resultType string).
15896	RequestBody interface{} `json:"requestBody,omitempty"`
15897
15898	// The HTTP method for the HTTP request. Type: string (or Expression with resultType string).
15899	RequestMethod interface{} `json:"requestMethod,omitempty"`
15900}
15901
15902// MarshalJSON implements the json.Marshaller interface for type HTTPDatasetTypeProperties.
15903func (h HTTPDatasetTypeProperties) MarshalJSON() ([]byte, error) {
15904	objectMap := make(map[string]interface{})
15905	populate(objectMap, "additionalHeaders", h.AdditionalHeaders)
15906	populate(objectMap, "compression", h.Compression)
15907	populate(objectMap, "format", h.Format)
15908	populate(objectMap, "relativeUrl", h.RelativeURL)
15909	populate(objectMap, "requestBody", h.RequestBody)
15910	populate(objectMap, "requestMethod", h.RequestMethod)
15911	return json.Marshal(objectMap)
15912}
15913
15914// UnmarshalJSON implements the json.Unmarshaller interface for type HTTPDatasetTypeProperties.
15915func (h *HTTPDatasetTypeProperties) UnmarshalJSON(data []byte) error {
15916	var rawMsg map[string]json.RawMessage
15917	if err := json.Unmarshal(data, &rawMsg); err != nil {
15918		return err
15919	}
15920	for key, val := range rawMsg {
15921		var err error
15922		switch key {
15923		case "additionalHeaders":
15924			err = unpopulate(val, &h.AdditionalHeaders)
15925			delete(rawMsg, key)
15926		case "compression":
15927			h.Compression, err = unmarshalDatasetCompressionClassification(val)
15928			delete(rawMsg, key)
15929		case "format":
15930			h.Format, err = unmarshalDatasetStorageFormatClassification(val)
15931			delete(rawMsg, key)
15932		case "relativeUrl":
15933			err = unpopulate(val, &h.RelativeURL)
15934			delete(rawMsg, key)
15935		case "requestBody":
15936			err = unpopulate(val, &h.RequestBody)
15937			delete(rawMsg, key)
15938		case "requestMethod":
15939			err = unpopulate(val, &h.RequestMethod)
15940			delete(rawMsg, key)
15941		}
15942		if err != nil {
15943			return err
15944		}
15945	}
15946	return nil
15947}
15948
15949// HTTPLinkedService - Linked service for an HTTP source.
15950type HTTPLinkedService struct {
15951	LinkedService
15952	// REQUIRED; Properties specific to this linked service type.
15953	TypeProperties *HTTPLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
15954}
15955
15956// MarshalJSON implements the json.Marshaller interface for type HTTPLinkedService.
15957func (h HTTPLinkedService) MarshalJSON() ([]byte, error) {
15958	objectMap := h.LinkedService.marshalInternal("HttpServer")
15959	populate(objectMap, "typeProperties", h.TypeProperties)
15960	return json.Marshal(objectMap)
15961}
15962
15963// UnmarshalJSON implements the json.Unmarshaller interface for type HTTPLinkedService.
15964func (h *HTTPLinkedService) UnmarshalJSON(data []byte) error {
15965	var rawMsg map[string]json.RawMessage
15966	if err := json.Unmarshal(data, &rawMsg); err != nil {
15967		return err
15968	}
15969	for key, val := range rawMsg {
15970		var err error
15971		switch key {
15972		case "typeProperties":
15973			err = unpopulate(val, &h.TypeProperties)
15974			delete(rawMsg, key)
15975		}
15976		if err != nil {
15977			return err
15978		}
15979	}
15980	return h.LinkedService.unmarshalInternal(rawMsg)
15981}
15982
15983// HTTPLinkedServiceTypeProperties - Properties specific to this linked service type.
15984type HTTPLinkedServiceTypeProperties struct {
15985	// REQUIRED; The base URL of the HTTP endpoint, e.g. http://www.microsoft.com. Type: string (or Expression with resultType string).
15986	URL interface{} `json:"url,omitempty"`
15987
15988	// The authentication type to be used to connect to the HTTP server.
15989	AuthenticationType *HTTPAuthenticationType `json:"authenticationType,omitempty"`
15990
15991	// Thumbprint of certificate for ClientCertificate authentication. Only valid for on-premises copy. For on-premises copy with ClientCertificate authentication,
15992	// either CertThumbprint or
15993	// EmbeddedCertData/Password should be specified. Type: string (or Expression with resultType string).
15994	CertThumbprint interface{} `json:"certThumbprint,omitempty"`
15995
15996	// Base64 encoded certificate data for ClientCertificate authentication. For on-premises copy with ClientCertificate authentication, either CertThumbprint
15997	// or EmbeddedCertData/Password should be
15998	// specified. Type: string (or Expression with resultType string).
15999	EmbeddedCertData interface{} `json:"embeddedCertData,omitempty"`
16000
16001	// If true, validate the HTTPS server SSL certificate. Default value is true. Type: boolean (or Expression with resultType boolean).
16002	EnableServerCertificateValidation interface{} `json:"enableServerCertificateValidation,omitempty"`
16003
16004	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
16005	// with resultType string).
16006	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
16007
16008	// Password for Basic, Digest, Windows, or ClientCertificate with EmbeddedCertData authentication.
16009	Password SecretBaseClassification `json:"password,omitempty"`
16010
16011	// User name for Basic, Digest, or Windows authentication. Type: string (or Expression with resultType string).
16012	UserName interface{} `json:"userName,omitempty"`
16013}
16014
16015// MarshalJSON implements the json.Marshaller interface for type HTTPLinkedServiceTypeProperties.
16016func (h HTTPLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
16017	objectMap := make(map[string]interface{})
16018	populate(objectMap, "authenticationType", h.AuthenticationType)
16019	populate(objectMap, "certThumbprint", h.CertThumbprint)
16020	populate(objectMap, "embeddedCertData", h.EmbeddedCertData)
16021	populate(objectMap, "enableServerCertificateValidation", h.EnableServerCertificateValidation)
16022	populate(objectMap, "encryptedCredential", h.EncryptedCredential)
16023	populate(objectMap, "password", h.Password)
16024	populate(objectMap, "url", h.URL)
16025	populate(objectMap, "userName", h.UserName)
16026	return json.Marshal(objectMap)
16027}
16028
16029// UnmarshalJSON implements the json.Unmarshaller interface for type HTTPLinkedServiceTypeProperties.
16030func (h *HTTPLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
16031	var rawMsg map[string]json.RawMessage
16032	if err := json.Unmarshal(data, &rawMsg); err != nil {
16033		return err
16034	}
16035	for key, val := range rawMsg {
16036		var err error
16037		switch key {
16038		case "authenticationType":
16039			err = unpopulate(val, &h.AuthenticationType)
16040			delete(rawMsg, key)
16041		case "certThumbprint":
16042			err = unpopulate(val, &h.CertThumbprint)
16043			delete(rawMsg, key)
16044		case "embeddedCertData":
16045			err = unpopulate(val, &h.EmbeddedCertData)
16046			delete(rawMsg, key)
16047		case "enableServerCertificateValidation":
16048			err = unpopulate(val, &h.EnableServerCertificateValidation)
16049			delete(rawMsg, key)
16050		case "encryptedCredential":
16051			err = unpopulate(val, &h.EncryptedCredential)
16052			delete(rawMsg, key)
16053		case "password":
16054			h.Password, err = unmarshalSecretBaseClassification(val)
16055			delete(rawMsg, key)
16056		case "url":
16057			err = unpopulate(val, &h.URL)
16058			delete(rawMsg, key)
16059		case "userName":
16060			err = unpopulate(val, &h.UserName)
16061			delete(rawMsg, key)
16062		}
16063		if err != nil {
16064			return err
16065		}
16066	}
16067	return nil
16068}
16069
16070// HTTPReadSettings - Sftp read settings.
16071type HTTPReadSettings struct {
16072	StoreReadSettings
16073	// The additional HTTP headers in the request to the RESTful API. Type: string (or Expression with resultType string).
16074	AdditionalHeaders interface{} `json:"additionalHeaders,omitempty"`
16075
16076	// Indicates whether to enable partition discovery.
16077	EnablePartitionDiscovery *bool `json:"enablePartitionDiscovery,omitempty"`
16078
16079	// Specify the root path where partition discovery starts from. Type: string (or Expression with resultType string).
16080	PartitionRootPath interface{} `json:"partitionRootPath,omitempty"`
16081
16082	// The HTTP request body to the RESTful API if requestMethod is POST. Type: string (or Expression with resultType string).
16083	RequestBody interface{} `json:"requestBody,omitempty"`
16084
16085	// The HTTP method used to call the RESTful API. The default is GET. Type: string (or Expression with resultType string).
16086	RequestMethod interface{} `json:"requestMethod,omitempty"`
16087
16088	// Specifies the timeout for a HTTP client to get HTTP response from HTTP server.
16089	RequestTimeout interface{} `json:"requestTimeout,omitempty"`
16090}
16091
16092// MarshalJSON implements the json.Marshaller interface for type HTTPReadSettings.
16093func (h HTTPReadSettings) MarshalJSON() ([]byte, error) {
16094	objectMap := h.StoreReadSettings.marshalInternal("HttpReadSettings")
16095	populate(objectMap, "additionalHeaders", h.AdditionalHeaders)
16096	populate(objectMap, "enablePartitionDiscovery", h.EnablePartitionDiscovery)
16097	populate(objectMap, "partitionRootPath", h.PartitionRootPath)
16098	populate(objectMap, "requestBody", h.RequestBody)
16099	populate(objectMap, "requestMethod", h.RequestMethod)
16100	populate(objectMap, "requestTimeout", h.RequestTimeout)
16101	return json.Marshal(objectMap)
16102}
16103
16104// UnmarshalJSON implements the json.Unmarshaller interface for type HTTPReadSettings.
16105func (h *HTTPReadSettings) UnmarshalJSON(data []byte) error {
16106	var rawMsg map[string]json.RawMessage
16107	if err := json.Unmarshal(data, &rawMsg); err != nil {
16108		return err
16109	}
16110	for key, val := range rawMsg {
16111		var err error
16112		switch key {
16113		case "additionalHeaders":
16114			err = unpopulate(val, &h.AdditionalHeaders)
16115			delete(rawMsg, key)
16116		case "enablePartitionDiscovery":
16117			err = unpopulate(val, &h.EnablePartitionDiscovery)
16118			delete(rawMsg, key)
16119		case "partitionRootPath":
16120			err = unpopulate(val, &h.PartitionRootPath)
16121			delete(rawMsg, key)
16122		case "requestBody":
16123			err = unpopulate(val, &h.RequestBody)
16124			delete(rawMsg, key)
16125		case "requestMethod":
16126			err = unpopulate(val, &h.RequestMethod)
16127			delete(rawMsg, key)
16128		case "requestTimeout":
16129			err = unpopulate(val, &h.RequestTimeout)
16130			delete(rawMsg, key)
16131		}
16132		if err != nil {
16133			return err
16134		}
16135	}
16136	return h.StoreReadSettings.unmarshalInternal(rawMsg)
16137}
16138
16139// HTTPServerLocation - The location of http server.
16140type HTTPServerLocation struct {
16141	DatasetLocation
16142	// Specify the relativeUrl of http server. Type: string (or Expression with resultType string)
16143	RelativeURL interface{} `json:"relativeUrl,omitempty"`
16144}
16145
16146// MarshalJSON implements the json.Marshaller interface for type HTTPServerLocation.
16147func (h HTTPServerLocation) MarshalJSON() ([]byte, error) {
16148	objectMap := h.DatasetLocation.marshalInternal("HttpServerLocation")
16149	populate(objectMap, "relativeUrl", h.RelativeURL)
16150	return json.Marshal(objectMap)
16151}
16152
16153// UnmarshalJSON implements the json.Unmarshaller interface for type HTTPServerLocation.
16154func (h *HTTPServerLocation) UnmarshalJSON(data []byte) error {
16155	var rawMsg map[string]json.RawMessage
16156	if err := json.Unmarshal(data, &rawMsg); err != nil {
16157		return err
16158	}
16159	for key, val := range rawMsg {
16160		var err error
16161		switch key {
16162		case "relativeUrl":
16163			err = unpopulate(val, &h.RelativeURL)
16164			delete(rawMsg, key)
16165		}
16166		if err != nil {
16167			return err
16168		}
16169	}
16170	return h.DatasetLocation.unmarshalInternal(rawMsg)
16171}
16172
16173// HTTPSource - A copy activity source for an HTTP file.
16174type HTTPSource struct {
16175	CopySource
16176	// Specifies the timeout for a HTTP client to get HTTP response from HTTP server. The default value is equivalent to System.Net.HttpWebRequest.Timeout.
16177	// Type: string (or Expression with resultType
16178	// string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
16179	HTTPRequestTimeout interface{} `json:"httpRequestTimeout,omitempty"`
16180}
16181
16182// MarshalJSON implements the json.Marshaller interface for type HTTPSource.
16183func (h HTTPSource) MarshalJSON() ([]byte, error) {
16184	objectMap := h.CopySource.marshalInternal("HttpSource")
16185	populate(objectMap, "httpRequestTimeout", h.HTTPRequestTimeout)
16186	return json.Marshal(objectMap)
16187}
16188
16189// UnmarshalJSON implements the json.Unmarshaller interface for type HTTPSource.
16190func (h *HTTPSource) UnmarshalJSON(data []byte) error {
16191	var rawMsg map[string]json.RawMessage
16192	if err := json.Unmarshal(data, &rawMsg); err != nil {
16193		return err
16194	}
16195	for key, val := range rawMsg {
16196		var err error
16197		switch key {
16198		case "httpRequestTimeout":
16199			err = unpopulate(val, &h.HTTPRequestTimeout)
16200			delete(rawMsg, key)
16201		}
16202		if err != nil {
16203			return err
16204		}
16205	}
16206	return h.CopySource.unmarshalInternal(rawMsg)
16207}
16208
16209// HdfsLinkedService - Hadoop Distributed File System (HDFS) linked service.
16210type HdfsLinkedService struct {
16211	LinkedService
16212	// REQUIRED; HDFS linked service properties.
16213	TypeProperties *HdfsLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
16214}
16215
16216// MarshalJSON implements the json.Marshaller interface for type HdfsLinkedService.
16217func (h HdfsLinkedService) MarshalJSON() ([]byte, error) {
16218	objectMap := h.LinkedService.marshalInternal("Hdfs")
16219	populate(objectMap, "typeProperties", h.TypeProperties)
16220	return json.Marshal(objectMap)
16221}
16222
16223// UnmarshalJSON implements the json.Unmarshaller interface for type HdfsLinkedService.
16224func (h *HdfsLinkedService) UnmarshalJSON(data []byte) error {
16225	var rawMsg map[string]json.RawMessage
16226	if err := json.Unmarshal(data, &rawMsg); err != nil {
16227		return err
16228	}
16229	for key, val := range rawMsg {
16230		var err error
16231		switch key {
16232		case "typeProperties":
16233			err = unpopulate(val, &h.TypeProperties)
16234			delete(rawMsg, key)
16235		}
16236		if err != nil {
16237			return err
16238		}
16239	}
16240	return h.LinkedService.unmarshalInternal(rawMsg)
16241}
16242
16243// HdfsLinkedServiceTypeProperties - HDFS linked service properties.
16244type HdfsLinkedServiceTypeProperties struct {
16245	// REQUIRED; The URL of the HDFS service endpoint, e.g. http://myhostname:50070/webhdfs/v1 . Type: string (or Expression with resultType string).
16246	URL interface{} `json:"url,omitempty"`
16247
16248	// Type of authentication used to connect to the HDFS. Possible values are: Anonymous and Windows. Type: string (or Expression with resultType string).
16249	AuthenticationType interface{} `json:"authenticationType,omitempty"`
16250
16251	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
16252	// with resultType string).
16253	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
16254
16255	// Password for Windows authentication.
16256	Password SecretBaseClassification `json:"password,omitempty"`
16257
16258	// User name for Windows authentication. Type: string (or Expression with resultType string).
16259	UserName interface{} `json:"userName,omitempty"`
16260}
16261
16262// MarshalJSON implements the json.Marshaller interface for type HdfsLinkedServiceTypeProperties.
16263func (h HdfsLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
16264	objectMap := make(map[string]interface{})
16265	populate(objectMap, "authenticationType", h.AuthenticationType)
16266	populate(objectMap, "encryptedCredential", h.EncryptedCredential)
16267	populate(objectMap, "password", h.Password)
16268	populate(objectMap, "url", h.URL)
16269	populate(objectMap, "userName", h.UserName)
16270	return json.Marshal(objectMap)
16271}
16272
16273// UnmarshalJSON implements the json.Unmarshaller interface for type HdfsLinkedServiceTypeProperties.
16274func (h *HdfsLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
16275	var rawMsg map[string]json.RawMessage
16276	if err := json.Unmarshal(data, &rawMsg); err != nil {
16277		return err
16278	}
16279	for key, val := range rawMsg {
16280		var err error
16281		switch key {
16282		case "authenticationType":
16283			err = unpopulate(val, &h.AuthenticationType)
16284			delete(rawMsg, key)
16285		case "encryptedCredential":
16286			err = unpopulate(val, &h.EncryptedCredential)
16287			delete(rawMsg, key)
16288		case "password":
16289			h.Password, err = unmarshalSecretBaseClassification(val)
16290			delete(rawMsg, key)
16291		case "url":
16292			err = unpopulate(val, &h.URL)
16293			delete(rawMsg, key)
16294		case "userName":
16295			err = unpopulate(val, &h.UserName)
16296			delete(rawMsg, key)
16297		}
16298		if err != nil {
16299			return err
16300		}
16301	}
16302	return nil
16303}
16304
16305// HdfsLocation - The location of HDFS.
16306type HdfsLocation struct {
16307	DatasetLocation
16308}
16309
16310// MarshalJSON implements the json.Marshaller interface for type HdfsLocation.
16311func (h HdfsLocation) MarshalJSON() ([]byte, error) {
16312	objectMap := h.DatasetLocation.marshalInternal("HdfsLocation")
16313	return json.Marshal(objectMap)
16314}
16315
16316// HdfsReadSettings - HDFS read settings.
16317type HdfsReadSettings struct {
16318	StoreReadSettings
16319	// Indicates whether the source files need to be deleted after copy completion. Default is false. Type: boolean (or Expression with resultType boolean).
16320	DeleteFilesAfterCompletion interface{} `json:"deleteFilesAfterCompletion,omitempty"`
16321
16322	// Specifies Distcp-related settings.
16323	DistcpSettings *DistcpSettings `json:"distcpSettings,omitempty"`
16324
16325	// Indicates whether to enable partition discovery.
16326	EnablePartitionDiscovery *bool `json:"enablePartitionDiscovery,omitempty"`
16327
16328	// Point to a text file that lists each file (relative path to the path configured in the dataset) that you want to copy. Type: string (or Expression with
16329	// resultType string).
16330	FileListPath interface{} `json:"fileListPath,omitempty"`
16331
16332	// The end of file's modified datetime. Type: string (or Expression with resultType string).
16333	ModifiedDatetimeEnd interface{} `json:"modifiedDatetimeEnd,omitempty"`
16334
16335	// The start of file's modified datetime. Type: string (or Expression with resultType string).
16336	ModifiedDatetimeStart interface{} `json:"modifiedDatetimeStart,omitempty"`
16337
16338	// Specify the root path where partition discovery starts from. Type: string (or Expression with resultType string).
16339	PartitionRootPath interface{} `json:"partitionRootPath,omitempty"`
16340
16341	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
16342	Recursive interface{} `json:"recursive,omitempty"`
16343
16344	// HDFS wildcardFileName. Type: string (or Expression with resultType string).
16345	WildcardFileName interface{} `json:"wildcardFileName,omitempty"`
16346
16347	// HDFS wildcardFolderPath. Type: string (or Expression with resultType string).
16348	WildcardFolderPath interface{} `json:"wildcardFolderPath,omitempty"`
16349}
16350
16351// MarshalJSON implements the json.Marshaller interface for type HdfsReadSettings.
16352func (h HdfsReadSettings) MarshalJSON() ([]byte, error) {
16353	objectMap := h.StoreReadSettings.marshalInternal("HdfsReadSettings")
16354	populate(objectMap, "deleteFilesAfterCompletion", h.DeleteFilesAfterCompletion)
16355	populate(objectMap, "distcpSettings", h.DistcpSettings)
16356	populate(objectMap, "enablePartitionDiscovery", h.EnablePartitionDiscovery)
16357	populate(objectMap, "fileListPath", h.FileListPath)
16358	populate(objectMap, "modifiedDatetimeEnd", h.ModifiedDatetimeEnd)
16359	populate(objectMap, "modifiedDatetimeStart", h.ModifiedDatetimeStart)
16360	populate(objectMap, "partitionRootPath", h.PartitionRootPath)
16361	populate(objectMap, "recursive", h.Recursive)
16362	populate(objectMap, "wildcardFileName", h.WildcardFileName)
16363	populate(objectMap, "wildcardFolderPath", h.WildcardFolderPath)
16364	return json.Marshal(objectMap)
16365}
16366
16367// UnmarshalJSON implements the json.Unmarshaller interface for type HdfsReadSettings.
16368func (h *HdfsReadSettings) UnmarshalJSON(data []byte) error {
16369	var rawMsg map[string]json.RawMessage
16370	if err := json.Unmarshal(data, &rawMsg); err != nil {
16371		return err
16372	}
16373	for key, val := range rawMsg {
16374		var err error
16375		switch key {
16376		case "deleteFilesAfterCompletion":
16377			err = unpopulate(val, &h.DeleteFilesAfterCompletion)
16378			delete(rawMsg, key)
16379		case "distcpSettings":
16380			err = unpopulate(val, &h.DistcpSettings)
16381			delete(rawMsg, key)
16382		case "enablePartitionDiscovery":
16383			err = unpopulate(val, &h.EnablePartitionDiscovery)
16384			delete(rawMsg, key)
16385		case "fileListPath":
16386			err = unpopulate(val, &h.FileListPath)
16387			delete(rawMsg, key)
16388		case "modifiedDatetimeEnd":
16389			err = unpopulate(val, &h.ModifiedDatetimeEnd)
16390			delete(rawMsg, key)
16391		case "modifiedDatetimeStart":
16392			err = unpopulate(val, &h.ModifiedDatetimeStart)
16393			delete(rawMsg, key)
16394		case "partitionRootPath":
16395			err = unpopulate(val, &h.PartitionRootPath)
16396			delete(rawMsg, key)
16397		case "recursive":
16398			err = unpopulate(val, &h.Recursive)
16399			delete(rawMsg, key)
16400		case "wildcardFileName":
16401			err = unpopulate(val, &h.WildcardFileName)
16402			delete(rawMsg, key)
16403		case "wildcardFolderPath":
16404			err = unpopulate(val, &h.WildcardFolderPath)
16405			delete(rawMsg, key)
16406		}
16407		if err != nil {
16408			return err
16409		}
16410	}
16411	return h.StoreReadSettings.unmarshalInternal(rawMsg)
16412}
16413
16414// HdfsSource - A copy activity HDFS source.
16415type HdfsSource struct {
16416	CopySource
16417	// Specifies Distcp-related settings.
16418	DistcpSettings *DistcpSettings `json:"distcpSettings,omitempty"`
16419
16420	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
16421	Recursive interface{} `json:"recursive,omitempty"`
16422}
16423
16424// MarshalJSON implements the json.Marshaller interface for type HdfsSource.
16425func (h HdfsSource) MarshalJSON() ([]byte, error) {
16426	objectMap := h.CopySource.marshalInternal("HdfsSource")
16427	populate(objectMap, "distcpSettings", h.DistcpSettings)
16428	populate(objectMap, "recursive", h.Recursive)
16429	return json.Marshal(objectMap)
16430}
16431
16432// UnmarshalJSON implements the json.Unmarshaller interface for type HdfsSource.
16433func (h *HdfsSource) UnmarshalJSON(data []byte) error {
16434	var rawMsg map[string]json.RawMessage
16435	if err := json.Unmarshal(data, &rawMsg); err != nil {
16436		return err
16437	}
16438	for key, val := range rawMsg {
16439		var err error
16440		switch key {
16441		case "distcpSettings":
16442			err = unpopulate(val, &h.DistcpSettings)
16443			delete(rawMsg, key)
16444		case "recursive":
16445			err = unpopulate(val, &h.Recursive)
16446			delete(rawMsg, key)
16447		}
16448		if err != nil {
16449			return err
16450		}
16451	}
16452	return h.CopySource.unmarshalInternal(rawMsg)
16453}
16454
16455// HiveDatasetTypeProperties - Hive Properties
16456type HiveDatasetTypeProperties struct {
16457	// The schema name of the Hive. Type: string (or Expression with resultType string).
16458	Schema interface{} `json:"schema,omitempty"`
16459
16460	// The table name of the Hive. Type: string (or Expression with resultType string).
16461	Table interface{} `json:"table,omitempty"`
16462
16463	// This property will be retired. Please consider using schema + table properties instead.
16464	TableName interface{} `json:"tableName,omitempty"`
16465}
16466
16467// HiveLinkedService - Hive Server linked service.
16468type HiveLinkedService struct {
16469	LinkedService
16470	// REQUIRED; Hive Server linked service properties.
16471	TypeProperties *HiveLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
16472}
16473
16474// MarshalJSON implements the json.Marshaller interface for type HiveLinkedService.
16475func (h HiveLinkedService) MarshalJSON() ([]byte, error) {
16476	objectMap := h.LinkedService.marshalInternal("Hive")
16477	populate(objectMap, "typeProperties", h.TypeProperties)
16478	return json.Marshal(objectMap)
16479}
16480
16481// UnmarshalJSON implements the json.Unmarshaller interface for type HiveLinkedService.
16482func (h *HiveLinkedService) UnmarshalJSON(data []byte) error {
16483	var rawMsg map[string]json.RawMessage
16484	if err := json.Unmarshal(data, &rawMsg); err != nil {
16485		return err
16486	}
16487	for key, val := range rawMsg {
16488		var err error
16489		switch key {
16490		case "typeProperties":
16491			err = unpopulate(val, &h.TypeProperties)
16492			delete(rawMsg, key)
16493		}
16494		if err != nil {
16495			return err
16496		}
16497	}
16498	return h.LinkedService.unmarshalInternal(rawMsg)
16499}
16500
16501// HiveLinkedServiceTypeProperties - Hive Server linked service properties.
16502type HiveLinkedServiceTypeProperties struct {
16503	// REQUIRED; The authentication method used to access the Hive server.
16504	AuthenticationType *HiveAuthenticationType `json:"authenticationType,omitempty"`
16505
16506	// REQUIRED; IP address or host name of the Hive server, separated by ';' for multiple hosts (only when serviceDiscoveryMode is enable).
16507	Host interface{} `json:"host,omitempty"`
16508
16509	// Specifies whether to require a CA-issued SSL certificate name to match the host name of the server when connecting over SSL. The default value is false.
16510	AllowHostNameCNMismatch interface{} `json:"allowHostNameCNMismatch,omitempty"`
16511
16512	// Specifies whether to allow self-signed certificates from the server. The default value is false.
16513	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
16514
16515	// Specifies whether the connections to the server are encrypted using SSL. The default value is false.
16516	EnableSSL interface{} `json:"enableSsl,omitempty"`
16517
16518	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
16519	// with resultType string).
16520	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
16521
16522	// The partial URL corresponding to the Hive server.
16523	HTTPPath interface{} `json:"httpPath,omitempty"`
16524
16525	// The password corresponding to the user name that you provided in the Username field
16526	Password SecretBaseClassification `json:"password,omitempty"`
16527
16528	// The TCP port that the Hive server uses to listen for client connections.
16529	Port interface{} `json:"port,omitempty"`
16530
16531	// The type of Hive server.
16532	ServerType *HiveServerType `json:"serverType,omitempty"`
16533
16534	// true to indicate using the ZooKeeper service, false not.
16535	ServiceDiscoveryMode interface{} `json:"serviceDiscoveryMode,omitempty"`
16536
16537	// The transport protocol to use in the Thrift layer.
16538	ThriftTransportProtocol *HiveThriftTransportProtocol `json:"thriftTransportProtocol,omitempty"`
16539
16540	// The full path of the .pem file containing trusted CA certificates for verifying the server when connecting over SSL. This property can only be set when
16541	// using SSL on self-hosted IR. The default value
16542	// is the cacerts.pem file installed with the IR.
16543	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
16544
16545	// Specifies whether the driver uses native HiveQL queries,or converts them into an equivalent form in HiveQL.
16546	UseNativeQuery interface{} `json:"useNativeQuery,omitempty"`
16547
16548	// Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.
16549	UseSystemTrustStore interface{} `json:"useSystemTrustStore,omitempty"`
16550
16551	// The user name that you use to access Hive Server.
16552	Username interface{} `json:"username,omitempty"`
16553
16554	// The namespace on ZooKeeper under which Hive Server 2 nodes are added.
16555	ZooKeeperNameSpace interface{} `json:"zooKeeperNameSpace,omitempty"`
16556}
16557
16558// MarshalJSON implements the json.Marshaller interface for type HiveLinkedServiceTypeProperties.
16559func (h HiveLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
16560	objectMap := make(map[string]interface{})
16561	populate(objectMap, "allowHostNameCNMismatch", h.AllowHostNameCNMismatch)
16562	populate(objectMap, "allowSelfSignedServerCert", h.AllowSelfSignedServerCert)
16563	populate(objectMap, "authenticationType", h.AuthenticationType)
16564	populate(objectMap, "enableSsl", h.EnableSSL)
16565	populate(objectMap, "encryptedCredential", h.EncryptedCredential)
16566	populate(objectMap, "httpPath", h.HTTPPath)
16567	populate(objectMap, "host", h.Host)
16568	populate(objectMap, "password", h.Password)
16569	populate(objectMap, "port", h.Port)
16570	populate(objectMap, "serverType", h.ServerType)
16571	populate(objectMap, "serviceDiscoveryMode", h.ServiceDiscoveryMode)
16572	populate(objectMap, "thriftTransportProtocol", h.ThriftTransportProtocol)
16573	populate(objectMap, "trustedCertPath", h.TrustedCertPath)
16574	populate(objectMap, "useNativeQuery", h.UseNativeQuery)
16575	populate(objectMap, "useSystemTrustStore", h.UseSystemTrustStore)
16576	populate(objectMap, "username", h.Username)
16577	populate(objectMap, "zooKeeperNameSpace", h.ZooKeeperNameSpace)
16578	return json.Marshal(objectMap)
16579}
16580
16581// UnmarshalJSON implements the json.Unmarshaller interface for type HiveLinkedServiceTypeProperties.
16582func (h *HiveLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
16583	var rawMsg map[string]json.RawMessage
16584	if err := json.Unmarshal(data, &rawMsg); err != nil {
16585		return err
16586	}
16587	for key, val := range rawMsg {
16588		var err error
16589		switch key {
16590		case "allowHostNameCNMismatch":
16591			err = unpopulate(val, &h.AllowHostNameCNMismatch)
16592			delete(rawMsg, key)
16593		case "allowSelfSignedServerCert":
16594			err = unpopulate(val, &h.AllowSelfSignedServerCert)
16595			delete(rawMsg, key)
16596		case "authenticationType":
16597			err = unpopulate(val, &h.AuthenticationType)
16598			delete(rawMsg, key)
16599		case "enableSsl":
16600			err = unpopulate(val, &h.EnableSSL)
16601			delete(rawMsg, key)
16602		case "encryptedCredential":
16603			err = unpopulate(val, &h.EncryptedCredential)
16604			delete(rawMsg, key)
16605		case "httpPath":
16606			err = unpopulate(val, &h.HTTPPath)
16607			delete(rawMsg, key)
16608		case "host":
16609			err = unpopulate(val, &h.Host)
16610			delete(rawMsg, key)
16611		case "password":
16612			h.Password, err = unmarshalSecretBaseClassification(val)
16613			delete(rawMsg, key)
16614		case "port":
16615			err = unpopulate(val, &h.Port)
16616			delete(rawMsg, key)
16617		case "serverType":
16618			err = unpopulate(val, &h.ServerType)
16619			delete(rawMsg, key)
16620		case "serviceDiscoveryMode":
16621			err = unpopulate(val, &h.ServiceDiscoveryMode)
16622			delete(rawMsg, key)
16623		case "thriftTransportProtocol":
16624			err = unpopulate(val, &h.ThriftTransportProtocol)
16625			delete(rawMsg, key)
16626		case "trustedCertPath":
16627			err = unpopulate(val, &h.TrustedCertPath)
16628			delete(rawMsg, key)
16629		case "useNativeQuery":
16630			err = unpopulate(val, &h.UseNativeQuery)
16631			delete(rawMsg, key)
16632		case "useSystemTrustStore":
16633			err = unpopulate(val, &h.UseSystemTrustStore)
16634			delete(rawMsg, key)
16635		case "username":
16636			err = unpopulate(val, &h.Username)
16637			delete(rawMsg, key)
16638		case "zooKeeperNameSpace":
16639			err = unpopulate(val, &h.ZooKeeperNameSpace)
16640			delete(rawMsg, key)
16641		}
16642		if err != nil {
16643			return err
16644		}
16645	}
16646	return nil
16647}
16648
16649// HiveObjectDataset - Hive Server dataset.
16650type HiveObjectDataset struct {
16651	Dataset
16652	// Properties specific to this dataset type.
16653	TypeProperties *HiveDatasetTypeProperties `json:"typeProperties,omitempty"`
16654}
16655
16656// MarshalJSON implements the json.Marshaller interface for type HiveObjectDataset.
16657func (h HiveObjectDataset) MarshalJSON() ([]byte, error) {
16658	objectMap := h.Dataset.marshalInternal("HiveObject")
16659	populate(objectMap, "typeProperties", h.TypeProperties)
16660	return json.Marshal(objectMap)
16661}
16662
16663// UnmarshalJSON implements the json.Unmarshaller interface for type HiveObjectDataset.
16664func (h *HiveObjectDataset) UnmarshalJSON(data []byte) error {
16665	var rawMsg map[string]json.RawMessage
16666	if err := json.Unmarshal(data, &rawMsg); err != nil {
16667		return err
16668	}
16669	for key, val := range rawMsg {
16670		var err error
16671		switch key {
16672		case "typeProperties":
16673			err = unpopulate(val, &h.TypeProperties)
16674			delete(rawMsg, key)
16675		}
16676		if err != nil {
16677			return err
16678		}
16679	}
16680	return h.Dataset.unmarshalInternal(rawMsg)
16681}
16682
16683// HiveSource - A copy activity Hive Server source.
16684type HiveSource struct {
16685	TabularSource
16686	// A query to retrieve data from source. Type: string (or Expression with resultType string).
16687	Query interface{} `json:"query,omitempty"`
16688}
16689
16690// MarshalJSON implements the json.Marshaller interface for type HiveSource.
16691func (h HiveSource) MarshalJSON() ([]byte, error) {
16692	objectMap := h.TabularSource.marshalInternal("HiveSource")
16693	populate(objectMap, "query", h.Query)
16694	return json.Marshal(objectMap)
16695}
16696
16697// UnmarshalJSON implements the json.Unmarshaller interface for type HiveSource.
16698func (h *HiveSource) UnmarshalJSON(data []byte) error {
16699	var rawMsg map[string]json.RawMessage
16700	if err := json.Unmarshal(data, &rawMsg); err != nil {
16701		return err
16702	}
16703	for key, val := range rawMsg {
16704		var err error
16705		switch key {
16706		case "query":
16707			err = unpopulate(val, &h.Query)
16708			delete(rawMsg, key)
16709		}
16710		if err != nil {
16711			return err
16712		}
16713	}
16714	return h.TabularSource.unmarshalInternal(rawMsg)
16715}
16716
16717// HubspotLinkedService - Hubspot Service linked service.
16718type HubspotLinkedService struct {
16719	LinkedService
16720	// REQUIRED; Hubspot Service linked service properties.
16721	TypeProperties *HubspotLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
16722}
16723
16724// MarshalJSON implements the json.Marshaller interface for type HubspotLinkedService.
16725func (h HubspotLinkedService) MarshalJSON() ([]byte, error) {
16726	objectMap := h.LinkedService.marshalInternal("Hubspot")
16727	populate(objectMap, "typeProperties", h.TypeProperties)
16728	return json.Marshal(objectMap)
16729}
16730
16731// UnmarshalJSON implements the json.Unmarshaller interface for type HubspotLinkedService.
16732func (h *HubspotLinkedService) UnmarshalJSON(data []byte) error {
16733	var rawMsg map[string]json.RawMessage
16734	if err := json.Unmarshal(data, &rawMsg); err != nil {
16735		return err
16736	}
16737	for key, val := range rawMsg {
16738		var err error
16739		switch key {
16740		case "typeProperties":
16741			err = unpopulate(val, &h.TypeProperties)
16742			delete(rawMsg, key)
16743		}
16744		if err != nil {
16745			return err
16746		}
16747	}
16748	return h.LinkedService.unmarshalInternal(rawMsg)
16749}
16750
16751// HubspotLinkedServiceTypeProperties - Hubspot Service linked service properties.
16752type HubspotLinkedServiceTypeProperties struct {
16753	// REQUIRED; The client ID associated with your Hubspot application.
16754	ClientID interface{} `json:"clientId,omitempty"`
16755
16756	// The access token obtained when initially authenticating your OAuth integration.
16757	AccessToken SecretBaseClassification `json:"accessToken,omitempty"`
16758
16759	// The client secret associated with your Hubspot application.
16760	ClientSecret SecretBaseClassification `json:"clientSecret,omitempty"`
16761
16762	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
16763	// with resultType string).
16764	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
16765
16766	// The refresh token obtained when initially authenticating your OAuth integration.
16767	RefreshToken SecretBaseClassification `json:"refreshToken,omitempty"`
16768
16769	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
16770	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
16771
16772	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
16773	// is true.
16774	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
16775
16776	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
16777	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
16778}
16779
16780// MarshalJSON implements the json.Marshaller interface for type HubspotLinkedServiceTypeProperties.
16781func (h HubspotLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
16782	objectMap := make(map[string]interface{})
16783	populate(objectMap, "accessToken", h.AccessToken)
16784	populate(objectMap, "clientId", h.ClientID)
16785	populate(objectMap, "clientSecret", h.ClientSecret)
16786	populate(objectMap, "encryptedCredential", h.EncryptedCredential)
16787	populate(objectMap, "refreshToken", h.RefreshToken)
16788	populate(objectMap, "useEncryptedEndpoints", h.UseEncryptedEndpoints)
16789	populate(objectMap, "useHostVerification", h.UseHostVerification)
16790	populate(objectMap, "usePeerVerification", h.UsePeerVerification)
16791	return json.Marshal(objectMap)
16792}
16793
16794// UnmarshalJSON implements the json.Unmarshaller interface for type HubspotLinkedServiceTypeProperties.
16795func (h *HubspotLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
16796	var rawMsg map[string]json.RawMessage
16797	if err := json.Unmarshal(data, &rawMsg); err != nil {
16798		return err
16799	}
16800	for key, val := range rawMsg {
16801		var err error
16802		switch key {
16803		case "accessToken":
16804			h.AccessToken, err = unmarshalSecretBaseClassification(val)
16805			delete(rawMsg, key)
16806		case "clientId":
16807			err = unpopulate(val, &h.ClientID)
16808			delete(rawMsg, key)
16809		case "clientSecret":
16810			h.ClientSecret, err = unmarshalSecretBaseClassification(val)
16811			delete(rawMsg, key)
16812		case "encryptedCredential":
16813			err = unpopulate(val, &h.EncryptedCredential)
16814			delete(rawMsg, key)
16815		case "refreshToken":
16816			h.RefreshToken, err = unmarshalSecretBaseClassification(val)
16817			delete(rawMsg, key)
16818		case "useEncryptedEndpoints":
16819			err = unpopulate(val, &h.UseEncryptedEndpoints)
16820			delete(rawMsg, key)
16821		case "useHostVerification":
16822			err = unpopulate(val, &h.UseHostVerification)
16823			delete(rawMsg, key)
16824		case "usePeerVerification":
16825			err = unpopulate(val, &h.UsePeerVerification)
16826			delete(rawMsg, key)
16827		}
16828		if err != nil {
16829			return err
16830		}
16831	}
16832	return nil
16833}
16834
16835// HubspotObjectDataset - Hubspot Service dataset.
16836type HubspotObjectDataset struct {
16837	Dataset
16838	// Properties specific to this dataset type.
16839	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
16840}
16841
16842// MarshalJSON implements the json.Marshaller interface for type HubspotObjectDataset.
16843func (h HubspotObjectDataset) MarshalJSON() ([]byte, error) {
16844	objectMap := h.Dataset.marshalInternal("HubspotObject")
16845	populate(objectMap, "typeProperties", h.TypeProperties)
16846	return json.Marshal(objectMap)
16847}
16848
16849// UnmarshalJSON implements the json.Unmarshaller interface for type HubspotObjectDataset.
16850func (h *HubspotObjectDataset) UnmarshalJSON(data []byte) error {
16851	var rawMsg map[string]json.RawMessage
16852	if err := json.Unmarshal(data, &rawMsg); err != nil {
16853		return err
16854	}
16855	for key, val := range rawMsg {
16856		var err error
16857		switch key {
16858		case "typeProperties":
16859			err = unpopulate(val, &h.TypeProperties)
16860			delete(rawMsg, key)
16861		}
16862		if err != nil {
16863			return err
16864		}
16865	}
16866	return h.Dataset.unmarshalInternal(rawMsg)
16867}
16868
16869// HubspotSource - A copy activity Hubspot Service source.
16870type HubspotSource struct {
16871	TabularSource
16872	// A query to retrieve data from source. Type: string (or Expression with resultType string).
16873	Query interface{} `json:"query,omitempty"`
16874}
16875
16876// MarshalJSON implements the json.Marshaller interface for type HubspotSource.
16877func (h HubspotSource) MarshalJSON() ([]byte, error) {
16878	objectMap := h.TabularSource.marshalInternal("HubspotSource")
16879	populate(objectMap, "query", h.Query)
16880	return json.Marshal(objectMap)
16881}
16882
16883// UnmarshalJSON implements the json.Unmarshaller interface for type HubspotSource.
16884func (h *HubspotSource) UnmarshalJSON(data []byte) error {
16885	var rawMsg map[string]json.RawMessage
16886	if err := json.Unmarshal(data, &rawMsg); err != nil {
16887		return err
16888	}
16889	for key, val := range rawMsg {
16890		var err error
16891		switch key {
16892		case "query":
16893			err = unpopulate(val, &h.Query)
16894			delete(rawMsg, key)
16895		}
16896		if err != nil {
16897			return err
16898		}
16899	}
16900	return h.TabularSource.unmarshalInternal(rawMsg)
16901}
16902
16903// IfConditionActivity - This activity evaluates a boolean expression and executes either the activities under the ifTrueActivities property or the ifFalseActivities
16904// property depending on the result of the expression.
16905type IfConditionActivity struct {
16906	ControlActivity
16907	// REQUIRED; IfCondition activity properties.
16908	TypeProperties *IfConditionActivityTypeProperties `json:"typeProperties,omitempty"`
16909}
16910
16911// MarshalJSON implements the json.Marshaller interface for type IfConditionActivity.
16912func (i IfConditionActivity) MarshalJSON() ([]byte, error) {
16913	objectMap := i.ControlActivity.marshalInternal("IfCondition")
16914	populate(objectMap, "typeProperties", i.TypeProperties)
16915	return json.Marshal(objectMap)
16916}
16917
16918// UnmarshalJSON implements the json.Unmarshaller interface for type IfConditionActivity.
16919func (i *IfConditionActivity) UnmarshalJSON(data []byte) error {
16920	var rawMsg map[string]json.RawMessage
16921	if err := json.Unmarshal(data, &rawMsg); err != nil {
16922		return err
16923	}
16924	for key, val := range rawMsg {
16925		var err error
16926		switch key {
16927		case "typeProperties":
16928			err = unpopulate(val, &i.TypeProperties)
16929			delete(rawMsg, key)
16930		}
16931		if err != nil {
16932			return err
16933		}
16934	}
16935	return i.ControlActivity.unmarshalInternal(rawMsg)
16936}
16937
16938// IfConditionActivityTypeProperties - IfCondition activity properties.
16939type IfConditionActivityTypeProperties struct {
16940	// REQUIRED; An expression that would evaluate to Boolean. This is used to determine the block of activities (ifTrueActivities or ifFalseActivities) that
16941	// will be executed.
16942	Expression *Expression `json:"expression,omitempty"`
16943
16944	// List of activities to execute if expression is evaluated to false. This is an optional property and if not provided, the activity will exit without any
16945	// action.
16946	IfFalseActivities []ActivityClassification `json:"ifFalseActivities,omitempty"`
16947
16948	// List of activities to execute if expression is evaluated to true. This is an optional property and if not provided, the activity will exit without any
16949	// action.
16950	IfTrueActivities []ActivityClassification `json:"ifTrueActivities,omitempty"`
16951}
16952
16953// MarshalJSON implements the json.Marshaller interface for type IfConditionActivityTypeProperties.
16954func (i IfConditionActivityTypeProperties) MarshalJSON() ([]byte, error) {
16955	objectMap := make(map[string]interface{})
16956	populate(objectMap, "expression", i.Expression)
16957	populate(objectMap, "ifFalseActivities", i.IfFalseActivities)
16958	populate(objectMap, "ifTrueActivities", i.IfTrueActivities)
16959	return json.Marshal(objectMap)
16960}
16961
16962// UnmarshalJSON implements the json.Unmarshaller interface for type IfConditionActivityTypeProperties.
16963func (i *IfConditionActivityTypeProperties) UnmarshalJSON(data []byte) error {
16964	var rawMsg map[string]json.RawMessage
16965	if err := json.Unmarshal(data, &rawMsg); err != nil {
16966		return err
16967	}
16968	for key, val := range rawMsg {
16969		var err error
16970		switch key {
16971		case "expression":
16972			err = unpopulate(val, &i.Expression)
16973			delete(rawMsg, key)
16974		case "ifFalseActivities":
16975			i.IfFalseActivities, err = unmarshalActivityClassificationArray(val)
16976			delete(rawMsg, key)
16977		case "ifTrueActivities":
16978			i.IfTrueActivities, err = unmarshalActivityClassificationArray(val)
16979			delete(rawMsg, key)
16980		}
16981		if err != nil {
16982			return err
16983		}
16984	}
16985	return nil
16986}
16987
16988// ImpalaDatasetTypeProperties - Impala Dataset Properties
16989type ImpalaDatasetTypeProperties struct {
16990	// The schema name of the Impala. Type: string (or Expression with resultType string).
16991	Schema interface{} `json:"schema,omitempty"`
16992
16993	// The table name of the Impala. Type: string (or Expression with resultType string).
16994	Table interface{} `json:"table,omitempty"`
16995
16996	// This property will be retired. Please consider using schema + table properties instead.
16997	TableName interface{} `json:"tableName,omitempty"`
16998}
16999
17000// ImpalaLinkedService - Impala server linked service.
17001type ImpalaLinkedService struct {
17002	LinkedService
17003	// REQUIRED; Impala server linked service properties.
17004	TypeProperties *ImpalaLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
17005}
17006
17007// MarshalJSON implements the json.Marshaller interface for type ImpalaLinkedService.
17008func (i ImpalaLinkedService) MarshalJSON() ([]byte, error) {
17009	objectMap := i.LinkedService.marshalInternal("Impala")
17010	populate(objectMap, "typeProperties", i.TypeProperties)
17011	return json.Marshal(objectMap)
17012}
17013
17014// UnmarshalJSON implements the json.Unmarshaller interface for type ImpalaLinkedService.
17015func (i *ImpalaLinkedService) UnmarshalJSON(data []byte) error {
17016	var rawMsg map[string]json.RawMessage
17017	if err := json.Unmarshal(data, &rawMsg); err != nil {
17018		return err
17019	}
17020	for key, val := range rawMsg {
17021		var err error
17022		switch key {
17023		case "typeProperties":
17024			err = unpopulate(val, &i.TypeProperties)
17025			delete(rawMsg, key)
17026		}
17027		if err != nil {
17028			return err
17029		}
17030	}
17031	return i.LinkedService.unmarshalInternal(rawMsg)
17032}
17033
17034// ImpalaLinkedServiceTypeProperties - Impala server linked service properties.
17035type ImpalaLinkedServiceTypeProperties struct {
17036	// REQUIRED; The authentication type to use.
17037	AuthenticationType *ImpalaAuthenticationType `json:"authenticationType,omitempty"`
17038
17039	// REQUIRED; The IP address or host name of the Impala server. (i.e. 192.168.222.160)
17040	Host interface{} `json:"host,omitempty"`
17041
17042	// Specifies whether to require a CA-issued SSL certificate name to match the host name of the server when connecting over SSL. The default value is false.
17043	AllowHostNameCNMismatch interface{} `json:"allowHostNameCNMismatch,omitempty"`
17044
17045	// Specifies whether to allow self-signed certificates from the server. The default value is false.
17046	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
17047
17048	// Specifies whether the connections to the server are encrypted using SSL. The default value is false.
17049	EnableSSL interface{} `json:"enableSsl,omitempty"`
17050
17051	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
17052	// with resultType string).
17053	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
17054
17055	// The password corresponding to the user name when using UsernameAndPassword.
17056	Password SecretBaseClassification `json:"password,omitempty"`
17057
17058	// The TCP port that the Impala server uses to listen for client connections. The default value is 21050.
17059	Port interface{} `json:"port,omitempty"`
17060
17061	// The full path of the .pem file containing trusted CA certificates for verifying the server when connecting over SSL. This property can only be set when
17062	// using SSL on self-hosted IR. The default value
17063	// is the cacerts.pem file installed with the IR.
17064	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
17065
17066	// Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.
17067	UseSystemTrustStore interface{} `json:"useSystemTrustStore,omitempty"`
17068
17069	// The user name used to access the Impala server. The default value is anonymous when using SASLUsername.
17070	Username interface{} `json:"username,omitempty"`
17071}
17072
17073// MarshalJSON implements the json.Marshaller interface for type ImpalaLinkedServiceTypeProperties.
17074func (i ImpalaLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
17075	objectMap := make(map[string]interface{})
17076	populate(objectMap, "allowHostNameCNMismatch", i.AllowHostNameCNMismatch)
17077	populate(objectMap, "allowSelfSignedServerCert", i.AllowSelfSignedServerCert)
17078	populate(objectMap, "authenticationType", i.AuthenticationType)
17079	populate(objectMap, "enableSsl", i.EnableSSL)
17080	populate(objectMap, "encryptedCredential", i.EncryptedCredential)
17081	populate(objectMap, "host", i.Host)
17082	populate(objectMap, "password", i.Password)
17083	populate(objectMap, "port", i.Port)
17084	populate(objectMap, "trustedCertPath", i.TrustedCertPath)
17085	populate(objectMap, "useSystemTrustStore", i.UseSystemTrustStore)
17086	populate(objectMap, "username", i.Username)
17087	return json.Marshal(objectMap)
17088}
17089
17090// UnmarshalJSON implements the json.Unmarshaller interface for type ImpalaLinkedServiceTypeProperties.
17091func (i *ImpalaLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
17092	var rawMsg map[string]json.RawMessage
17093	if err := json.Unmarshal(data, &rawMsg); err != nil {
17094		return err
17095	}
17096	for key, val := range rawMsg {
17097		var err error
17098		switch key {
17099		case "allowHostNameCNMismatch":
17100			err = unpopulate(val, &i.AllowHostNameCNMismatch)
17101			delete(rawMsg, key)
17102		case "allowSelfSignedServerCert":
17103			err = unpopulate(val, &i.AllowSelfSignedServerCert)
17104			delete(rawMsg, key)
17105		case "authenticationType":
17106			err = unpopulate(val, &i.AuthenticationType)
17107			delete(rawMsg, key)
17108		case "enableSsl":
17109			err = unpopulate(val, &i.EnableSSL)
17110			delete(rawMsg, key)
17111		case "encryptedCredential":
17112			err = unpopulate(val, &i.EncryptedCredential)
17113			delete(rawMsg, key)
17114		case "host":
17115			err = unpopulate(val, &i.Host)
17116			delete(rawMsg, key)
17117		case "password":
17118			i.Password, err = unmarshalSecretBaseClassification(val)
17119			delete(rawMsg, key)
17120		case "port":
17121			err = unpopulate(val, &i.Port)
17122			delete(rawMsg, key)
17123		case "trustedCertPath":
17124			err = unpopulate(val, &i.TrustedCertPath)
17125			delete(rawMsg, key)
17126		case "useSystemTrustStore":
17127			err = unpopulate(val, &i.UseSystemTrustStore)
17128			delete(rawMsg, key)
17129		case "username":
17130			err = unpopulate(val, &i.Username)
17131			delete(rawMsg, key)
17132		}
17133		if err != nil {
17134			return err
17135		}
17136	}
17137	return nil
17138}
17139
17140// ImpalaObjectDataset - Impala server dataset.
17141type ImpalaObjectDataset struct {
17142	Dataset
17143	// Properties specific to this dataset type.
17144	TypeProperties *ImpalaDatasetTypeProperties `json:"typeProperties,omitempty"`
17145}
17146
17147// MarshalJSON implements the json.Marshaller interface for type ImpalaObjectDataset.
17148func (i ImpalaObjectDataset) MarshalJSON() ([]byte, error) {
17149	objectMap := i.Dataset.marshalInternal("ImpalaObject")
17150	populate(objectMap, "typeProperties", i.TypeProperties)
17151	return json.Marshal(objectMap)
17152}
17153
17154// UnmarshalJSON implements the json.Unmarshaller interface for type ImpalaObjectDataset.
17155func (i *ImpalaObjectDataset) UnmarshalJSON(data []byte) error {
17156	var rawMsg map[string]json.RawMessage
17157	if err := json.Unmarshal(data, &rawMsg); err != nil {
17158		return err
17159	}
17160	for key, val := range rawMsg {
17161		var err error
17162		switch key {
17163		case "typeProperties":
17164			err = unpopulate(val, &i.TypeProperties)
17165			delete(rawMsg, key)
17166		}
17167		if err != nil {
17168			return err
17169		}
17170	}
17171	return i.Dataset.unmarshalInternal(rawMsg)
17172}
17173
17174// ImpalaSource - A copy activity Impala server source.
17175type ImpalaSource struct {
17176	TabularSource
17177	// A query to retrieve data from source. Type: string (or Expression with resultType string).
17178	Query interface{} `json:"query,omitempty"`
17179}
17180
17181// MarshalJSON implements the json.Marshaller interface for type ImpalaSource.
17182func (i ImpalaSource) MarshalJSON() ([]byte, error) {
17183	objectMap := i.TabularSource.marshalInternal("ImpalaSource")
17184	populate(objectMap, "query", i.Query)
17185	return json.Marshal(objectMap)
17186}
17187
17188// UnmarshalJSON implements the json.Unmarshaller interface for type ImpalaSource.
17189func (i *ImpalaSource) UnmarshalJSON(data []byte) error {
17190	var rawMsg map[string]json.RawMessage
17191	if err := json.Unmarshal(data, &rawMsg); err != nil {
17192		return err
17193	}
17194	for key, val := range rawMsg {
17195		var err error
17196		switch key {
17197		case "query":
17198			err = unpopulate(val, &i.Query)
17199			delete(rawMsg, key)
17200		}
17201		if err != nil {
17202			return err
17203		}
17204	}
17205	return i.TabularSource.unmarshalInternal(rawMsg)
17206}
17207
17208// ImportSettingsClassification provides polymorphic access to related types.
17209// Call the interface's GetImportSettings() method to access the common type.
17210// Use a type switch to determine the concrete type.  The possible types are:
17211// - *AzureDatabricksDeltaLakeImportCommand, *ImportSettings, *SnowflakeImportCopyCommand
17212type ImportSettingsClassification interface {
17213	// GetImportSettings returns the ImportSettings content of the underlying type.
17214	GetImportSettings() *ImportSettings
17215}
17216
17217// ImportSettings - Import command settings.
17218type ImportSettings struct {
17219	// REQUIRED; The import setting type.
17220	Type *string `json:"type,omitempty"`
17221
17222	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
17223	AdditionalProperties map[string]interface{}
17224}
17225
17226// GetImportSettings implements the ImportSettingsClassification interface for type ImportSettings.
17227func (i *ImportSettings) GetImportSettings() *ImportSettings { return i }
17228
17229// UnmarshalJSON implements the json.Unmarshaller interface for type ImportSettings.
17230func (i *ImportSettings) UnmarshalJSON(data []byte) error {
17231	var rawMsg map[string]json.RawMessage
17232	if err := json.Unmarshal(data, &rawMsg); err != nil {
17233		return err
17234	}
17235	return i.unmarshalInternal(rawMsg)
17236}
17237
17238func (i ImportSettings) marshalInternal(discValue string) map[string]interface{} {
17239	objectMap := make(map[string]interface{})
17240	i.Type = &discValue
17241	objectMap["type"] = i.Type
17242	if i.AdditionalProperties != nil {
17243		for key, val := range i.AdditionalProperties {
17244			objectMap[key] = val
17245		}
17246	}
17247	return objectMap
17248}
17249
17250func (i *ImportSettings) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
17251	for key, val := range rawMsg {
17252		var err error
17253		switch key {
17254		case "type":
17255			err = unpopulate(val, &i.Type)
17256			delete(rawMsg, key)
17257		default:
17258			if i.AdditionalProperties == nil {
17259				i.AdditionalProperties = map[string]interface{}{}
17260			}
17261			if val != nil {
17262				var aux interface{}
17263				err = json.Unmarshal(val, &aux)
17264				i.AdditionalProperties[key] = aux
17265			}
17266			delete(rawMsg, key)
17267		}
17268		if err != nil {
17269			return err
17270		}
17271	}
17272	return nil
17273}
17274
17275// InformixLinkedService - Informix linked service.
17276type InformixLinkedService struct {
17277	LinkedService
17278	// REQUIRED; Informix linked service properties.
17279	TypeProperties *InformixLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
17280}
17281
17282// MarshalJSON implements the json.Marshaller interface for type InformixLinkedService.
17283func (i InformixLinkedService) MarshalJSON() ([]byte, error) {
17284	objectMap := i.LinkedService.marshalInternal("Informix")
17285	populate(objectMap, "typeProperties", i.TypeProperties)
17286	return json.Marshal(objectMap)
17287}
17288
17289// UnmarshalJSON implements the json.Unmarshaller interface for type InformixLinkedService.
17290func (i *InformixLinkedService) UnmarshalJSON(data []byte) error {
17291	var rawMsg map[string]json.RawMessage
17292	if err := json.Unmarshal(data, &rawMsg); err != nil {
17293		return err
17294	}
17295	for key, val := range rawMsg {
17296		var err error
17297		switch key {
17298		case "typeProperties":
17299			err = unpopulate(val, &i.TypeProperties)
17300			delete(rawMsg, key)
17301		}
17302		if err != nil {
17303			return err
17304		}
17305	}
17306	return i.LinkedService.unmarshalInternal(rawMsg)
17307}
17308
17309// InformixLinkedServiceTypeProperties - Informix linked service properties.
17310type InformixLinkedServiceTypeProperties struct {
17311	// REQUIRED; The non-access credential portion of the connection string as well as an optional encrypted credential. Type: string, SecureString or AzureKeyVaultSecretReference.
17312	ConnectionString interface{} `json:"connectionString,omitempty"`
17313
17314	// Type of authentication used to connect to the Informix as ODBC data store. Possible values are: Anonymous and Basic. Type: string (or Expression with
17315	// resultType string).
17316	AuthenticationType interface{} `json:"authenticationType,omitempty"`
17317
17318	// The access credential portion of the connection string specified in driver-specific property-value format.
17319	Credential SecretBaseClassification `json:"credential,omitempty"`
17320
17321	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
17322	// with resultType string).
17323	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
17324
17325	// Password for Basic authentication.
17326	Password SecretBaseClassification `json:"password,omitempty"`
17327
17328	// User name for Basic authentication. Type: string (or Expression with resultType string).
17329	UserName interface{} `json:"userName,omitempty"`
17330}
17331
17332// MarshalJSON implements the json.Marshaller interface for type InformixLinkedServiceTypeProperties.
17333func (i InformixLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
17334	objectMap := make(map[string]interface{})
17335	populate(objectMap, "authenticationType", i.AuthenticationType)
17336	populate(objectMap, "connectionString", i.ConnectionString)
17337	populate(objectMap, "credential", i.Credential)
17338	populate(objectMap, "encryptedCredential", i.EncryptedCredential)
17339	populate(objectMap, "password", i.Password)
17340	populate(objectMap, "userName", i.UserName)
17341	return json.Marshal(objectMap)
17342}
17343
17344// UnmarshalJSON implements the json.Unmarshaller interface for type InformixLinkedServiceTypeProperties.
17345func (i *InformixLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
17346	var rawMsg map[string]json.RawMessage
17347	if err := json.Unmarshal(data, &rawMsg); err != nil {
17348		return err
17349	}
17350	for key, val := range rawMsg {
17351		var err error
17352		switch key {
17353		case "authenticationType":
17354			err = unpopulate(val, &i.AuthenticationType)
17355			delete(rawMsg, key)
17356		case "connectionString":
17357			err = unpopulate(val, &i.ConnectionString)
17358			delete(rawMsg, key)
17359		case "credential":
17360			i.Credential, err = unmarshalSecretBaseClassification(val)
17361			delete(rawMsg, key)
17362		case "encryptedCredential":
17363			err = unpopulate(val, &i.EncryptedCredential)
17364			delete(rawMsg, key)
17365		case "password":
17366			i.Password, err = unmarshalSecretBaseClassification(val)
17367			delete(rawMsg, key)
17368		case "userName":
17369			err = unpopulate(val, &i.UserName)
17370			delete(rawMsg, key)
17371		}
17372		if err != nil {
17373			return err
17374		}
17375	}
17376	return nil
17377}
17378
17379// InformixSink - A copy activity Informix sink.
17380type InformixSink struct {
17381	CopySink
17382	// A query to execute before starting the copy. Type: string (or Expression with resultType string).
17383	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
17384}
17385
17386// MarshalJSON implements the json.Marshaller interface for type InformixSink.
17387func (i InformixSink) MarshalJSON() ([]byte, error) {
17388	objectMap := i.CopySink.marshalInternal("InformixSink")
17389	populate(objectMap, "preCopyScript", i.PreCopyScript)
17390	return json.Marshal(objectMap)
17391}
17392
17393// UnmarshalJSON implements the json.Unmarshaller interface for type InformixSink.
17394func (i *InformixSink) UnmarshalJSON(data []byte) error {
17395	var rawMsg map[string]json.RawMessage
17396	if err := json.Unmarshal(data, &rawMsg); err != nil {
17397		return err
17398	}
17399	for key, val := range rawMsg {
17400		var err error
17401		switch key {
17402		case "preCopyScript":
17403			err = unpopulate(val, &i.PreCopyScript)
17404			delete(rawMsg, key)
17405		}
17406		if err != nil {
17407			return err
17408		}
17409	}
17410	return i.CopySink.unmarshalInternal(rawMsg)
17411}
17412
17413// InformixSource - A copy activity source for Informix.
17414type InformixSource struct {
17415	TabularSource
17416	// Database query. Type: string (or Expression with resultType string).
17417	Query interface{} `json:"query,omitempty"`
17418}
17419
17420// MarshalJSON implements the json.Marshaller interface for type InformixSource.
17421func (i InformixSource) MarshalJSON() ([]byte, error) {
17422	objectMap := i.TabularSource.marshalInternal("InformixSource")
17423	populate(objectMap, "query", i.Query)
17424	return json.Marshal(objectMap)
17425}
17426
17427// UnmarshalJSON implements the json.Unmarshaller interface for type InformixSource.
17428func (i *InformixSource) UnmarshalJSON(data []byte) error {
17429	var rawMsg map[string]json.RawMessage
17430	if err := json.Unmarshal(data, &rawMsg); err != nil {
17431		return err
17432	}
17433	for key, val := range rawMsg {
17434		var err error
17435		switch key {
17436		case "query":
17437			err = unpopulate(val, &i.Query)
17438			delete(rawMsg, key)
17439		}
17440		if err != nil {
17441			return err
17442		}
17443	}
17444	return i.TabularSource.unmarshalInternal(rawMsg)
17445}
17446
17447// InformixTableDataset - The Informix table dataset.
17448type InformixTableDataset struct {
17449	Dataset
17450	// Informix table dataset properties.
17451	TypeProperties *InformixTableDatasetTypeProperties `json:"typeProperties,omitempty"`
17452}
17453
17454// MarshalJSON implements the json.Marshaller interface for type InformixTableDataset.
17455func (i InformixTableDataset) MarshalJSON() ([]byte, error) {
17456	objectMap := i.Dataset.marshalInternal("InformixTable")
17457	populate(objectMap, "typeProperties", i.TypeProperties)
17458	return json.Marshal(objectMap)
17459}
17460
17461// UnmarshalJSON implements the json.Unmarshaller interface for type InformixTableDataset.
17462func (i *InformixTableDataset) UnmarshalJSON(data []byte) error {
17463	var rawMsg map[string]json.RawMessage
17464	if err := json.Unmarshal(data, &rawMsg); err != nil {
17465		return err
17466	}
17467	for key, val := range rawMsg {
17468		var err error
17469		switch key {
17470		case "typeProperties":
17471			err = unpopulate(val, &i.TypeProperties)
17472			delete(rawMsg, key)
17473		}
17474		if err != nil {
17475			return err
17476		}
17477	}
17478	return i.Dataset.unmarshalInternal(rawMsg)
17479}
17480
17481// InformixTableDatasetTypeProperties - Informix table dataset properties.
17482type InformixTableDatasetTypeProperties struct {
17483	// The Informix table name. Type: string (or Expression with resultType string).
17484	TableName interface{} `json:"tableName,omitempty"`
17485}
17486
17487// IntegrationRuntimeClassification provides polymorphic access to related types.
17488// Call the interface's GetIntegrationRuntime() method to access the common type.
17489// Use a type switch to determine the concrete type.  The possible types are:
17490// - *IntegrationRuntime, *ManagedIntegrationRuntime, *SelfHostedIntegrationRuntime
17491type IntegrationRuntimeClassification interface {
17492	// GetIntegrationRuntime returns the IntegrationRuntime content of the underlying type.
17493	GetIntegrationRuntime() *IntegrationRuntime
17494}
17495
17496// IntegrationRuntime - Azure Synapse nested object which serves as a compute resource for activities.
17497type IntegrationRuntime struct {
17498	// REQUIRED; Type of integration runtime.
17499	Type *IntegrationRuntimeType `json:"type,omitempty"`
17500
17501	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
17502	AdditionalProperties map[string]interface{}
17503
17504	// Integration runtime description.
17505	Description *string `json:"description,omitempty"`
17506}
17507
17508// GetIntegrationRuntime implements the IntegrationRuntimeClassification interface for type IntegrationRuntime.
17509func (i *IntegrationRuntime) GetIntegrationRuntime() *IntegrationRuntime { return i }
17510
17511// UnmarshalJSON implements the json.Unmarshaller interface for type IntegrationRuntime.
17512func (i *IntegrationRuntime) UnmarshalJSON(data []byte) error {
17513	var rawMsg map[string]json.RawMessage
17514	if err := json.Unmarshal(data, &rawMsg); err != nil {
17515		return err
17516	}
17517	return i.unmarshalInternal(rawMsg)
17518}
17519
17520func (i IntegrationRuntime) marshalInternal(discValue IntegrationRuntimeType) map[string]interface{} {
17521	objectMap := make(map[string]interface{})
17522	populate(objectMap, "description", i.Description)
17523	i.Type = &discValue
17524	objectMap["type"] = i.Type
17525	if i.AdditionalProperties != nil {
17526		for key, val := range i.AdditionalProperties {
17527			objectMap[key] = val
17528		}
17529	}
17530	return objectMap
17531}
17532
17533func (i *IntegrationRuntime) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
17534	for key, val := range rawMsg {
17535		var err error
17536		switch key {
17537		case "description":
17538			err = unpopulate(val, &i.Description)
17539			delete(rawMsg, key)
17540		case "type":
17541			err = unpopulate(val, &i.Type)
17542			delete(rawMsg, key)
17543		default:
17544			if i.AdditionalProperties == nil {
17545				i.AdditionalProperties = map[string]interface{}{}
17546			}
17547			if val != nil {
17548				var aux interface{}
17549				err = json.Unmarshal(val, &aux)
17550				i.AdditionalProperties[key] = aux
17551			}
17552			delete(rawMsg, key)
17553		}
17554		if err != nil {
17555			return err
17556		}
17557	}
17558	return nil
17559}
17560
17561// IntegrationRuntimeComputeProperties - The compute resource properties for managed integration runtime.
17562type IntegrationRuntimeComputeProperties struct {
17563	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
17564	AdditionalProperties map[string]interface{}
17565
17566	// Data flow properties for managed integration runtime.
17567	DataFlowProperties *IntegrationRuntimeDataFlowProperties `json:"dataFlowProperties,omitempty"`
17568
17569	// 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
17570	Location *string `json:"location,omitempty"`
17571
17572	// Maximum parallel executions count per node for managed integration runtime.
17573	MaxParallelExecutionsPerNode *int32 `json:"maxParallelExecutionsPerNode,omitempty"`
17574
17575	// The node size requirement to managed integration runtime.
17576	NodeSize *string `json:"nodeSize,omitempty"`
17577
17578	// The required number of nodes for managed integration runtime.
17579	NumberOfNodes *int32 `json:"numberOfNodes,omitempty"`
17580
17581	// VNet properties for managed integration runtime.
17582	VNetProperties *IntegrationRuntimeVNetProperties `json:"vNetProperties,omitempty"`
17583}
17584
17585// MarshalJSON implements the json.Marshaller interface for type IntegrationRuntimeComputeProperties.
17586func (i IntegrationRuntimeComputeProperties) MarshalJSON() ([]byte, error) {
17587	objectMap := make(map[string]interface{})
17588	populate(objectMap, "dataFlowProperties", i.DataFlowProperties)
17589	populate(objectMap, "location", i.Location)
17590	populate(objectMap, "maxParallelExecutionsPerNode", i.MaxParallelExecutionsPerNode)
17591	populate(objectMap, "nodeSize", i.NodeSize)
17592	populate(objectMap, "numberOfNodes", i.NumberOfNodes)
17593	populate(objectMap, "vNetProperties", i.VNetProperties)
17594	if i.AdditionalProperties != nil {
17595		for key, val := range i.AdditionalProperties {
17596			objectMap[key] = val
17597		}
17598	}
17599	return json.Marshal(objectMap)
17600}
17601
17602// UnmarshalJSON implements the json.Unmarshaller interface for type IntegrationRuntimeComputeProperties.
17603func (i *IntegrationRuntimeComputeProperties) UnmarshalJSON(data []byte) error {
17604	var rawMsg map[string]json.RawMessage
17605	if err := json.Unmarshal(data, &rawMsg); err != nil {
17606		return err
17607	}
17608	for key, val := range rawMsg {
17609		var err error
17610		switch key {
17611		case "dataFlowProperties":
17612			err = unpopulate(val, &i.DataFlowProperties)
17613			delete(rawMsg, key)
17614		case "location":
17615			err = unpopulate(val, &i.Location)
17616			delete(rawMsg, key)
17617		case "maxParallelExecutionsPerNode":
17618			err = unpopulate(val, &i.MaxParallelExecutionsPerNode)
17619			delete(rawMsg, key)
17620		case "nodeSize":
17621			err = unpopulate(val, &i.NodeSize)
17622			delete(rawMsg, key)
17623		case "numberOfNodes":
17624			err = unpopulate(val, &i.NumberOfNodes)
17625			delete(rawMsg, key)
17626		case "vNetProperties":
17627			err = unpopulate(val, &i.VNetProperties)
17628			delete(rawMsg, key)
17629		default:
17630			if i.AdditionalProperties == nil {
17631				i.AdditionalProperties = map[string]interface{}{}
17632			}
17633			if val != nil {
17634				var aux interface{}
17635				err = json.Unmarshal(val, &aux)
17636				i.AdditionalProperties[key] = aux
17637			}
17638			delete(rawMsg, key)
17639		}
17640		if err != nil {
17641			return err
17642		}
17643	}
17644	return nil
17645}
17646
17647// IntegrationRuntimeCustomSetupScriptProperties - Custom setup script properties for a managed dedicated integration runtime.
17648type IntegrationRuntimeCustomSetupScriptProperties struct {
17649	// The URI of the Azure blob container that contains the custom setup script.
17650	BlobContainerURI *string `json:"blobContainerUri,omitempty"`
17651
17652	// The SAS token of the Azure blob container.
17653	SasToken *SecureString `json:"sasToken,omitempty"`
17654}
17655
17656// IntegrationRuntimeDataFlowProperties - Data flow properties for managed integration runtime.
17657type IntegrationRuntimeDataFlowProperties struct {
17658	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
17659	AdditionalProperties map[string]interface{}
17660
17661	// Compute type of the cluster which will execute data flow job.
17662	ComputeType *DataFlowComputeType `json:"computeType,omitempty"`
17663
17664	// Core count of the cluster which will execute data flow job. Supported values are: 8, 16, 32, 48, 80, 144 and 272.
17665	CoreCount *int32 `json:"coreCount,omitempty"`
17666
17667	// Time to live (in minutes) setting of the cluster which will execute data flow job.
17668	TimeToLive *int32 `json:"timeToLive,omitempty"`
17669}
17670
17671// MarshalJSON implements the json.Marshaller interface for type IntegrationRuntimeDataFlowProperties.
17672func (i IntegrationRuntimeDataFlowProperties) MarshalJSON() ([]byte, error) {
17673	objectMap := make(map[string]interface{})
17674	populate(objectMap, "computeType", i.ComputeType)
17675	populate(objectMap, "coreCount", i.CoreCount)
17676	populate(objectMap, "timeToLive", i.TimeToLive)
17677	if i.AdditionalProperties != nil {
17678		for key, val := range i.AdditionalProperties {
17679			objectMap[key] = val
17680		}
17681	}
17682	return json.Marshal(objectMap)
17683}
17684
17685// UnmarshalJSON implements the json.Unmarshaller interface for type IntegrationRuntimeDataFlowProperties.
17686func (i *IntegrationRuntimeDataFlowProperties) UnmarshalJSON(data []byte) error {
17687	var rawMsg map[string]json.RawMessage
17688	if err := json.Unmarshal(data, &rawMsg); err != nil {
17689		return err
17690	}
17691	for key, val := range rawMsg {
17692		var err error
17693		switch key {
17694		case "computeType":
17695			err = unpopulate(val, &i.ComputeType)
17696			delete(rawMsg, key)
17697		case "coreCount":
17698			err = unpopulate(val, &i.CoreCount)
17699			delete(rawMsg, key)
17700		case "timeToLive":
17701			err = unpopulate(val, &i.TimeToLive)
17702			delete(rawMsg, key)
17703		default:
17704			if i.AdditionalProperties == nil {
17705				i.AdditionalProperties = map[string]interface{}{}
17706			}
17707			if val != nil {
17708				var aux interface{}
17709				err = json.Unmarshal(val, &aux)
17710				i.AdditionalProperties[key] = aux
17711			}
17712			delete(rawMsg, key)
17713		}
17714		if err != nil {
17715			return err
17716		}
17717	}
17718	return nil
17719}
17720
17721// IntegrationRuntimeDataProxyProperties - Data proxy properties for a managed dedicated integration runtime.
17722type IntegrationRuntimeDataProxyProperties struct {
17723	// The self-hosted integration runtime reference.
17724	ConnectVia *EntityReference `json:"connectVia,omitempty"`
17725
17726	// The path to contain the staged data in the Blob storage.
17727	Path *string `json:"path,omitempty"`
17728
17729	// The staging linked service reference.
17730	StagingLinkedService *EntityReference `json:"stagingLinkedService,omitempty"`
17731}
17732
17733// IntegrationRuntimeListResponse - A list of integration runtime resources.
17734type IntegrationRuntimeListResponse struct {
17735	// REQUIRED; List of integration runtimes.
17736	Value []*IntegrationRuntimeResource `json:"value,omitempty"`
17737
17738	// The link to the next page of results, if any remaining results exist.
17739	NextLink *string `json:"nextLink,omitempty"`
17740}
17741
17742// MarshalJSON implements the json.Marshaller interface for type IntegrationRuntimeListResponse.
17743func (i IntegrationRuntimeListResponse) MarshalJSON() ([]byte, error) {
17744	objectMap := make(map[string]interface{})
17745	populate(objectMap, "nextLink", i.NextLink)
17746	populate(objectMap, "value", i.Value)
17747	return json.Marshal(objectMap)
17748}
17749
17750// IntegrationRuntimeReference - Integration runtime reference type.
17751type IntegrationRuntimeReference struct {
17752	// REQUIRED; Reference integration runtime name.
17753	ReferenceName *string `json:"referenceName,omitempty"`
17754
17755	// REQUIRED; Type of integration runtime.
17756	Type *IntegrationRuntimeReferenceType `json:"type,omitempty"`
17757
17758	// Arguments for integration runtime.
17759	Parameters map[string]interface{} `json:"parameters,omitempty"`
17760}
17761
17762// MarshalJSON implements the json.Marshaller interface for type IntegrationRuntimeReference.
17763func (i IntegrationRuntimeReference) MarshalJSON() ([]byte, error) {
17764	objectMap := make(map[string]interface{})
17765	populate(objectMap, "parameters", i.Parameters)
17766	populate(objectMap, "referenceName", i.ReferenceName)
17767	populate(objectMap, "type", i.Type)
17768	return json.Marshal(objectMap)
17769}
17770
17771// IntegrationRuntimeResource - Integration runtime resource type.
17772type IntegrationRuntimeResource struct {
17773	SubResource
17774	// REQUIRED; Integration runtime properties.
17775	Properties IntegrationRuntimeClassification `json:"properties,omitempty"`
17776}
17777
17778// MarshalJSON implements the json.Marshaller interface for type IntegrationRuntimeResource.
17779func (i IntegrationRuntimeResource) MarshalJSON() ([]byte, error) {
17780	objectMap := i.SubResource.marshalInternal()
17781	populate(objectMap, "properties", i.Properties)
17782	return json.Marshal(objectMap)
17783}
17784
17785// UnmarshalJSON implements the json.Unmarshaller interface for type IntegrationRuntimeResource.
17786func (i *IntegrationRuntimeResource) UnmarshalJSON(data []byte) error {
17787	var rawMsg map[string]json.RawMessage
17788	if err := json.Unmarshal(data, &rawMsg); err != nil {
17789		return err
17790	}
17791	for key, val := range rawMsg {
17792		var err error
17793		switch key {
17794		case "properties":
17795			i.Properties, err = unmarshalIntegrationRuntimeClassification(val)
17796			delete(rawMsg, key)
17797		}
17798		if err != nil {
17799			return err
17800		}
17801	}
17802	return i.SubResource.unmarshalInternal(rawMsg)
17803}
17804
17805// IntegrationRuntimeSsisCatalogInfo - Catalog information for managed dedicated integration runtime.
17806type IntegrationRuntimeSsisCatalogInfo struct {
17807	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
17808	AdditionalProperties map[string]interface{}
17809
17810	// The password of the administrator user account of the catalog database.
17811	CatalogAdminPassword *SecureString `json:"catalogAdminPassword,omitempty"`
17812
17813	// The administrator user name of catalog database.
17814	CatalogAdminUserName *string `json:"catalogAdminUserName,omitempty"`
17815
17816	// The pricing tier for the catalog database. The valid values could be found in https://azure.microsoft.com/en-us/pricing/details/sql-database/
17817	CatalogPricingTier *IntegrationRuntimeSsisCatalogPricingTier `json:"catalogPricingTier,omitempty"`
17818
17819	// The catalog database server URL.
17820	CatalogServerEndpoint *string `json:"catalogServerEndpoint,omitempty"`
17821}
17822
17823// MarshalJSON implements the json.Marshaller interface for type IntegrationRuntimeSsisCatalogInfo.
17824func (i IntegrationRuntimeSsisCatalogInfo) MarshalJSON() ([]byte, error) {
17825	objectMap := make(map[string]interface{})
17826	populate(objectMap, "catalogAdminPassword", i.CatalogAdminPassword)
17827	populate(objectMap, "catalogAdminUserName", i.CatalogAdminUserName)
17828	populate(objectMap, "catalogPricingTier", i.CatalogPricingTier)
17829	populate(objectMap, "catalogServerEndpoint", i.CatalogServerEndpoint)
17830	if i.AdditionalProperties != nil {
17831		for key, val := range i.AdditionalProperties {
17832			objectMap[key] = val
17833		}
17834	}
17835	return json.Marshal(objectMap)
17836}
17837
17838// UnmarshalJSON implements the json.Unmarshaller interface for type IntegrationRuntimeSsisCatalogInfo.
17839func (i *IntegrationRuntimeSsisCatalogInfo) UnmarshalJSON(data []byte) error {
17840	var rawMsg map[string]json.RawMessage
17841	if err := json.Unmarshal(data, &rawMsg); err != nil {
17842		return err
17843	}
17844	for key, val := range rawMsg {
17845		var err error
17846		switch key {
17847		case "catalogAdminPassword":
17848			err = unpopulate(val, &i.CatalogAdminPassword)
17849			delete(rawMsg, key)
17850		case "catalogAdminUserName":
17851			err = unpopulate(val, &i.CatalogAdminUserName)
17852			delete(rawMsg, key)
17853		case "catalogPricingTier":
17854			err = unpopulate(val, &i.CatalogPricingTier)
17855			delete(rawMsg, key)
17856		case "catalogServerEndpoint":
17857			err = unpopulate(val, &i.CatalogServerEndpoint)
17858			delete(rawMsg, key)
17859		default:
17860			if i.AdditionalProperties == nil {
17861				i.AdditionalProperties = map[string]interface{}{}
17862			}
17863			if val != nil {
17864				var aux interface{}
17865				err = json.Unmarshal(val, &aux)
17866				i.AdditionalProperties[key] = aux
17867			}
17868			delete(rawMsg, key)
17869		}
17870		if err != nil {
17871			return err
17872		}
17873	}
17874	return nil
17875}
17876
17877// IntegrationRuntimeSsisProperties - SSIS properties for managed integration runtime.
17878type IntegrationRuntimeSsisProperties struct {
17879	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
17880	AdditionalProperties map[string]interface{}
17881
17882	// Catalog information for managed dedicated integration runtime.
17883	CatalogInfo *IntegrationRuntimeSsisCatalogInfo `json:"catalogInfo,omitempty"`
17884
17885	// Custom setup script properties for a managed dedicated integration runtime.
17886	CustomSetupScriptProperties *IntegrationRuntimeCustomSetupScriptProperties `json:"customSetupScriptProperties,omitempty"`
17887
17888	// Data proxy properties for a managed dedicated integration runtime.
17889	DataProxyProperties *IntegrationRuntimeDataProxyProperties `json:"dataProxyProperties,omitempty"`
17890
17891	// The edition for the SSIS Integration Runtime
17892	Edition *IntegrationRuntimeEdition `json:"edition,omitempty"`
17893
17894	// Custom setup without script properties for a SSIS integration runtime.
17895	ExpressCustomSetupProperties []CustomSetupBaseClassification `json:"expressCustomSetupProperties,omitempty"`
17896
17897	// License type for bringing your own license scenario.
17898	LicenseType *IntegrationRuntimeLicenseType `json:"licenseType,omitempty"`
17899}
17900
17901// MarshalJSON implements the json.Marshaller interface for type IntegrationRuntimeSsisProperties.
17902func (i IntegrationRuntimeSsisProperties) MarshalJSON() ([]byte, error) {
17903	objectMap := make(map[string]interface{})
17904	populate(objectMap, "catalogInfo", i.CatalogInfo)
17905	populate(objectMap, "customSetupScriptProperties", i.CustomSetupScriptProperties)
17906	populate(objectMap, "dataProxyProperties", i.DataProxyProperties)
17907	populate(objectMap, "edition", i.Edition)
17908	populate(objectMap, "expressCustomSetupProperties", i.ExpressCustomSetupProperties)
17909	populate(objectMap, "licenseType", i.LicenseType)
17910	if i.AdditionalProperties != nil {
17911		for key, val := range i.AdditionalProperties {
17912			objectMap[key] = val
17913		}
17914	}
17915	return json.Marshal(objectMap)
17916}
17917
17918// UnmarshalJSON implements the json.Unmarshaller interface for type IntegrationRuntimeSsisProperties.
17919func (i *IntegrationRuntimeSsisProperties) UnmarshalJSON(data []byte) error {
17920	var rawMsg map[string]json.RawMessage
17921	if err := json.Unmarshal(data, &rawMsg); err != nil {
17922		return err
17923	}
17924	for key, val := range rawMsg {
17925		var err error
17926		switch key {
17927		case "catalogInfo":
17928			err = unpopulate(val, &i.CatalogInfo)
17929			delete(rawMsg, key)
17930		case "customSetupScriptProperties":
17931			err = unpopulate(val, &i.CustomSetupScriptProperties)
17932			delete(rawMsg, key)
17933		case "dataProxyProperties":
17934			err = unpopulate(val, &i.DataProxyProperties)
17935			delete(rawMsg, key)
17936		case "edition":
17937			err = unpopulate(val, &i.Edition)
17938			delete(rawMsg, key)
17939		case "expressCustomSetupProperties":
17940			i.ExpressCustomSetupProperties, err = unmarshalCustomSetupBaseClassificationArray(val)
17941			delete(rawMsg, key)
17942		case "licenseType":
17943			err = unpopulate(val, &i.LicenseType)
17944			delete(rawMsg, key)
17945		default:
17946			if i.AdditionalProperties == nil {
17947				i.AdditionalProperties = map[string]interface{}{}
17948			}
17949			if val != nil {
17950				var aux interface{}
17951				err = json.Unmarshal(val, &aux)
17952				i.AdditionalProperties[key] = aux
17953			}
17954			delete(rawMsg, key)
17955		}
17956		if err != nil {
17957			return err
17958		}
17959	}
17960	return nil
17961}
17962
17963// IntegrationRuntimeVNetProperties - VNet properties for managed integration runtime.
17964type IntegrationRuntimeVNetProperties struct {
17965	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
17966	AdditionalProperties map[string]interface{}
17967
17968	// Resource IDs of the public IP addresses that this integration runtime will use.
17969	PublicIPs []*string `json:"publicIPs,omitempty"`
17970
17971	// The name of the subnet this integration runtime will join.
17972	Subnet *string `json:"subnet,omitempty"`
17973
17974	// The ID of the VNet that this integration runtime will join.
17975	VNetID *string `json:"vNetId,omitempty"`
17976}
17977
17978// MarshalJSON implements the json.Marshaller interface for type IntegrationRuntimeVNetProperties.
17979func (i IntegrationRuntimeVNetProperties) MarshalJSON() ([]byte, error) {
17980	objectMap := make(map[string]interface{})
17981	populate(objectMap, "publicIPs", i.PublicIPs)
17982	populate(objectMap, "subnet", i.Subnet)
17983	populate(objectMap, "vNetId", i.VNetID)
17984	if i.AdditionalProperties != nil {
17985		for key, val := range i.AdditionalProperties {
17986			objectMap[key] = val
17987		}
17988	}
17989	return json.Marshal(objectMap)
17990}
17991
17992// UnmarshalJSON implements the json.Unmarshaller interface for type IntegrationRuntimeVNetProperties.
17993func (i *IntegrationRuntimeVNetProperties) UnmarshalJSON(data []byte) error {
17994	var rawMsg map[string]json.RawMessage
17995	if err := json.Unmarshal(data, &rawMsg); err != nil {
17996		return err
17997	}
17998	for key, val := range rawMsg {
17999		var err error
18000		switch key {
18001		case "publicIPs":
18002			err = unpopulate(val, &i.PublicIPs)
18003			delete(rawMsg, key)
18004		case "subnet":
18005			err = unpopulate(val, &i.Subnet)
18006			delete(rawMsg, key)
18007		case "vNetId":
18008			err = unpopulate(val, &i.VNetID)
18009			delete(rawMsg, key)
18010		default:
18011			if i.AdditionalProperties == nil {
18012				i.AdditionalProperties = map[string]interface{}{}
18013			}
18014			if val != nil {
18015				var aux interface{}
18016				err = json.Unmarshal(val, &aux)
18017				i.AdditionalProperties[key] = aux
18018			}
18019			delete(rawMsg, key)
18020		}
18021		if err != nil {
18022			return err
18023		}
18024	}
18025	return nil
18026}
18027
18028// IntegrationRuntimesGetOptions contains the optional parameters for the IntegrationRuntimes.Get method.
18029type IntegrationRuntimesGetOptions struct {
18030	// placeholder for future optional parameters
18031}
18032
18033// IntegrationRuntimesListOptions contains the optional parameters for the IntegrationRuntimes.List method.
18034type IntegrationRuntimesListOptions struct {
18035	// placeholder for future optional parameters
18036}
18037
18038// JSONDataset - Json dataset.
18039type JSONDataset struct {
18040	Dataset
18041	// Json dataset properties.
18042	TypeProperties *JSONDatasetTypeProperties `json:"typeProperties,omitempty"`
18043}
18044
18045// MarshalJSON implements the json.Marshaller interface for type JSONDataset.
18046func (j JSONDataset) MarshalJSON() ([]byte, error) {
18047	objectMap := j.Dataset.marshalInternal("Json")
18048	populate(objectMap, "typeProperties", j.TypeProperties)
18049	return json.Marshal(objectMap)
18050}
18051
18052// UnmarshalJSON implements the json.Unmarshaller interface for type JSONDataset.
18053func (j *JSONDataset) UnmarshalJSON(data []byte) error {
18054	var rawMsg map[string]json.RawMessage
18055	if err := json.Unmarshal(data, &rawMsg); err != nil {
18056		return err
18057	}
18058	for key, val := range rawMsg {
18059		var err error
18060		switch key {
18061		case "typeProperties":
18062			err = unpopulate(val, &j.TypeProperties)
18063			delete(rawMsg, key)
18064		}
18065		if err != nil {
18066			return err
18067		}
18068	}
18069	return j.Dataset.unmarshalInternal(rawMsg)
18070}
18071
18072// JSONDatasetTypeProperties - Json dataset properties.
18073type JSONDatasetTypeProperties struct {
18074	// REQUIRED; The location of the json data storage.
18075	Location DatasetLocationClassification `json:"location,omitempty"`
18076
18077	// The data compression method used for the json dataset.
18078	Compression DatasetCompressionClassification `json:"compression,omitempty"`
18079
18080	// The code page name of the preferred encoding. If not specified, the default value is UTF-8, unless BOM denotes another Unicode encoding. Refer to the
18081	// name column of the table in the following link to
18082	// set supported values: https://msdn.microsoft.com/library/system.text.encoding.aspx. Type: string (or Expression with resultType string).
18083	EncodingName interface{} `json:"encodingName,omitempty"`
18084}
18085
18086// MarshalJSON implements the json.Marshaller interface for type JSONDatasetTypeProperties.
18087func (j JSONDatasetTypeProperties) MarshalJSON() ([]byte, error) {
18088	objectMap := make(map[string]interface{})
18089	populate(objectMap, "compression", j.Compression)
18090	populate(objectMap, "encodingName", j.EncodingName)
18091	populate(objectMap, "location", j.Location)
18092	return json.Marshal(objectMap)
18093}
18094
18095// UnmarshalJSON implements the json.Unmarshaller interface for type JSONDatasetTypeProperties.
18096func (j *JSONDatasetTypeProperties) UnmarshalJSON(data []byte) error {
18097	var rawMsg map[string]json.RawMessage
18098	if err := json.Unmarshal(data, &rawMsg); err != nil {
18099		return err
18100	}
18101	for key, val := range rawMsg {
18102		var err error
18103		switch key {
18104		case "compression":
18105			j.Compression, err = unmarshalDatasetCompressionClassification(val)
18106			delete(rawMsg, key)
18107		case "encodingName":
18108			err = unpopulate(val, &j.EncodingName)
18109			delete(rawMsg, key)
18110		case "location":
18111			j.Location, err = unmarshalDatasetLocationClassification(val)
18112			delete(rawMsg, key)
18113		}
18114		if err != nil {
18115			return err
18116		}
18117	}
18118	return nil
18119}
18120
18121// JSONFormat - The data stored in JSON format.
18122type JSONFormat struct {
18123	DatasetStorageFormat
18124	// The code page name of the preferred encoding. If not provided, the default value is 'utf-8', unless the byte order mark (BOM) denotes another Unicode
18125	// encoding. The full list of supported values can be
18126	// found in the 'Name' column of the table of encodings in the following reference: https://go.microsoft.com/fwlink/?linkid=861078. Type: string (or Expression
18127	// with resultType string).
18128	EncodingName interface{} `json:"encodingName,omitempty"`
18129
18130	// File pattern of JSON. To be more specific, the way of separating a collection of JSON objects. The default value is 'setOfObjects'. It is case-sensitive.
18131	FilePattern *JSONFormatFilePattern `json:"filePattern,omitempty"`
18132
18133	// The JSONPath of the JSON array element to be flattened. Example: "$.ArrayPath". Type: string (or Expression with resultType string).
18134	JSONNodeReference interface{} `json:"jsonNodeReference,omitempty"`
18135
18136	// The JSONPath definition for each column mapping with a customized column name to extract data from JSON file. For fields under root object, start with
18137	// "$"; for fields inside the array chosen by
18138	// jsonNodeReference property, start from the array element. Example: {"Column1": "$.Column1Path", "Column2": "Column2PathInArray"}. Type: object (or Expression
18139	// with resultType object).
18140	JSONPathDefinition interface{} `json:"jsonPathDefinition,omitempty"`
18141
18142	// The character used to separate nesting levels. Default value is '.' (dot). Type: string (or Expression with resultType string).
18143	NestingSeparator interface{} `json:"nestingSeparator,omitempty"`
18144}
18145
18146// MarshalJSON implements the json.Marshaller interface for type JSONFormat.
18147func (j JSONFormat) MarshalJSON() ([]byte, error) {
18148	objectMap := j.DatasetStorageFormat.marshalInternal("JsonFormat")
18149	populate(objectMap, "encodingName", j.EncodingName)
18150	populate(objectMap, "filePattern", j.FilePattern)
18151	populate(objectMap, "jsonNodeReference", j.JSONNodeReference)
18152	populate(objectMap, "jsonPathDefinition", j.JSONPathDefinition)
18153	populate(objectMap, "nestingSeparator", j.NestingSeparator)
18154	return json.Marshal(objectMap)
18155}
18156
18157// UnmarshalJSON implements the json.Unmarshaller interface for type JSONFormat.
18158func (j *JSONFormat) UnmarshalJSON(data []byte) error {
18159	var rawMsg map[string]json.RawMessage
18160	if err := json.Unmarshal(data, &rawMsg); err != nil {
18161		return err
18162	}
18163	for key, val := range rawMsg {
18164		var err error
18165		switch key {
18166		case "encodingName":
18167			err = unpopulate(val, &j.EncodingName)
18168			delete(rawMsg, key)
18169		case "filePattern":
18170			err = unpopulate(val, &j.FilePattern)
18171			delete(rawMsg, key)
18172		case "jsonNodeReference":
18173			err = unpopulate(val, &j.JSONNodeReference)
18174			delete(rawMsg, key)
18175		case "jsonPathDefinition":
18176			err = unpopulate(val, &j.JSONPathDefinition)
18177			delete(rawMsg, key)
18178		case "nestingSeparator":
18179			err = unpopulate(val, &j.NestingSeparator)
18180			delete(rawMsg, key)
18181		}
18182		if err != nil {
18183			return err
18184		}
18185	}
18186	return j.DatasetStorageFormat.unmarshalInternal(rawMsg)
18187}
18188
18189// JSONReadSettings - Json read settings.
18190type JSONReadSettings struct {
18191	FormatReadSettings
18192	// Compression settings.
18193	CompressionProperties CompressionReadSettingsClassification `json:"compressionProperties,omitempty"`
18194}
18195
18196// MarshalJSON implements the json.Marshaller interface for type JSONReadSettings.
18197func (j JSONReadSettings) MarshalJSON() ([]byte, error) {
18198	objectMap := j.FormatReadSettings.marshalInternal("JsonReadSettings")
18199	populate(objectMap, "compressionProperties", j.CompressionProperties)
18200	return json.Marshal(objectMap)
18201}
18202
18203// UnmarshalJSON implements the json.Unmarshaller interface for type JSONReadSettings.
18204func (j *JSONReadSettings) UnmarshalJSON(data []byte) error {
18205	var rawMsg map[string]json.RawMessage
18206	if err := json.Unmarshal(data, &rawMsg); err != nil {
18207		return err
18208	}
18209	for key, val := range rawMsg {
18210		var err error
18211		switch key {
18212		case "compressionProperties":
18213			j.CompressionProperties, err = unmarshalCompressionReadSettingsClassification(val)
18214			delete(rawMsg, key)
18215		}
18216		if err != nil {
18217			return err
18218		}
18219	}
18220	return j.FormatReadSettings.unmarshalInternal(rawMsg)
18221}
18222
18223// JSONSink - A copy activity Json sink.
18224type JSONSink struct {
18225	CopySink
18226	// Json format settings.
18227	FormatSettings *JSONWriteSettings `json:"formatSettings,omitempty"`
18228
18229	// Json store settings.
18230	StoreSettings StoreWriteSettingsClassification `json:"storeSettings,omitempty"`
18231}
18232
18233// MarshalJSON implements the json.Marshaller interface for type JSONSink.
18234func (j JSONSink) MarshalJSON() ([]byte, error) {
18235	objectMap := j.CopySink.marshalInternal("JsonSink")
18236	populate(objectMap, "formatSettings", j.FormatSettings)
18237	populate(objectMap, "storeSettings", j.StoreSettings)
18238	return json.Marshal(objectMap)
18239}
18240
18241// UnmarshalJSON implements the json.Unmarshaller interface for type JSONSink.
18242func (j *JSONSink) UnmarshalJSON(data []byte) error {
18243	var rawMsg map[string]json.RawMessage
18244	if err := json.Unmarshal(data, &rawMsg); err != nil {
18245		return err
18246	}
18247	for key, val := range rawMsg {
18248		var err error
18249		switch key {
18250		case "formatSettings":
18251			err = unpopulate(val, &j.FormatSettings)
18252			delete(rawMsg, key)
18253		case "storeSettings":
18254			j.StoreSettings, err = unmarshalStoreWriteSettingsClassification(val)
18255			delete(rawMsg, key)
18256		}
18257		if err != nil {
18258			return err
18259		}
18260	}
18261	return j.CopySink.unmarshalInternal(rawMsg)
18262}
18263
18264// JSONSource - A copy activity Json source.
18265type JSONSource struct {
18266	CopySource
18267	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
18268	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
18269
18270	// Json format settings.
18271	FormatSettings *JSONReadSettings `json:"formatSettings,omitempty"`
18272
18273	// Json store settings.
18274	StoreSettings StoreReadSettingsClassification `json:"storeSettings,omitempty"`
18275}
18276
18277// MarshalJSON implements the json.Marshaller interface for type JSONSource.
18278func (j JSONSource) MarshalJSON() ([]byte, error) {
18279	objectMap := j.CopySource.marshalInternal("JsonSource")
18280	populate(objectMap, "additionalColumns", j.AdditionalColumns)
18281	populate(objectMap, "formatSettings", j.FormatSettings)
18282	populate(objectMap, "storeSettings", j.StoreSettings)
18283	return json.Marshal(objectMap)
18284}
18285
18286// UnmarshalJSON implements the json.Unmarshaller interface for type JSONSource.
18287func (j *JSONSource) UnmarshalJSON(data []byte) error {
18288	var rawMsg map[string]json.RawMessage
18289	if err := json.Unmarshal(data, &rawMsg); err != nil {
18290		return err
18291	}
18292	for key, val := range rawMsg {
18293		var err error
18294		switch key {
18295		case "additionalColumns":
18296			err = unpopulate(val, &j.AdditionalColumns)
18297			delete(rawMsg, key)
18298		case "formatSettings":
18299			err = unpopulate(val, &j.FormatSettings)
18300			delete(rawMsg, key)
18301		case "storeSettings":
18302			j.StoreSettings, err = unmarshalStoreReadSettingsClassification(val)
18303			delete(rawMsg, key)
18304		}
18305		if err != nil {
18306			return err
18307		}
18308	}
18309	return j.CopySource.unmarshalInternal(rawMsg)
18310}
18311
18312// JSONWriteSettings - Json write settings.
18313type JSONWriteSettings struct {
18314	FormatWriteSettings
18315	// File pattern of JSON. This setting controls the way a collection of JSON objects will be treated. The default value is 'setOfObjects'. It is case-sensitive.
18316	FilePattern *JSONWriteFilePattern `json:"filePattern,omitempty"`
18317}
18318
18319// MarshalJSON implements the json.Marshaller interface for type JSONWriteSettings.
18320func (j JSONWriteSettings) MarshalJSON() ([]byte, error) {
18321	objectMap := j.FormatWriteSettings.marshalInternal("JsonWriteSettings")
18322	populate(objectMap, "filePattern", j.FilePattern)
18323	return json.Marshal(objectMap)
18324}
18325
18326// UnmarshalJSON implements the json.Unmarshaller interface for type JSONWriteSettings.
18327func (j *JSONWriteSettings) UnmarshalJSON(data []byte) error {
18328	var rawMsg map[string]json.RawMessage
18329	if err := json.Unmarshal(data, &rawMsg); err != nil {
18330		return err
18331	}
18332	for key, val := range rawMsg {
18333		var err error
18334		switch key {
18335		case "filePattern":
18336			err = unpopulate(val, &j.FilePattern)
18337			delete(rawMsg, key)
18338		}
18339		if err != nil {
18340			return err
18341		}
18342	}
18343	return j.FormatWriteSettings.unmarshalInternal(rawMsg)
18344}
18345
18346// JiraLinkedService - Jira Service linked service.
18347type JiraLinkedService struct {
18348	LinkedService
18349	// REQUIRED; Jira Service linked service properties.
18350	TypeProperties *JiraLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
18351}
18352
18353// MarshalJSON implements the json.Marshaller interface for type JiraLinkedService.
18354func (j JiraLinkedService) MarshalJSON() ([]byte, error) {
18355	objectMap := j.LinkedService.marshalInternal("Jira")
18356	populate(objectMap, "typeProperties", j.TypeProperties)
18357	return json.Marshal(objectMap)
18358}
18359
18360// UnmarshalJSON implements the json.Unmarshaller interface for type JiraLinkedService.
18361func (j *JiraLinkedService) UnmarshalJSON(data []byte) error {
18362	var rawMsg map[string]json.RawMessage
18363	if err := json.Unmarshal(data, &rawMsg); err != nil {
18364		return err
18365	}
18366	for key, val := range rawMsg {
18367		var err error
18368		switch key {
18369		case "typeProperties":
18370			err = unpopulate(val, &j.TypeProperties)
18371			delete(rawMsg, key)
18372		}
18373		if err != nil {
18374			return err
18375		}
18376	}
18377	return j.LinkedService.unmarshalInternal(rawMsg)
18378}
18379
18380// JiraLinkedServiceTypeProperties - Jira Service linked service properties.
18381type JiraLinkedServiceTypeProperties struct {
18382	// REQUIRED; The IP address or host name of the Jira service. (e.g. jira.example.com)
18383	Host interface{} `json:"host,omitempty"`
18384
18385	// REQUIRED; The user name that you use to access Jira Service.
18386	Username interface{} `json:"username,omitempty"`
18387
18388	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
18389	// with resultType string).
18390	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
18391
18392	// The password corresponding to the user name that you provided in the username field.
18393	Password SecretBaseClassification `json:"password,omitempty"`
18394
18395	// The TCP port that the Jira server uses to listen for client connections. The default value is 443 if connecting through HTTPS, or 8080 if connecting
18396	// through HTTP.
18397	Port interface{} `json:"port,omitempty"`
18398
18399	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
18400	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
18401
18402	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
18403	// is true.
18404	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
18405
18406	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
18407	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
18408}
18409
18410// MarshalJSON implements the json.Marshaller interface for type JiraLinkedServiceTypeProperties.
18411func (j JiraLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
18412	objectMap := make(map[string]interface{})
18413	populate(objectMap, "encryptedCredential", j.EncryptedCredential)
18414	populate(objectMap, "host", j.Host)
18415	populate(objectMap, "password", j.Password)
18416	populate(objectMap, "port", j.Port)
18417	populate(objectMap, "useEncryptedEndpoints", j.UseEncryptedEndpoints)
18418	populate(objectMap, "useHostVerification", j.UseHostVerification)
18419	populate(objectMap, "usePeerVerification", j.UsePeerVerification)
18420	populate(objectMap, "username", j.Username)
18421	return json.Marshal(objectMap)
18422}
18423
18424// UnmarshalJSON implements the json.Unmarshaller interface for type JiraLinkedServiceTypeProperties.
18425func (j *JiraLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
18426	var rawMsg map[string]json.RawMessage
18427	if err := json.Unmarshal(data, &rawMsg); err != nil {
18428		return err
18429	}
18430	for key, val := range rawMsg {
18431		var err error
18432		switch key {
18433		case "encryptedCredential":
18434			err = unpopulate(val, &j.EncryptedCredential)
18435			delete(rawMsg, key)
18436		case "host":
18437			err = unpopulate(val, &j.Host)
18438			delete(rawMsg, key)
18439		case "password":
18440			j.Password, err = unmarshalSecretBaseClassification(val)
18441			delete(rawMsg, key)
18442		case "port":
18443			err = unpopulate(val, &j.Port)
18444			delete(rawMsg, key)
18445		case "useEncryptedEndpoints":
18446			err = unpopulate(val, &j.UseEncryptedEndpoints)
18447			delete(rawMsg, key)
18448		case "useHostVerification":
18449			err = unpopulate(val, &j.UseHostVerification)
18450			delete(rawMsg, key)
18451		case "usePeerVerification":
18452			err = unpopulate(val, &j.UsePeerVerification)
18453			delete(rawMsg, key)
18454		case "username":
18455			err = unpopulate(val, &j.Username)
18456			delete(rawMsg, key)
18457		}
18458		if err != nil {
18459			return err
18460		}
18461	}
18462	return nil
18463}
18464
18465// JiraObjectDataset - Jira Service dataset.
18466type JiraObjectDataset struct {
18467	Dataset
18468	// Properties specific to this dataset type.
18469	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
18470}
18471
18472// MarshalJSON implements the json.Marshaller interface for type JiraObjectDataset.
18473func (j JiraObjectDataset) MarshalJSON() ([]byte, error) {
18474	objectMap := j.Dataset.marshalInternal("JiraObject")
18475	populate(objectMap, "typeProperties", j.TypeProperties)
18476	return json.Marshal(objectMap)
18477}
18478
18479// UnmarshalJSON implements the json.Unmarshaller interface for type JiraObjectDataset.
18480func (j *JiraObjectDataset) UnmarshalJSON(data []byte) error {
18481	var rawMsg map[string]json.RawMessage
18482	if err := json.Unmarshal(data, &rawMsg); err != nil {
18483		return err
18484	}
18485	for key, val := range rawMsg {
18486		var err error
18487		switch key {
18488		case "typeProperties":
18489			err = unpopulate(val, &j.TypeProperties)
18490			delete(rawMsg, key)
18491		}
18492		if err != nil {
18493			return err
18494		}
18495	}
18496	return j.Dataset.unmarshalInternal(rawMsg)
18497}
18498
18499// JiraSource - A copy activity Jira Service source.
18500type JiraSource struct {
18501	TabularSource
18502	// A query to retrieve data from source. Type: string (or Expression with resultType string).
18503	Query interface{} `json:"query,omitempty"`
18504}
18505
18506// MarshalJSON implements the json.Marshaller interface for type JiraSource.
18507func (j JiraSource) MarshalJSON() ([]byte, error) {
18508	objectMap := j.TabularSource.marshalInternal("JiraSource")
18509	populate(objectMap, "query", j.Query)
18510	return json.Marshal(objectMap)
18511}
18512
18513// UnmarshalJSON implements the json.Unmarshaller interface for type JiraSource.
18514func (j *JiraSource) UnmarshalJSON(data []byte) error {
18515	var rawMsg map[string]json.RawMessage
18516	if err := json.Unmarshal(data, &rawMsg); err != nil {
18517		return err
18518	}
18519	for key, val := range rawMsg {
18520		var err error
18521		switch key {
18522		case "query":
18523			err = unpopulate(val, &j.Query)
18524			delete(rawMsg, key)
18525		}
18526		if err != nil {
18527			return err
18528		}
18529	}
18530	return j.TabularSource.unmarshalInternal(rawMsg)
18531}
18532
18533// LibraryAppendOptions contains the optional parameters for the Library.Append method.
18534type LibraryAppendOptions struct {
18535	// Set this header to a byte offset at which the block is expected to be appended. The request succeeds only if the current offset matches this value. Otherwise,
18536	// the request fails with the AppendPositionConditionNotMet error (HTTP status code 412 – Precondition Failed)
18537	BlobConditionAppendPosition *int64
18538}
18539
18540// LibraryBeginCreateOptions contains the optional parameters for the Library.BeginCreate method.
18541type LibraryBeginCreateOptions struct {
18542	// placeholder for future optional parameters
18543}
18544
18545// LibraryBeginDeleteOptions contains the optional parameters for the Library.BeginDelete method.
18546type LibraryBeginDeleteOptions struct {
18547	// placeholder for future optional parameters
18548}
18549
18550// LibraryBeginFlushOptions contains the optional parameters for the Library.BeginFlush method.
18551type LibraryBeginFlushOptions struct {
18552	// placeholder for future optional parameters
18553}
18554
18555// LibraryGetOperationResultOptions contains the optional parameters for the Library.GetOperationResult method.
18556type LibraryGetOperationResultOptions struct {
18557	// placeholder for future optional parameters
18558}
18559
18560// LibraryGetOptions contains the optional parameters for the Library.Get method.
18561type LibraryGetOptions struct {
18562	// placeholder for future optional parameters
18563}
18564
18565// LibraryInfo - Library/package information of a Big Data pool powered by Apache Spark
18566type LibraryInfo struct {
18567	// Storage blob container name.
18568	ContainerName *string `json:"containerName,omitempty"`
18569
18570	// Name of the library.
18571	Name *string `json:"name,omitempty"`
18572
18573	// Storage blob path of library.
18574	Path *string `json:"path,omitempty"`
18575
18576	// Type of the library.
18577	Type *string `json:"type,omitempty"`
18578
18579	// READ-ONLY; Creator Id of the library/package.
18580	CreatorID *string `json:"creatorId,omitempty" azure:"ro"`
18581
18582	// READ-ONLY; Provisioning status of the library/package.
18583	ProvisioningStatus *string `json:"provisioningStatus,omitempty" azure:"ro"`
18584
18585	// READ-ONLY; The last update time of the library.
18586	UploadedTimestamp *time.Time `json:"uploadedTimestamp,omitempty" azure:"ro"`
18587}
18588
18589// MarshalJSON implements the json.Marshaller interface for type LibraryInfo.
18590func (l LibraryInfo) MarshalJSON() ([]byte, error) {
18591	objectMap := make(map[string]interface{})
18592	populate(objectMap, "containerName", l.ContainerName)
18593	populate(objectMap, "creatorId", l.CreatorID)
18594	populate(objectMap, "name", l.Name)
18595	populate(objectMap, "path", l.Path)
18596	populate(objectMap, "provisioningStatus", l.ProvisioningStatus)
18597	populate(objectMap, "type", l.Type)
18598	populate(objectMap, "uploadedTimestamp", (*timeRFC3339)(l.UploadedTimestamp))
18599	return json.Marshal(objectMap)
18600}
18601
18602// UnmarshalJSON implements the json.Unmarshaller interface for type LibraryInfo.
18603func (l *LibraryInfo) UnmarshalJSON(data []byte) error {
18604	var rawMsg map[string]json.RawMessage
18605	if err := json.Unmarshal(data, &rawMsg); err != nil {
18606		return err
18607	}
18608	for key, val := range rawMsg {
18609		var err error
18610		switch key {
18611		case "containerName":
18612			err = unpopulate(val, &l.ContainerName)
18613			delete(rawMsg, key)
18614		case "creatorId":
18615			err = unpopulate(val, &l.CreatorID)
18616			delete(rawMsg, key)
18617		case "name":
18618			err = unpopulate(val, &l.Name)
18619			delete(rawMsg, key)
18620		case "path":
18621			err = unpopulate(val, &l.Path)
18622			delete(rawMsg, key)
18623		case "provisioningStatus":
18624			err = unpopulate(val, &l.ProvisioningStatus)
18625			delete(rawMsg, key)
18626		case "type":
18627			err = unpopulate(val, &l.Type)
18628			delete(rawMsg, key)
18629		case "uploadedTimestamp":
18630			var aux timeRFC3339
18631			err = unpopulate(val, &aux)
18632			l.UploadedTimestamp = (*time.Time)(&aux)
18633			delete(rawMsg, key)
18634		}
18635		if err != nil {
18636			return err
18637		}
18638	}
18639	return nil
18640}
18641
18642// LibraryListOptions contains the optional parameters for the Library.List method.
18643type LibraryListOptions struct {
18644	// placeholder for future optional parameters
18645}
18646
18647// LibraryListResponse - A list of Library resources.
18648type LibraryListResponse struct {
18649	// REQUIRED; List of Library.
18650	Value []*LibraryResource `json:"value,omitempty"`
18651
18652	// The link to the next page of results, if any remaining results exist.
18653	NextLink *string `json:"nextLink,omitempty"`
18654}
18655
18656// MarshalJSON implements the json.Marshaller interface for type LibraryListResponse.
18657func (l LibraryListResponse) MarshalJSON() ([]byte, error) {
18658	objectMap := make(map[string]interface{})
18659	populate(objectMap, "nextLink", l.NextLink)
18660	populate(objectMap, "value", l.Value)
18661	return json.Marshal(objectMap)
18662}
18663
18664// LibraryRequirements - Library requirements for a Big Data pool powered by Apache Spark
18665type LibraryRequirements struct {
18666	// The library requirements.
18667	Content *string `json:"content,omitempty"`
18668
18669	// The filename of the library requirements file.
18670	Filename *string `json:"filename,omitempty"`
18671
18672	// READ-ONLY; The last update time of the library requirements file.
18673	Time *time.Time `json:"time,omitempty" azure:"ro"`
18674}
18675
18676// MarshalJSON implements the json.Marshaller interface for type LibraryRequirements.
18677func (l LibraryRequirements) MarshalJSON() ([]byte, error) {
18678	objectMap := make(map[string]interface{})
18679	populate(objectMap, "content", l.Content)
18680	populate(objectMap, "filename", l.Filename)
18681	populate(objectMap, "time", (*timeRFC3339)(l.Time))
18682	return json.Marshal(objectMap)
18683}
18684
18685// UnmarshalJSON implements the json.Unmarshaller interface for type LibraryRequirements.
18686func (l *LibraryRequirements) UnmarshalJSON(data []byte) error {
18687	var rawMsg map[string]json.RawMessage
18688	if err := json.Unmarshal(data, &rawMsg); err != nil {
18689		return err
18690	}
18691	for key, val := range rawMsg {
18692		var err error
18693		switch key {
18694		case "content":
18695			err = unpopulate(val, &l.Content)
18696			delete(rawMsg, key)
18697		case "filename":
18698			err = unpopulate(val, &l.Filename)
18699			delete(rawMsg, key)
18700		case "time":
18701			var aux timeRFC3339
18702			err = unpopulate(val, &aux)
18703			l.Time = (*time.Time)(&aux)
18704			delete(rawMsg, key)
18705		}
18706		if err != nil {
18707			return err
18708		}
18709	}
18710	return nil
18711}
18712
18713// LibraryResource - Library response details
18714type LibraryResource struct {
18715	SubResource
18716	// REQUIRED; Library/package properties.
18717	Properties *LibraryResourceProperties `json:"properties,omitempty"`
18718}
18719
18720// MarshalJSON implements the json.Marshaller interface for type LibraryResource.
18721func (l LibraryResource) MarshalJSON() ([]byte, error) {
18722	objectMap := l.SubResource.marshalInternal()
18723	populate(objectMap, "properties", l.Properties)
18724	return json.Marshal(objectMap)
18725}
18726
18727// UnmarshalJSON implements the json.Unmarshaller interface for type LibraryResource.
18728func (l *LibraryResource) UnmarshalJSON(data []byte) error {
18729	var rawMsg map[string]json.RawMessage
18730	if err := json.Unmarshal(data, &rawMsg); err != nil {
18731		return err
18732	}
18733	for key, val := range rawMsg {
18734		var err error
18735		switch key {
18736		case "properties":
18737			err = unpopulate(val, &l.Properties)
18738			delete(rawMsg, key)
18739		}
18740		if err != nil {
18741			return err
18742		}
18743	}
18744	return l.SubResource.unmarshalInternal(rawMsg)
18745}
18746
18747// LibraryResourceInfo - Library resource info
18748type LibraryResourceInfo struct {
18749	// READ-ONLY; artifact Id of the library/package.
18750	ArtifactID *string `json:"artifactId,omitempty" azure:"ro"`
18751
18752	// READ-ONLY; The last updated time of the library/package.
18753	Changed *string `json:"changed,omitempty" azure:"ro"`
18754
18755	// READ-ONLY; The creation time of the library/package.
18756	Created *string `json:"created,omitempty" azure:"ro"`
18757
18758	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
18759	ID *string `json:"id,omitempty" azure:"ro"`
18760
18761	// READ-ONLY; Name of the library/package.
18762	Name *string `json:"name,omitempty" azure:"ro"`
18763
18764	// READ-ONLY; Operation Id of the operation performed on library/package.
18765	OperationID *string `json:"operationId,omitempty" azure:"ro"`
18766
18767	// READ-ONLY; record Id of the library/package.
18768	RecordID *int32 `json:"recordId,omitempty" azure:"ro"`
18769
18770	// READ-ONLY; Provisioning status of the library/package.
18771	State *string `json:"state,omitempty" azure:"ro"`
18772
18773	// READ-ONLY; The type of the resource. E.g. LibraryArtifact
18774	Type *string `json:"type,omitempty" azure:"ro"`
18775}
18776
18777// LibraryResourceProperties - Library/package properties
18778type LibraryResourceProperties struct {
18779	// READ-ONLY; Container name of the library/package.
18780	ContainerName *string `json:"containerName,omitempty" azure:"ro"`
18781
18782	// READ-ONLY; Creator Id of the library/package.
18783	CreatorID *string `json:"creatorId,omitempty" azure:"ro"`
18784
18785	// READ-ONLY; Name of the library/package.
18786	Name *string `json:"name,omitempty" azure:"ro"`
18787
18788	// READ-ONLY; Location of library/package in storage account.
18789	Path *string `json:"path,omitempty" azure:"ro"`
18790
18791	// READ-ONLY; Provisioning status of the library/package.
18792	ProvisioningStatus *string `json:"provisioningStatus,omitempty" azure:"ro"`
18793
18794	// READ-ONLY; Type of the library/package.
18795	Type *string `json:"type,omitempty" azure:"ro"`
18796
18797	// READ-ONLY; The last update time of the library/package.
18798	UploadedTimestamp *string `json:"uploadedTimestamp,omitempty" azure:"ro"`
18799}
18800
18801// LinkedIntegrationRuntimeKeyAuthorization - The key authorization type integration runtime.
18802type LinkedIntegrationRuntimeKeyAuthorization struct {
18803	LinkedIntegrationRuntimeType
18804	// REQUIRED; The key used for authorization.
18805	Key *SecureString `json:"key,omitempty"`
18806}
18807
18808// MarshalJSON implements the json.Marshaller interface for type LinkedIntegrationRuntimeKeyAuthorization.
18809func (l LinkedIntegrationRuntimeKeyAuthorization) MarshalJSON() ([]byte, error) {
18810	objectMap := l.LinkedIntegrationRuntimeType.marshalInternal("Key")
18811	populate(objectMap, "key", l.Key)
18812	return json.Marshal(objectMap)
18813}
18814
18815// UnmarshalJSON implements the json.Unmarshaller interface for type LinkedIntegrationRuntimeKeyAuthorization.
18816func (l *LinkedIntegrationRuntimeKeyAuthorization) UnmarshalJSON(data []byte) error {
18817	var rawMsg map[string]json.RawMessage
18818	if err := json.Unmarshal(data, &rawMsg); err != nil {
18819		return err
18820	}
18821	for key, val := range rawMsg {
18822		var err error
18823		switch key {
18824		case "key":
18825			err = unpopulate(val, &l.Key)
18826			delete(rawMsg, key)
18827		}
18828		if err != nil {
18829			return err
18830		}
18831	}
18832	return l.LinkedIntegrationRuntimeType.unmarshalInternal(rawMsg)
18833}
18834
18835// LinkedIntegrationRuntimeRbacAuthorization - The role based access control (RBAC) authorization type integration runtime.
18836type LinkedIntegrationRuntimeRbacAuthorization struct {
18837	LinkedIntegrationRuntimeType
18838	// REQUIRED; The resource identifier of the integration runtime to be shared.
18839	ResourceID *string `json:"resourceId,omitempty"`
18840}
18841
18842// MarshalJSON implements the json.Marshaller interface for type LinkedIntegrationRuntimeRbacAuthorization.
18843func (l LinkedIntegrationRuntimeRbacAuthorization) MarshalJSON() ([]byte, error) {
18844	objectMap := l.LinkedIntegrationRuntimeType.marshalInternal("RBAC")
18845	populate(objectMap, "resourceId", l.ResourceID)
18846	return json.Marshal(objectMap)
18847}
18848
18849// UnmarshalJSON implements the json.Unmarshaller interface for type LinkedIntegrationRuntimeRbacAuthorization.
18850func (l *LinkedIntegrationRuntimeRbacAuthorization) UnmarshalJSON(data []byte) error {
18851	var rawMsg map[string]json.RawMessage
18852	if err := json.Unmarshal(data, &rawMsg); err != nil {
18853		return err
18854	}
18855	for key, val := range rawMsg {
18856		var err error
18857		switch key {
18858		case "resourceId":
18859			err = unpopulate(val, &l.ResourceID)
18860			delete(rawMsg, key)
18861		}
18862		if err != nil {
18863			return err
18864		}
18865	}
18866	return l.LinkedIntegrationRuntimeType.unmarshalInternal(rawMsg)
18867}
18868
18869// LinkedIntegrationRuntimeTypeClassification provides polymorphic access to related types.
18870// Call the interface's GetLinkedIntegrationRuntimeType() method to access the common type.
18871// Use a type switch to determine the concrete type.  The possible types are:
18872// - *LinkedIntegrationRuntimeKeyAuthorization, *LinkedIntegrationRuntimeRbacAuthorization, *LinkedIntegrationRuntimeType
18873type LinkedIntegrationRuntimeTypeClassification interface {
18874	// GetLinkedIntegrationRuntimeType returns the LinkedIntegrationRuntimeType content of the underlying type.
18875	GetLinkedIntegrationRuntimeType() *LinkedIntegrationRuntimeType
18876}
18877
18878// LinkedIntegrationRuntimeType - The base definition of a linked integration runtime.
18879type LinkedIntegrationRuntimeType struct {
18880	// REQUIRED; The authorization type for integration runtime sharing.
18881	AuthorizationType *string `json:"authorizationType,omitempty"`
18882}
18883
18884// GetLinkedIntegrationRuntimeType implements the LinkedIntegrationRuntimeTypeClassification interface for type LinkedIntegrationRuntimeType.
18885func (l *LinkedIntegrationRuntimeType) GetLinkedIntegrationRuntimeType() *LinkedIntegrationRuntimeType {
18886	return l
18887}
18888
18889// UnmarshalJSON implements the json.Unmarshaller interface for type LinkedIntegrationRuntimeType.
18890func (l *LinkedIntegrationRuntimeType) UnmarshalJSON(data []byte) error {
18891	var rawMsg map[string]json.RawMessage
18892	if err := json.Unmarshal(data, &rawMsg); err != nil {
18893		return err
18894	}
18895	return l.unmarshalInternal(rawMsg)
18896}
18897
18898func (l LinkedIntegrationRuntimeType) marshalInternal(discValue string) map[string]interface{} {
18899	objectMap := make(map[string]interface{})
18900	l.AuthorizationType = &discValue
18901	objectMap["authorizationType"] = l.AuthorizationType
18902	return objectMap
18903}
18904
18905func (l *LinkedIntegrationRuntimeType) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
18906	for key, val := range rawMsg {
18907		var err error
18908		switch key {
18909		case "authorizationType":
18910			err = unpopulate(val, &l.AuthorizationType)
18911			delete(rawMsg, key)
18912		}
18913		if err != nil {
18914			return err
18915		}
18916	}
18917	return nil
18918}
18919
18920// LinkedServiceClassification provides polymorphic access to related types.
18921// Call the interface's GetLinkedService() method to access the common type.
18922// Use a type switch to determine the concrete type.  The possible types are:
18923// - *AmazonMWSLinkedService, *AmazonRedshiftLinkedService, *AmazonS3LinkedService, *AzureBatchLinkedService, *AzureBlobFSLinkedService,
18924// - *AzureBlobStorageLinkedService, *AzureDataExplorerLinkedService, *AzureDataLakeAnalyticsLinkedService, *AzureDataLakeStoreLinkedService,
18925// - *AzureDatabricksDeltaLakeLinkedService, *AzureDatabricksLinkedService, *AzureFileStorageLinkedService, *AzureFunctionLinkedService,
18926// - *AzureKeyVaultLinkedService, *AzureMLLinkedService, *AzureMLServiceLinkedService, *AzureMariaDBLinkedService, *AzureMySqlLinkedService,
18927// - *AzurePostgreSqlLinkedService, *AzureSearchLinkedService, *AzureSqlDWLinkedService, *AzureSqlDatabaseLinkedService, *AzureSqlMILinkedService,
18928// - *AzureStorageLinkedService, *AzureTableStorageLinkedService, *CassandraLinkedService, *CommonDataServiceForAppsLinkedService,
18929// - *ConcurLinkedService, *CosmosDbLinkedService, *CosmosDbMongoDbApiLinkedService, *CouchbaseLinkedService, *CustomDataSourceLinkedService,
18930// - *Db2LinkedService, *DrillLinkedService, *DynamicsAXLinkedService, *DynamicsCrmLinkedService, *DynamicsLinkedService,
18931// - *EloquaLinkedService, *FileServerLinkedService, *FtpServerLinkedService, *GoogleAdWordsLinkedService, *GoogleBigQueryLinkedService,
18932// - *GoogleCloudStorageLinkedService, *GreenplumLinkedService, *HBaseLinkedService, *HDInsightLinkedService, *HDInsightOnDemandLinkedService,
18933// - *HdfsLinkedService, *HiveLinkedService, *HttpLinkedService, *HubspotLinkedService, *ImpalaLinkedService, *InformixLinkedService,
18934// - *JiraLinkedService, *LinkedService, *MagentoLinkedService, *MariaDBLinkedService, *MarketoLinkedService, *MicrosoftAccessLinkedService,
18935// - *MongoDbAtlasLinkedService, *MongoDbLinkedService, *MongoDbV2LinkedService, *MySqlLinkedService, *NetezzaLinkedService,
18936// - *ODataLinkedService, *OdbcLinkedService, *Office365LinkedService, *OracleLinkedService, *OracleServiceCloudLinkedService,
18937// - *PaypalLinkedService, *PhoenixLinkedService, *PostgreSqlLinkedService, *PrestoLinkedService, *QuickBooksLinkedService,
18938// - *ResponsysLinkedService, *RestServiceLinkedService, *SalesforceLinkedService, *SalesforceMarketingCloudLinkedService,
18939// - *SalesforceServiceCloudLinkedService, *SapBWLinkedService, *SapCloudForCustomerLinkedService, *SapEccLinkedService, *SapHanaLinkedService,
18940// - *SapOpenHubLinkedService, *SapTableLinkedService, *ServiceNowLinkedService, *SftpServerLinkedService, *SharePointOnlineListLinkedService,
18941// - *ShopifyLinkedService, *SnowflakeLinkedService, *SparkLinkedService, *SqlServerLinkedService, *SquareLinkedService, *SybaseLinkedService,
18942// - *TeradataLinkedService, *VerticaLinkedService, *WebLinkedService, *XeroLinkedService, *ZohoLinkedService
18943type LinkedServiceClassification interface {
18944	// GetLinkedService returns the LinkedService content of the underlying type.
18945	GetLinkedService() *LinkedService
18946}
18947
18948// LinkedService - The Azure Synapse nested object which contains the information and credential which can be used to connect with related store or compute
18949// resource.
18950type LinkedService struct {
18951	// REQUIRED; Type of linked service.
18952	Type *string `json:"type,omitempty"`
18953
18954	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
18955	AdditionalProperties map[string]interface{}
18956
18957	// List of tags that can be used for describing the linked service.
18958	Annotations []interface{} `json:"annotations,omitempty"`
18959
18960	// The integration runtime reference.
18961	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
18962
18963	// Linked service description.
18964	Description *string `json:"description,omitempty"`
18965
18966	// Parameters for linked service.
18967	Parameters map[string]*ParameterSpecification `json:"parameters,omitempty"`
18968}
18969
18970// GetLinkedService implements the LinkedServiceClassification interface for type LinkedService.
18971func (l *LinkedService) GetLinkedService() *LinkedService { return l }
18972
18973// UnmarshalJSON implements the json.Unmarshaller interface for type LinkedService.
18974func (l *LinkedService) UnmarshalJSON(data []byte) error {
18975	var rawMsg map[string]json.RawMessage
18976	if err := json.Unmarshal(data, &rawMsg); err != nil {
18977		return err
18978	}
18979	return l.unmarshalInternal(rawMsg)
18980}
18981
18982func (l LinkedService) marshalInternal(discValue string) map[string]interface{} {
18983	objectMap := make(map[string]interface{})
18984	populate(objectMap, "annotations", l.Annotations)
18985	populate(objectMap, "connectVia", l.ConnectVia)
18986	populate(objectMap, "description", l.Description)
18987	populate(objectMap, "parameters", l.Parameters)
18988	l.Type = &discValue
18989	objectMap["type"] = l.Type
18990	if l.AdditionalProperties != nil {
18991		for key, val := range l.AdditionalProperties {
18992			objectMap[key] = val
18993		}
18994	}
18995	return objectMap
18996}
18997
18998func (l *LinkedService) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
18999	for key, val := range rawMsg {
19000		var err error
19001		switch key {
19002		case "annotations":
19003			err = unpopulate(val, &l.Annotations)
19004			delete(rawMsg, key)
19005		case "connectVia":
19006			err = unpopulate(val, &l.ConnectVia)
19007			delete(rawMsg, key)
19008		case "description":
19009			err = unpopulate(val, &l.Description)
19010			delete(rawMsg, key)
19011		case "parameters":
19012			err = unpopulate(val, &l.Parameters)
19013			delete(rawMsg, key)
19014		case "type":
19015			err = unpopulate(val, &l.Type)
19016			delete(rawMsg, key)
19017		default:
19018			if l.AdditionalProperties == nil {
19019				l.AdditionalProperties = map[string]interface{}{}
19020			}
19021			if val != nil {
19022				var aux interface{}
19023				err = json.Unmarshal(val, &aux)
19024				l.AdditionalProperties[key] = aux
19025			}
19026			delete(rawMsg, key)
19027		}
19028		if err != nil {
19029			return err
19030		}
19031	}
19032	return nil
19033}
19034
19035// LinkedServiceBeginCreateOrUpdateLinkedServiceOptions contains the optional parameters for the LinkedService.BeginCreateOrUpdateLinkedService method.
19036type LinkedServiceBeginCreateOrUpdateLinkedServiceOptions struct {
19037	// ETag of the linkedService entity. Should only be specified for update, for which it should match existing entity or can be * for unconditional update.
19038	IfMatch *string
19039}
19040
19041// LinkedServiceBeginDeleteLinkedServiceOptions contains the optional parameters for the LinkedService.BeginDeleteLinkedService method.
19042type LinkedServiceBeginDeleteLinkedServiceOptions struct {
19043	// placeholder for future optional parameters
19044}
19045
19046// LinkedServiceBeginRenameLinkedServiceOptions contains the optional parameters for the LinkedService.BeginRenameLinkedService method.
19047type LinkedServiceBeginRenameLinkedServiceOptions struct {
19048	// placeholder for future optional parameters
19049}
19050
19051// LinkedServiceDebugResource - Linked service debug resource.
19052type LinkedServiceDebugResource struct {
19053	SubResourceDebugResource
19054	// REQUIRED; Properties of linked service.
19055	Properties LinkedServiceClassification `json:"properties,omitempty"`
19056}
19057
19058// MarshalJSON implements the json.Marshaller interface for type LinkedServiceDebugResource.
19059func (l LinkedServiceDebugResource) MarshalJSON() ([]byte, error) {
19060	objectMap := l.SubResourceDebugResource.marshalInternal()
19061	populate(objectMap, "properties", l.Properties)
19062	return json.Marshal(objectMap)
19063}
19064
19065// UnmarshalJSON implements the json.Unmarshaller interface for type LinkedServiceDebugResource.
19066func (l *LinkedServiceDebugResource) UnmarshalJSON(data []byte) error {
19067	var rawMsg map[string]json.RawMessage
19068	if err := json.Unmarshal(data, &rawMsg); err != nil {
19069		return err
19070	}
19071	for key, val := range rawMsg {
19072		var err error
19073		switch key {
19074		case "properties":
19075			l.Properties, err = unmarshalLinkedServiceClassification(val)
19076			delete(rawMsg, key)
19077		}
19078		if err != nil {
19079			return err
19080		}
19081	}
19082	return l.SubResourceDebugResource.unmarshalInternal(rawMsg)
19083}
19084
19085// LinkedServiceGetLinkedServiceOptions contains the optional parameters for the LinkedService.GetLinkedService method.
19086type LinkedServiceGetLinkedServiceOptions struct {
19087	// ETag of the linked service entity. Should only be specified for get. If the ETag matches the existing entity tag, or if * was provided, then no content
19088	// will be returned.
19089	IfNoneMatch *string
19090}
19091
19092// LinkedServiceGetLinkedServicesByWorkspaceOptions contains the optional parameters for the LinkedService.GetLinkedServicesByWorkspace method.
19093type LinkedServiceGetLinkedServicesByWorkspaceOptions struct {
19094	// placeholder for future optional parameters
19095}
19096
19097// LinkedServiceListResponse - A list of linked service resources.
19098type LinkedServiceListResponse struct {
19099	// REQUIRED; List of linked services.
19100	Value []*LinkedServiceResource `json:"value,omitempty"`
19101
19102	// The link to the next page of results, if any remaining results exist.
19103	NextLink *string `json:"nextLink,omitempty"`
19104}
19105
19106// MarshalJSON implements the json.Marshaller interface for type LinkedServiceListResponse.
19107func (l LinkedServiceListResponse) MarshalJSON() ([]byte, error) {
19108	objectMap := make(map[string]interface{})
19109	populate(objectMap, "nextLink", l.NextLink)
19110	populate(objectMap, "value", l.Value)
19111	return json.Marshal(objectMap)
19112}
19113
19114// LinkedServiceReference - Linked service reference type.
19115type LinkedServiceReference struct {
19116	// REQUIRED; Reference LinkedService name.
19117	ReferenceName *string `json:"referenceName,omitempty"`
19118
19119	// REQUIRED; Linked service reference type.
19120	Type *Type `json:"type,omitempty"`
19121
19122	// Arguments for LinkedService.
19123	Parameters map[string]interface{} `json:"parameters,omitempty"`
19124}
19125
19126// MarshalJSON implements the json.Marshaller interface for type LinkedServiceReference.
19127func (l LinkedServiceReference) MarshalJSON() ([]byte, error) {
19128	objectMap := make(map[string]interface{})
19129	populate(objectMap, "parameters", l.Parameters)
19130	populate(objectMap, "referenceName", l.ReferenceName)
19131	populate(objectMap, "type", l.Type)
19132	return json.Marshal(objectMap)
19133}
19134
19135// LinkedServiceResource - Linked service resource type.
19136type LinkedServiceResource struct {
19137	SubResource
19138	// REQUIRED; Properties of linked service.
19139	Properties LinkedServiceClassification `json:"properties,omitempty"`
19140}
19141
19142// MarshalJSON implements the json.Marshaller interface for type LinkedServiceResource.
19143func (l LinkedServiceResource) MarshalJSON() ([]byte, error) {
19144	objectMap := l.SubResource.marshalInternal()
19145	populate(objectMap, "properties", l.Properties)
19146	return json.Marshal(objectMap)
19147}
19148
19149// UnmarshalJSON implements the json.Unmarshaller interface for type LinkedServiceResource.
19150func (l *LinkedServiceResource) UnmarshalJSON(data []byte) error {
19151	var rawMsg map[string]json.RawMessage
19152	if err := json.Unmarshal(data, &rawMsg); err != nil {
19153		return err
19154	}
19155	for key, val := range rawMsg {
19156		var err error
19157		switch key {
19158		case "properties":
19159			l.Properties, err = unmarshalLinkedServiceClassification(val)
19160			delete(rawMsg, key)
19161		}
19162		if err != nil {
19163			return err
19164		}
19165	}
19166	return l.SubResource.unmarshalInternal(rawMsg)
19167}
19168
19169// LogLocationSettings - Log location settings.
19170type LogLocationSettings struct {
19171	// REQUIRED; Log storage linked service reference.
19172	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
19173
19174	// The path to storage for storing detailed logs of activity execution. Type: string (or Expression with resultType string).
19175	Path interface{} `json:"path,omitempty"`
19176}
19177
19178// LogSettings - Log settings.
19179type LogSettings struct {
19180	// REQUIRED; Log location settings customer needs to provide when enabling log.
19181	LogLocationSettings *LogLocationSettings `json:"logLocationSettings,omitempty"`
19182
19183	// Specifies settings for copy activity log.
19184	CopyActivityLogSettings *CopyActivityLogSettings `json:"copyActivityLogSettings,omitempty"`
19185
19186	// Specifies whether to enable copy activity log. Type: boolean (or Expression with resultType boolean).
19187	EnableCopyActivityLog interface{} `json:"enableCopyActivityLog,omitempty"`
19188}
19189
19190// LogStorageSettings - (Deprecated. Please use LogSettings) Log storage settings.
19191type LogStorageSettings struct {
19192	// REQUIRED; Log storage linked service reference.
19193	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
19194
19195	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
19196	AdditionalProperties map[string]interface{}
19197
19198	// Specifies whether to enable reliable logging. Type: boolean (or Expression with resultType boolean).
19199	EnableReliableLogging interface{} `json:"enableReliableLogging,omitempty"`
19200
19201	// Gets or sets the log level, support: Info, Warning. Type: string (or Expression with resultType string).
19202	LogLevel interface{} `json:"logLevel,omitempty"`
19203
19204	// The path to storage for storing detailed logs of activity execution. Type: string (or Expression with resultType string).
19205	Path interface{} `json:"path,omitempty"`
19206}
19207
19208// MarshalJSON implements the json.Marshaller interface for type LogStorageSettings.
19209func (l LogStorageSettings) MarshalJSON() ([]byte, error) {
19210	objectMap := make(map[string]interface{})
19211	populate(objectMap, "enableReliableLogging", l.EnableReliableLogging)
19212	populate(objectMap, "linkedServiceName", l.LinkedServiceName)
19213	populate(objectMap, "logLevel", l.LogLevel)
19214	populate(objectMap, "path", l.Path)
19215	if l.AdditionalProperties != nil {
19216		for key, val := range l.AdditionalProperties {
19217			objectMap[key] = val
19218		}
19219	}
19220	return json.Marshal(objectMap)
19221}
19222
19223// UnmarshalJSON implements the json.Unmarshaller interface for type LogStorageSettings.
19224func (l *LogStorageSettings) UnmarshalJSON(data []byte) error {
19225	var rawMsg map[string]json.RawMessage
19226	if err := json.Unmarshal(data, &rawMsg); err != nil {
19227		return err
19228	}
19229	for key, val := range rawMsg {
19230		var err error
19231		switch key {
19232		case "enableReliableLogging":
19233			err = unpopulate(val, &l.EnableReliableLogging)
19234			delete(rawMsg, key)
19235		case "linkedServiceName":
19236			err = unpopulate(val, &l.LinkedServiceName)
19237			delete(rawMsg, key)
19238		case "logLevel":
19239			err = unpopulate(val, &l.LogLevel)
19240			delete(rawMsg, key)
19241		case "path":
19242			err = unpopulate(val, &l.Path)
19243			delete(rawMsg, key)
19244		default:
19245			if l.AdditionalProperties == nil {
19246				l.AdditionalProperties = map[string]interface{}{}
19247			}
19248			if val != nil {
19249				var aux interface{}
19250				err = json.Unmarshal(val, &aux)
19251				l.AdditionalProperties[key] = aux
19252			}
19253			delete(rawMsg, key)
19254		}
19255		if err != nil {
19256			return err
19257		}
19258	}
19259	return nil
19260}
19261
19262// LookupActivity - Lookup activity.
19263type LookupActivity struct {
19264	ExecutionActivity
19265	// REQUIRED; Lookup activity properties.
19266	TypeProperties *LookupActivityTypeProperties `json:"typeProperties,omitempty"`
19267}
19268
19269// MarshalJSON implements the json.Marshaller interface for type LookupActivity.
19270func (l LookupActivity) MarshalJSON() ([]byte, error) {
19271	objectMap := l.ExecutionActivity.marshalInternal("Lookup")
19272	populate(objectMap, "typeProperties", l.TypeProperties)
19273	return json.Marshal(objectMap)
19274}
19275
19276// UnmarshalJSON implements the json.Unmarshaller interface for type LookupActivity.
19277func (l *LookupActivity) UnmarshalJSON(data []byte) error {
19278	var rawMsg map[string]json.RawMessage
19279	if err := json.Unmarshal(data, &rawMsg); err != nil {
19280		return err
19281	}
19282	for key, val := range rawMsg {
19283		var err error
19284		switch key {
19285		case "typeProperties":
19286			err = unpopulate(val, &l.TypeProperties)
19287			delete(rawMsg, key)
19288		}
19289		if err != nil {
19290			return err
19291		}
19292	}
19293	return l.ExecutionActivity.unmarshalInternal(rawMsg)
19294}
19295
19296// LookupActivityTypeProperties - Lookup activity properties.
19297type LookupActivityTypeProperties struct {
19298	// REQUIRED; Lookup activity dataset reference.
19299	Dataset *DatasetReference `json:"dataset,omitempty"`
19300
19301	// REQUIRED; Dataset-specific source properties, same as copy activity source.
19302	Source CopySourceClassification `json:"source,omitempty"`
19303
19304	// Whether to return first row or all rows. Default value is true. Type: boolean (or Expression with resultType boolean).
19305	FirstRowOnly interface{} `json:"firstRowOnly,omitempty"`
19306}
19307
19308// MarshalJSON implements the json.Marshaller interface for type LookupActivityTypeProperties.
19309func (l LookupActivityTypeProperties) MarshalJSON() ([]byte, error) {
19310	objectMap := make(map[string]interface{})
19311	populate(objectMap, "dataset", l.Dataset)
19312	populate(objectMap, "firstRowOnly", l.FirstRowOnly)
19313	populate(objectMap, "source", l.Source)
19314	return json.Marshal(objectMap)
19315}
19316
19317// UnmarshalJSON implements the json.Unmarshaller interface for type LookupActivityTypeProperties.
19318func (l *LookupActivityTypeProperties) UnmarshalJSON(data []byte) error {
19319	var rawMsg map[string]json.RawMessage
19320	if err := json.Unmarshal(data, &rawMsg); err != nil {
19321		return err
19322	}
19323	for key, val := range rawMsg {
19324		var err error
19325		switch key {
19326		case "dataset":
19327			err = unpopulate(val, &l.Dataset)
19328			delete(rawMsg, key)
19329		case "firstRowOnly":
19330			err = unpopulate(val, &l.FirstRowOnly)
19331			delete(rawMsg, key)
19332		case "source":
19333			l.Source, err = unmarshalCopySourceClassification(val)
19334			delete(rawMsg, key)
19335		}
19336		if err != nil {
19337			return err
19338		}
19339	}
19340	return nil
19341}
19342
19343// MagentoLinkedService - Magento server linked service.
19344type MagentoLinkedService struct {
19345	LinkedService
19346	// REQUIRED; Magento server linked service properties.
19347	TypeProperties *MagentoLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
19348}
19349
19350// MarshalJSON implements the json.Marshaller interface for type MagentoLinkedService.
19351func (m MagentoLinkedService) MarshalJSON() ([]byte, error) {
19352	objectMap := m.LinkedService.marshalInternal("Magento")
19353	populate(objectMap, "typeProperties", m.TypeProperties)
19354	return json.Marshal(objectMap)
19355}
19356
19357// UnmarshalJSON implements the json.Unmarshaller interface for type MagentoLinkedService.
19358func (m *MagentoLinkedService) UnmarshalJSON(data []byte) error {
19359	var rawMsg map[string]json.RawMessage
19360	if err := json.Unmarshal(data, &rawMsg); err != nil {
19361		return err
19362	}
19363	for key, val := range rawMsg {
19364		var err error
19365		switch key {
19366		case "typeProperties":
19367			err = unpopulate(val, &m.TypeProperties)
19368			delete(rawMsg, key)
19369		}
19370		if err != nil {
19371			return err
19372		}
19373	}
19374	return m.LinkedService.unmarshalInternal(rawMsg)
19375}
19376
19377// MagentoLinkedServiceTypeProperties - Magento server linked service properties.
19378type MagentoLinkedServiceTypeProperties struct {
19379	// REQUIRED; The URL of the Magento instance. (i.e. 192.168.222.110/magento3)
19380	Host interface{} `json:"host,omitempty"`
19381
19382	// The access token from Magento.
19383	AccessToken SecretBaseClassification `json:"accessToken,omitempty"`
19384
19385	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
19386	// with resultType string).
19387	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
19388
19389	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
19390	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
19391
19392	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
19393	// is true.
19394	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
19395
19396	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
19397	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
19398}
19399
19400// MarshalJSON implements the json.Marshaller interface for type MagentoLinkedServiceTypeProperties.
19401func (m MagentoLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
19402	objectMap := make(map[string]interface{})
19403	populate(objectMap, "accessToken", m.AccessToken)
19404	populate(objectMap, "encryptedCredential", m.EncryptedCredential)
19405	populate(objectMap, "host", m.Host)
19406	populate(objectMap, "useEncryptedEndpoints", m.UseEncryptedEndpoints)
19407	populate(objectMap, "useHostVerification", m.UseHostVerification)
19408	populate(objectMap, "usePeerVerification", m.UsePeerVerification)
19409	return json.Marshal(objectMap)
19410}
19411
19412// UnmarshalJSON implements the json.Unmarshaller interface for type MagentoLinkedServiceTypeProperties.
19413func (m *MagentoLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
19414	var rawMsg map[string]json.RawMessage
19415	if err := json.Unmarshal(data, &rawMsg); err != nil {
19416		return err
19417	}
19418	for key, val := range rawMsg {
19419		var err error
19420		switch key {
19421		case "accessToken":
19422			m.AccessToken, err = unmarshalSecretBaseClassification(val)
19423			delete(rawMsg, key)
19424		case "encryptedCredential":
19425			err = unpopulate(val, &m.EncryptedCredential)
19426			delete(rawMsg, key)
19427		case "host":
19428			err = unpopulate(val, &m.Host)
19429			delete(rawMsg, key)
19430		case "useEncryptedEndpoints":
19431			err = unpopulate(val, &m.UseEncryptedEndpoints)
19432			delete(rawMsg, key)
19433		case "useHostVerification":
19434			err = unpopulate(val, &m.UseHostVerification)
19435			delete(rawMsg, key)
19436		case "usePeerVerification":
19437			err = unpopulate(val, &m.UsePeerVerification)
19438			delete(rawMsg, key)
19439		}
19440		if err != nil {
19441			return err
19442		}
19443	}
19444	return nil
19445}
19446
19447// MagentoObjectDataset - Magento server dataset.
19448type MagentoObjectDataset struct {
19449	Dataset
19450	// Properties specific to this dataset type.
19451	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
19452}
19453
19454// MarshalJSON implements the json.Marshaller interface for type MagentoObjectDataset.
19455func (m MagentoObjectDataset) MarshalJSON() ([]byte, error) {
19456	objectMap := m.Dataset.marshalInternal("MagentoObject")
19457	populate(objectMap, "typeProperties", m.TypeProperties)
19458	return json.Marshal(objectMap)
19459}
19460
19461// UnmarshalJSON implements the json.Unmarshaller interface for type MagentoObjectDataset.
19462func (m *MagentoObjectDataset) UnmarshalJSON(data []byte) error {
19463	var rawMsg map[string]json.RawMessage
19464	if err := json.Unmarshal(data, &rawMsg); err != nil {
19465		return err
19466	}
19467	for key, val := range rawMsg {
19468		var err error
19469		switch key {
19470		case "typeProperties":
19471			err = unpopulate(val, &m.TypeProperties)
19472			delete(rawMsg, key)
19473		}
19474		if err != nil {
19475			return err
19476		}
19477	}
19478	return m.Dataset.unmarshalInternal(rawMsg)
19479}
19480
19481// MagentoSource - A copy activity Magento server source.
19482type MagentoSource struct {
19483	TabularSource
19484	// A query to retrieve data from source. Type: string (or Expression with resultType string).
19485	Query interface{} `json:"query,omitempty"`
19486}
19487
19488// MarshalJSON implements the json.Marshaller interface for type MagentoSource.
19489func (m MagentoSource) MarshalJSON() ([]byte, error) {
19490	objectMap := m.TabularSource.marshalInternal("MagentoSource")
19491	populate(objectMap, "query", m.Query)
19492	return json.Marshal(objectMap)
19493}
19494
19495// UnmarshalJSON implements the json.Unmarshaller interface for type MagentoSource.
19496func (m *MagentoSource) UnmarshalJSON(data []byte) error {
19497	var rawMsg map[string]json.RawMessage
19498	if err := json.Unmarshal(data, &rawMsg); err != nil {
19499		return err
19500	}
19501	for key, val := range rawMsg {
19502		var err error
19503		switch key {
19504		case "query":
19505			err = unpopulate(val, &m.Query)
19506			delete(rawMsg, key)
19507		}
19508		if err != nil {
19509			return err
19510		}
19511	}
19512	return m.TabularSource.unmarshalInternal(rawMsg)
19513}
19514
19515// ManagedIdentity - The workspace managed identity
19516type ManagedIdentity struct {
19517	// The type of managed identity for the workspace
19518	Type *ResourceIdentityType `json:"type,omitempty"`
19519
19520	// READ-ONLY; The principal ID of the workspace managed identity
19521	PrincipalID *string `json:"principalId,omitempty" azure:"ro"`
19522
19523	// READ-ONLY; The tenant ID of the workspace managed identity
19524	TenantID *string `json:"tenantId,omitempty" azure:"ro"`
19525}
19526
19527// ManagedIntegrationRuntime - Managed integration runtime, including managed elastic and managed dedicated integration runtimes.
19528type ManagedIntegrationRuntime struct {
19529	IntegrationRuntime
19530	// REQUIRED; Managed integration runtime properties.
19531	TypeProperties *ManagedIntegrationRuntimeTypeProperties `json:"typeProperties,omitempty"`
19532
19533	// Managed Virtual Network reference.
19534	ManagedVirtualNetwork *ManagedVirtualNetworkReference `json:"managedVirtualNetwork,omitempty"`
19535
19536	// READ-ONLY; Integration runtime state, only valid for managed dedicated integration runtime.
19537	State *IntegrationRuntimeState `json:"state,omitempty" azure:"ro"`
19538}
19539
19540// MarshalJSON implements the json.Marshaller interface for type ManagedIntegrationRuntime.
19541func (m ManagedIntegrationRuntime) MarshalJSON() ([]byte, error) {
19542	objectMap := m.IntegrationRuntime.marshalInternal(IntegrationRuntimeTypeManaged)
19543	populate(objectMap, "managedVirtualNetwork", m.ManagedVirtualNetwork)
19544	populate(objectMap, "state", m.State)
19545	populate(objectMap, "typeProperties", m.TypeProperties)
19546	return json.Marshal(objectMap)
19547}
19548
19549// UnmarshalJSON implements the json.Unmarshaller interface for type ManagedIntegrationRuntime.
19550func (m *ManagedIntegrationRuntime) UnmarshalJSON(data []byte) error {
19551	var rawMsg map[string]json.RawMessage
19552	if err := json.Unmarshal(data, &rawMsg); err != nil {
19553		return err
19554	}
19555	for key, val := range rawMsg {
19556		var err error
19557		switch key {
19558		case "managedVirtualNetwork":
19559			err = unpopulate(val, &m.ManagedVirtualNetwork)
19560			delete(rawMsg, key)
19561		case "state":
19562			err = unpopulate(val, &m.State)
19563			delete(rawMsg, key)
19564		case "typeProperties":
19565			err = unpopulate(val, &m.TypeProperties)
19566			delete(rawMsg, key)
19567		}
19568		if err != nil {
19569			return err
19570		}
19571	}
19572	return m.IntegrationRuntime.unmarshalInternal(rawMsg)
19573}
19574
19575// ManagedIntegrationRuntimeTypeProperties - Managed integration runtime type properties.
19576type ManagedIntegrationRuntimeTypeProperties struct {
19577	// The compute resource for managed integration runtime.
19578	ComputeProperties *IntegrationRuntimeComputeProperties `json:"computeProperties,omitempty"`
19579
19580	// SSIS properties for managed integration runtime.
19581	SsisProperties *IntegrationRuntimeSsisProperties `json:"ssisProperties,omitempty"`
19582}
19583
19584// ManagedVirtualNetworkReference - Managed Virtual Network reference type.
19585type ManagedVirtualNetworkReference struct {
19586	// REQUIRED; Reference ManagedVirtualNetwork name.
19587	ReferenceName *string `json:"referenceName,omitempty"`
19588
19589	// REQUIRED; Managed Virtual Network reference type.
19590	Type *string `json:"type,omitempty"`
19591}
19592
19593// ManagedVirtualNetworkSettings - Managed Virtual Network Settings
19594type ManagedVirtualNetworkSettings struct {
19595	// Allowed Aad Tenant Ids For Linking
19596	AllowedAADTenantIDsForLinking []*string `json:"allowedAadTenantIdsForLinking,omitempty"`
19597
19598	// Linked Access Check On Target Resource
19599	LinkedAccessCheckOnTargetResource *bool `json:"linkedAccessCheckOnTargetResource,omitempty"`
19600
19601	// Prevent Data Exfiltration
19602	PreventDataExfiltration *bool `json:"preventDataExfiltration,omitempty"`
19603}
19604
19605// MarshalJSON implements the json.Marshaller interface for type ManagedVirtualNetworkSettings.
19606func (m ManagedVirtualNetworkSettings) MarshalJSON() ([]byte, error) {
19607	objectMap := make(map[string]interface{})
19608	populate(objectMap, "allowedAadTenantIdsForLinking", m.AllowedAADTenantIDsForLinking)
19609	populate(objectMap, "linkedAccessCheckOnTargetResource", m.LinkedAccessCheckOnTargetResource)
19610	populate(objectMap, "preventDataExfiltration", m.PreventDataExfiltration)
19611	return json.Marshal(objectMap)
19612}
19613
19614// MappingDataFlow - Mapping data flow.
19615type MappingDataFlow struct {
19616	DataFlow
19617	// Mapping data flow type properties.
19618	TypeProperties *MappingDataFlowTypeProperties `json:"typeProperties,omitempty"`
19619}
19620
19621// MarshalJSON implements the json.Marshaller interface for type MappingDataFlow.
19622func (m MappingDataFlow) MarshalJSON() ([]byte, error) {
19623	objectMap := m.DataFlow.marshalInternal("MappingDataFlow")
19624	populate(objectMap, "typeProperties", m.TypeProperties)
19625	return json.Marshal(objectMap)
19626}
19627
19628// UnmarshalJSON implements the json.Unmarshaller interface for type MappingDataFlow.
19629func (m *MappingDataFlow) UnmarshalJSON(data []byte) error {
19630	var rawMsg map[string]json.RawMessage
19631	if err := json.Unmarshal(data, &rawMsg); err != nil {
19632		return err
19633	}
19634	for key, val := range rawMsg {
19635		var err error
19636		switch key {
19637		case "typeProperties":
19638			err = unpopulate(val, &m.TypeProperties)
19639			delete(rawMsg, key)
19640		}
19641		if err != nil {
19642			return err
19643		}
19644	}
19645	return m.DataFlow.unmarshalInternal(rawMsg)
19646}
19647
19648// MappingDataFlowTypeProperties - Mapping data flow type properties.
19649type MappingDataFlowTypeProperties struct {
19650	// DataFlow script.
19651	Script *string `json:"script,omitempty"`
19652
19653	// List of sinks in data flow.
19654	Sinks []*DataFlowSink `json:"sinks,omitempty"`
19655
19656	// List of sources in data flow.
19657	Sources []*DataFlowSource `json:"sources,omitempty"`
19658
19659	// List of transformations in data flow.
19660	Transformations []*Transformation `json:"transformations,omitempty"`
19661}
19662
19663// MarshalJSON implements the json.Marshaller interface for type MappingDataFlowTypeProperties.
19664func (m MappingDataFlowTypeProperties) MarshalJSON() ([]byte, error) {
19665	objectMap := make(map[string]interface{})
19666	populate(objectMap, "script", m.Script)
19667	populate(objectMap, "sinks", m.Sinks)
19668	populate(objectMap, "sources", m.Sources)
19669	populate(objectMap, "transformations", m.Transformations)
19670	return json.Marshal(objectMap)
19671}
19672
19673// MariaDBLinkedService - MariaDB server linked service.
19674type MariaDBLinkedService struct {
19675	LinkedService
19676	// REQUIRED; MariaDB server linked service properties.
19677	TypeProperties *MariaDBLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
19678}
19679
19680// MarshalJSON implements the json.Marshaller interface for type MariaDBLinkedService.
19681func (m MariaDBLinkedService) MarshalJSON() ([]byte, error) {
19682	objectMap := m.LinkedService.marshalInternal("MariaDB")
19683	populate(objectMap, "typeProperties", m.TypeProperties)
19684	return json.Marshal(objectMap)
19685}
19686
19687// UnmarshalJSON implements the json.Unmarshaller interface for type MariaDBLinkedService.
19688func (m *MariaDBLinkedService) UnmarshalJSON(data []byte) error {
19689	var rawMsg map[string]json.RawMessage
19690	if err := json.Unmarshal(data, &rawMsg); err != nil {
19691		return err
19692	}
19693	for key, val := range rawMsg {
19694		var err error
19695		switch key {
19696		case "typeProperties":
19697			err = unpopulate(val, &m.TypeProperties)
19698			delete(rawMsg, key)
19699		}
19700		if err != nil {
19701			return err
19702		}
19703	}
19704	return m.LinkedService.unmarshalInternal(rawMsg)
19705}
19706
19707// MariaDBLinkedServiceTypeProperties - MariaDB server linked service properties.
19708type MariaDBLinkedServiceTypeProperties struct {
19709	// An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
19710	ConnectionString interface{} `json:"connectionString,omitempty"`
19711
19712	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
19713	// with resultType string).
19714	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
19715
19716	// The Azure key vault secret reference of password in connection string.
19717	Pwd *AzureKeyVaultSecretReference `json:"pwd,omitempty"`
19718}
19719
19720// MariaDBSource - A copy activity MariaDB server source.
19721type MariaDBSource struct {
19722	TabularSource
19723	// A query to retrieve data from source. Type: string (or Expression with resultType string).
19724	Query interface{} `json:"query,omitempty"`
19725}
19726
19727// MarshalJSON implements the json.Marshaller interface for type MariaDBSource.
19728func (m MariaDBSource) MarshalJSON() ([]byte, error) {
19729	objectMap := m.TabularSource.marshalInternal("MariaDBSource")
19730	populate(objectMap, "query", m.Query)
19731	return json.Marshal(objectMap)
19732}
19733
19734// UnmarshalJSON implements the json.Unmarshaller interface for type MariaDBSource.
19735func (m *MariaDBSource) UnmarshalJSON(data []byte) error {
19736	var rawMsg map[string]json.RawMessage
19737	if err := json.Unmarshal(data, &rawMsg); err != nil {
19738		return err
19739	}
19740	for key, val := range rawMsg {
19741		var err error
19742		switch key {
19743		case "query":
19744			err = unpopulate(val, &m.Query)
19745			delete(rawMsg, key)
19746		}
19747		if err != nil {
19748			return err
19749		}
19750	}
19751	return m.TabularSource.unmarshalInternal(rawMsg)
19752}
19753
19754// MariaDBTableDataset - MariaDB server dataset.
19755type MariaDBTableDataset struct {
19756	Dataset
19757	// Properties specific to this dataset type.
19758	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
19759}
19760
19761// MarshalJSON implements the json.Marshaller interface for type MariaDBTableDataset.
19762func (m MariaDBTableDataset) MarshalJSON() ([]byte, error) {
19763	objectMap := m.Dataset.marshalInternal("MariaDBTable")
19764	populate(objectMap, "typeProperties", m.TypeProperties)
19765	return json.Marshal(objectMap)
19766}
19767
19768// UnmarshalJSON implements the json.Unmarshaller interface for type MariaDBTableDataset.
19769func (m *MariaDBTableDataset) UnmarshalJSON(data []byte) error {
19770	var rawMsg map[string]json.RawMessage
19771	if err := json.Unmarshal(data, &rawMsg); err != nil {
19772		return err
19773	}
19774	for key, val := range rawMsg {
19775		var err error
19776		switch key {
19777		case "typeProperties":
19778			err = unpopulate(val, &m.TypeProperties)
19779			delete(rawMsg, key)
19780		}
19781		if err != nil {
19782			return err
19783		}
19784	}
19785	return m.Dataset.unmarshalInternal(rawMsg)
19786}
19787
19788// MarketoLinkedService - Marketo server linked service.
19789type MarketoLinkedService struct {
19790	LinkedService
19791	// REQUIRED; Marketo server linked service properties.
19792	TypeProperties *MarketoLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
19793}
19794
19795// MarshalJSON implements the json.Marshaller interface for type MarketoLinkedService.
19796func (m MarketoLinkedService) MarshalJSON() ([]byte, error) {
19797	objectMap := m.LinkedService.marshalInternal("Marketo")
19798	populate(objectMap, "typeProperties", m.TypeProperties)
19799	return json.Marshal(objectMap)
19800}
19801
19802// UnmarshalJSON implements the json.Unmarshaller interface for type MarketoLinkedService.
19803func (m *MarketoLinkedService) UnmarshalJSON(data []byte) error {
19804	var rawMsg map[string]json.RawMessage
19805	if err := json.Unmarshal(data, &rawMsg); err != nil {
19806		return err
19807	}
19808	for key, val := range rawMsg {
19809		var err error
19810		switch key {
19811		case "typeProperties":
19812			err = unpopulate(val, &m.TypeProperties)
19813			delete(rawMsg, key)
19814		}
19815		if err != nil {
19816			return err
19817		}
19818	}
19819	return m.LinkedService.unmarshalInternal(rawMsg)
19820}
19821
19822// MarketoLinkedServiceTypeProperties - Marketo server linked service properties.
19823type MarketoLinkedServiceTypeProperties struct {
19824	// REQUIRED; The client Id of your Marketo service.
19825	ClientID interface{} `json:"clientId,omitempty"`
19826
19827	// REQUIRED; The endpoint of the Marketo server. (i.e. 123-ABC-321.mktorest.com)
19828	Endpoint interface{} `json:"endpoint,omitempty"`
19829
19830	// The client secret of your Marketo service.
19831	ClientSecret SecretBaseClassification `json:"clientSecret,omitempty"`
19832
19833	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
19834	// with resultType string).
19835	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
19836
19837	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
19838	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
19839
19840	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
19841	// is true.
19842	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
19843
19844	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
19845	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
19846}
19847
19848// MarshalJSON implements the json.Marshaller interface for type MarketoLinkedServiceTypeProperties.
19849func (m MarketoLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
19850	objectMap := make(map[string]interface{})
19851	populate(objectMap, "clientId", m.ClientID)
19852	populate(objectMap, "clientSecret", m.ClientSecret)
19853	populate(objectMap, "encryptedCredential", m.EncryptedCredential)
19854	populate(objectMap, "endpoint", m.Endpoint)
19855	populate(objectMap, "useEncryptedEndpoints", m.UseEncryptedEndpoints)
19856	populate(objectMap, "useHostVerification", m.UseHostVerification)
19857	populate(objectMap, "usePeerVerification", m.UsePeerVerification)
19858	return json.Marshal(objectMap)
19859}
19860
19861// UnmarshalJSON implements the json.Unmarshaller interface for type MarketoLinkedServiceTypeProperties.
19862func (m *MarketoLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
19863	var rawMsg map[string]json.RawMessage
19864	if err := json.Unmarshal(data, &rawMsg); err != nil {
19865		return err
19866	}
19867	for key, val := range rawMsg {
19868		var err error
19869		switch key {
19870		case "clientId":
19871			err = unpopulate(val, &m.ClientID)
19872			delete(rawMsg, key)
19873		case "clientSecret":
19874			m.ClientSecret, err = unmarshalSecretBaseClassification(val)
19875			delete(rawMsg, key)
19876		case "encryptedCredential":
19877			err = unpopulate(val, &m.EncryptedCredential)
19878			delete(rawMsg, key)
19879		case "endpoint":
19880			err = unpopulate(val, &m.Endpoint)
19881			delete(rawMsg, key)
19882		case "useEncryptedEndpoints":
19883			err = unpopulate(val, &m.UseEncryptedEndpoints)
19884			delete(rawMsg, key)
19885		case "useHostVerification":
19886			err = unpopulate(val, &m.UseHostVerification)
19887			delete(rawMsg, key)
19888		case "usePeerVerification":
19889			err = unpopulate(val, &m.UsePeerVerification)
19890			delete(rawMsg, key)
19891		}
19892		if err != nil {
19893			return err
19894		}
19895	}
19896	return nil
19897}
19898
19899// MarketoObjectDataset - Marketo server dataset.
19900type MarketoObjectDataset struct {
19901	Dataset
19902	// Properties specific to this dataset type.
19903	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
19904}
19905
19906// MarshalJSON implements the json.Marshaller interface for type MarketoObjectDataset.
19907func (m MarketoObjectDataset) MarshalJSON() ([]byte, error) {
19908	objectMap := m.Dataset.marshalInternal("MarketoObject")
19909	populate(objectMap, "typeProperties", m.TypeProperties)
19910	return json.Marshal(objectMap)
19911}
19912
19913// UnmarshalJSON implements the json.Unmarshaller interface for type MarketoObjectDataset.
19914func (m *MarketoObjectDataset) UnmarshalJSON(data []byte) error {
19915	var rawMsg map[string]json.RawMessage
19916	if err := json.Unmarshal(data, &rawMsg); err != nil {
19917		return err
19918	}
19919	for key, val := range rawMsg {
19920		var err error
19921		switch key {
19922		case "typeProperties":
19923			err = unpopulate(val, &m.TypeProperties)
19924			delete(rawMsg, key)
19925		}
19926		if err != nil {
19927			return err
19928		}
19929	}
19930	return m.Dataset.unmarshalInternal(rawMsg)
19931}
19932
19933// MarketoSource - A copy activity Marketo server source.
19934type MarketoSource struct {
19935	TabularSource
19936	// A query to retrieve data from source. Type: string (or Expression with resultType string).
19937	Query interface{} `json:"query,omitempty"`
19938}
19939
19940// MarshalJSON implements the json.Marshaller interface for type MarketoSource.
19941func (m MarketoSource) MarshalJSON() ([]byte, error) {
19942	objectMap := m.TabularSource.marshalInternal("MarketoSource")
19943	populate(objectMap, "query", m.Query)
19944	return json.Marshal(objectMap)
19945}
19946
19947// UnmarshalJSON implements the json.Unmarshaller interface for type MarketoSource.
19948func (m *MarketoSource) UnmarshalJSON(data []byte) error {
19949	var rawMsg map[string]json.RawMessage
19950	if err := json.Unmarshal(data, &rawMsg); err != nil {
19951		return err
19952	}
19953	for key, val := range rawMsg {
19954		var err error
19955		switch key {
19956		case "query":
19957			err = unpopulate(val, &m.Query)
19958			delete(rawMsg, key)
19959		}
19960		if err != nil {
19961			return err
19962		}
19963	}
19964	return m.TabularSource.unmarshalInternal(rawMsg)
19965}
19966
19967// MicrosoftAccessLinkedService - Microsoft Access linked service.
19968type MicrosoftAccessLinkedService struct {
19969	LinkedService
19970	// REQUIRED; Microsoft Access linked service properties.
19971	TypeProperties *MicrosoftAccessLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
19972}
19973
19974// MarshalJSON implements the json.Marshaller interface for type MicrosoftAccessLinkedService.
19975func (m MicrosoftAccessLinkedService) MarshalJSON() ([]byte, error) {
19976	objectMap := m.LinkedService.marshalInternal("MicrosoftAccess")
19977	populate(objectMap, "typeProperties", m.TypeProperties)
19978	return json.Marshal(objectMap)
19979}
19980
19981// UnmarshalJSON implements the json.Unmarshaller interface for type MicrosoftAccessLinkedService.
19982func (m *MicrosoftAccessLinkedService) UnmarshalJSON(data []byte) error {
19983	var rawMsg map[string]json.RawMessage
19984	if err := json.Unmarshal(data, &rawMsg); err != nil {
19985		return err
19986	}
19987	for key, val := range rawMsg {
19988		var err error
19989		switch key {
19990		case "typeProperties":
19991			err = unpopulate(val, &m.TypeProperties)
19992			delete(rawMsg, key)
19993		}
19994		if err != nil {
19995			return err
19996		}
19997	}
19998	return m.LinkedService.unmarshalInternal(rawMsg)
19999}
20000
20001// MicrosoftAccessLinkedServiceTypeProperties - Microsoft Access linked service properties.
20002type MicrosoftAccessLinkedServiceTypeProperties struct {
20003	// REQUIRED; The non-access credential portion of the connection string as well as an optional encrypted credential. Type: string, SecureString or AzureKeyVaultSecretReference.
20004	ConnectionString interface{} `json:"connectionString,omitempty"`
20005
20006	// Type of authentication used to connect to the Microsoft Access as ODBC data store. Possible values are: Anonymous and Basic. Type: string (or Expression
20007	// with resultType string).
20008	AuthenticationType interface{} `json:"authenticationType,omitempty"`
20009
20010	// The access credential portion of the connection string specified in driver-specific property-value format.
20011	Credential SecretBaseClassification `json:"credential,omitempty"`
20012
20013	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
20014	// with resultType string).
20015	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
20016
20017	// Password for Basic authentication.
20018	Password SecretBaseClassification `json:"password,omitempty"`
20019
20020	// User name for Basic authentication. Type: string (or Expression with resultType string).
20021	UserName interface{} `json:"userName,omitempty"`
20022}
20023
20024// MarshalJSON implements the json.Marshaller interface for type MicrosoftAccessLinkedServiceTypeProperties.
20025func (m MicrosoftAccessLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
20026	objectMap := make(map[string]interface{})
20027	populate(objectMap, "authenticationType", m.AuthenticationType)
20028	populate(objectMap, "connectionString", m.ConnectionString)
20029	populate(objectMap, "credential", m.Credential)
20030	populate(objectMap, "encryptedCredential", m.EncryptedCredential)
20031	populate(objectMap, "password", m.Password)
20032	populate(objectMap, "userName", m.UserName)
20033	return json.Marshal(objectMap)
20034}
20035
20036// UnmarshalJSON implements the json.Unmarshaller interface for type MicrosoftAccessLinkedServiceTypeProperties.
20037func (m *MicrosoftAccessLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
20038	var rawMsg map[string]json.RawMessage
20039	if err := json.Unmarshal(data, &rawMsg); err != nil {
20040		return err
20041	}
20042	for key, val := range rawMsg {
20043		var err error
20044		switch key {
20045		case "authenticationType":
20046			err = unpopulate(val, &m.AuthenticationType)
20047			delete(rawMsg, key)
20048		case "connectionString":
20049			err = unpopulate(val, &m.ConnectionString)
20050			delete(rawMsg, key)
20051		case "credential":
20052			m.Credential, err = unmarshalSecretBaseClassification(val)
20053			delete(rawMsg, key)
20054		case "encryptedCredential":
20055			err = unpopulate(val, &m.EncryptedCredential)
20056			delete(rawMsg, key)
20057		case "password":
20058			m.Password, err = unmarshalSecretBaseClassification(val)
20059			delete(rawMsg, key)
20060		case "userName":
20061			err = unpopulate(val, &m.UserName)
20062			delete(rawMsg, key)
20063		}
20064		if err != nil {
20065			return err
20066		}
20067	}
20068	return nil
20069}
20070
20071// MicrosoftAccessSink - A copy activity Microsoft Access sink.
20072type MicrosoftAccessSink struct {
20073	CopySink
20074	// A query to execute before starting the copy. Type: string (or Expression with resultType string).
20075	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
20076}
20077
20078// MarshalJSON implements the json.Marshaller interface for type MicrosoftAccessSink.
20079func (m MicrosoftAccessSink) MarshalJSON() ([]byte, error) {
20080	objectMap := m.CopySink.marshalInternal("MicrosoftAccessSink")
20081	populate(objectMap, "preCopyScript", m.PreCopyScript)
20082	return json.Marshal(objectMap)
20083}
20084
20085// UnmarshalJSON implements the json.Unmarshaller interface for type MicrosoftAccessSink.
20086func (m *MicrosoftAccessSink) UnmarshalJSON(data []byte) error {
20087	var rawMsg map[string]json.RawMessage
20088	if err := json.Unmarshal(data, &rawMsg); err != nil {
20089		return err
20090	}
20091	for key, val := range rawMsg {
20092		var err error
20093		switch key {
20094		case "preCopyScript":
20095			err = unpopulate(val, &m.PreCopyScript)
20096			delete(rawMsg, key)
20097		}
20098		if err != nil {
20099			return err
20100		}
20101	}
20102	return m.CopySink.unmarshalInternal(rawMsg)
20103}
20104
20105// MicrosoftAccessSource - A copy activity source for Microsoft Access.
20106type MicrosoftAccessSource struct {
20107	CopySource
20108	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
20109	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
20110
20111	// Database query. Type: string (or Expression with resultType string).
20112	Query interface{} `json:"query,omitempty"`
20113}
20114
20115// MarshalJSON implements the json.Marshaller interface for type MicrosoftAccessSource.
20116func (m MicrosoftAccessSource) MarshalJSON() ([]byte, error) {
20117	objectMap := m.CopySource.marshalInternal("MicrosoftAccessSource")
20118	populate(objectMap, "additionalColumns", m.AdditionalColumns)
20119	populate(objectMap, "query", m.Query)
20120	return json.Marshal(objectMap)
20121}
20122
20123// UnmarshalJSON implements the json.Unmarshaller interface for type MicrosoftAccessSource.
20124func (m *MicrosoftAccessSource) UnmarshalJSON(data []byte) error {
20125	var rawMsg map[string]json.RawMessage
20126	if err := json.Unmarshal(data, &rawMsg); err != nil {
20127		return err
20128	}
20129	for key, val := range rawMsg {
20130		var err error
20131		switch key {
20132		case "additionalColumns":
20133			err = unpopulate(val, &m.AdditionalColumns)
20134			delete(rawMsg, key)
20135		case "query":
20136			err = unpopulate(val, &m.Query)
20137			delete(rawMsg, key)
20138		}
20139		if err != nil {
20140			return err
20141		}
20142	}
20143	return m.CopySource.unmarshalInternal(rawMsg)
20144}
20145
20146// MicrosoftAccessTableDataset - The Microsoft Access table dataset.
20147type MicrosoftAccessTableDataset struct {
20148	Dataset
20149	// Microsoft Access table dataset properties.
20150	TypeProperties *MicrosoftAccessTableDatasetTypeProperties `json:"typeProperties,omitempty"`
20151}
20152
20153// MarshalJSON implements the json.Marshaller interface for type MicrosoftAccessTableDataset.
20154func (m MicrosoftAccessTableDataset) MarshalJSON() ([]byte, error) {
20155	objectMap := m.Dataset.marshalInternal("MicrosoftAccessTable")
20156	populate(objectMap, "typeProperties", m.TypeProperties)
20157	return json.Marshal(objectMap)
20158}
20159
20160// UnmarshalJSON implements the json.Unmarshaller interface for type MicrosoftAccessTableDataset.
20161func (m *MicrosoftAccessTableDataset) UnmarshalJSON(data []byte) error {
20162	var rawMsg map[string]json.RawMessage
20163	if err := json.Unmarshal(data, &rawMsg); err != nil {
20164		return err
20165	}
20166	for key, val := range rawMsg {
20167		var err error
20168		switch key {
20169		case "typeProperties":
20170			err = unpopulate(val, &m.TypeProperties)
20171			delete(rawMsg, key)
20172		}
20173		if err != nil {
20174			return err
20175		}
20176	}
20177	return m.Dataset.unmarshalInternal(rawMsg)
20178}
20179
20180// MicrosoftAccessTableDatasetTypeProperties - Microsoft Access table dataset properties.
20181type MicrosoftAccessTableDatasetTypeProperties struct {
20182	// The Microsoft Access table name. Type: string (or Expression with resultType string).
20183	TableName interface{} `json:"tableName,omitempty"`
20184}
20185
20186// MongoDbAtlasCollectionDataset - The MongoDB Atlas database dataset.
20187type MongoDbAtlasCollectionDataset struct {
20188	Dataset
20189	// REQUIRED; MongoDB Atlas database dataset properties.
20190	TypeProperties *MongoDbAtlasCollectionDatasetTypeProperties `json:"typeProperties,omitempty"`
20191}
20192
20193// MarshalJSON implements the json.Marshaller interface for type MongoDbAtlasCollectionDataset.
20194func (m MongoDbAtlasCollectionDataset) MarshalJSON() ([]byte, error) {
20195	objectMap := m.Dataset.marshalInternal("MongoDbAtlasCollection")
20196	populate(objectMap, "typeProperties", m.TypeProperties)
20197	return json.Marshal(objectMap)
20198}
20199
20200// UnmarshalJSON implements the json.Unmarshaller interface for type MongoDbAtlasCollectionDataset.
20201func (m *MongoDbAtlasCollectionDataset) UnmarshalJSON(data []byte) error {
20202	var rawMsg map[string]json.RawMessage
20203	if err := json.Unmarshal(data, &rawMsg); err != nil {
20204		return err
20205	}
20206	for key, val := range rawMsg {
20207		var err error
20208		switch key {
20209		case "typeProperties":
20210			err = unpopulate(val, &m.TypeProperties)
20211			delete(rawMsg, key)
20212		}
20213		if err != nil {
20214			return err
20215		}
20216	}
20217	return m.Dataset.unmarshalInternal(rawMsg)
20218}
20219
20220// MongoDbAtlasCollectionDatasetTypeProperties - MongoDB Atlas database dataset properties.
20221type MongoDbAtlasCollectionDatasetTypeProperties struct {
20222	// REQUIRED; The collection name of the MongoDB Atlas database. Type: string (or Expression with resultType string).
20223	Collection interface{} `json:"collection,omitempty"`
20224}
20225
20226// MongoDbAtlasLinkedService - Linked service for MongoDB Atlas data source.
20227type MongoDbAtlasLinkedService struct {
20228	LinkedService
20229	// REQUIRED; MongoDB Atlas linked service properties.
20230	TypeProperties *MongoDbAtlasLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
20231}
20232
20233// MarshalJSON implements the json.Marshaller interface for type MongoDbAtlasLinkedService.
20234func (m MongoDbAtlasLinkedService) MarshalJSON() ([]byte, error) {
20235	objectMap := m.LinkedService.marshalInternal("MongoDbAtlas")
20236	populate(objectMap, "typeProperties", m.TypeProperties)
20237	return json.Marshal(objectMap)
20238}
20239
20240// UnmarshalJSON implements the json.Unmarshaller interface for type MongoDbAtlasLinkedService.
20241func (m *MongoDbAtlasLinkedService) UnmarshalJSON(data []byte) error {
20242	var rawMsg map[string]json.RawMessage
20243	if err := json.Unmarshal(data, &rawMsg); err != nil {
20244		return err
20245	}
20246	for key, val := range rawMsg {
20247		var err error
20248		switch key {
20249		case "typeProperties":
20250			err = unpopulate(val, &m.TypeProperties)
20251			delete(rawMsg, key)
20252		}
20253		if err != nil {
20254			return err
20255		}
20256	}
20257	return m.LinkedService.unmarshalInternal(rawMsg)
20258}
20259
20260// MongoDbAtlasLinkedServiceTypeProperties - MongoDB Atlas linked service properties.
20261type MongoDbAtlasLinkedServiceTypeProperties struct {
20262	// REQUIRED; The MongoDB Atlas connection string. Type: string, SecureString or AzureKeyVaultSecretReference. Type: string, SecureString or AzureKeyVaultSecretReference.
20263	ConnectionString interface{} `json:"connectionString,omitempty"`
20264
20265	// REQUIRED; The name of the MongoDB Atlas database that you want to access. Type: string (or Expression with resultType string).
20266	Database interface{} `json:"database,omitempty"`
20267}
20268
20269// MongoDbAtlasSource - A copy activity source for a MongoDB Atlas database.
20270type MongoDbAtlasSource struct {
20271	CopySource
20272	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
20273	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
20274
20275	// Specifies the number of documents to return in each batch of the response from MongoDB Atlas instance. In most cases, modifying the batch size will not
20276	// affect the user or the application. This
20277	// property's main purpose is to avoid hit the limitation of response size. Type: integer (or Expression with resultType integer).
20278	BatchSize interface{} `json:"batchSize,omitempty"`
20279
20280	// Cursor methods for Mongodb query
20281	CursorMethods *MongoDbCursorMethodsProperties `json:"cursorMethods,omitempty"`
20282
20283	// Specifies selection filter using query operators. To return all documents in a collection, omit this parameter or pass an empty document ({}). Type:
20284	// string (or Expression with resultType string).
20285	Filter interface{} `json:"filter,omitempty"`
20286
20287	// Query timeout. Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
20288	QueryTimeout interface{} `json:"queryTimeout,omitempty"`
20289}
20290
20291// MarshalJSON implements the json.Marshaller interface for type MongoDbAtlasSource.
20292func (m MongoDbAtlasSource) MarshalJSON() ([]byte, error) {
20293	objectMap := m.CopySource.marshalInternal("MongoDbAtlasSource")
20294	populate(objectMap, "additionalColumns", m.AdditionalColumns)
20295	populate(objectMap, "batchSize", m.BatchSize)
20296	populate(objectMap, "cursorMethods", m.CursorMethods)
20297	populate(objectMap, "filter", m.Filter)
20298	populate(objectMap, "queryTimeout", m.QueryTimeout)
20299	return json.Marshal(objectMap)
20300}
20301
20302// UnmarshalJSON implements the json.Unmarshaller interface for type MongoDbAtlasSource.
20303func (m *MongoDbAtlasSource) UnmarshalJSON(data []byte) error {
20304	var rawMsg map[string]json.RawMessage
20305	if err := json.Unmarshal(data, &rawMsg); err != nil {
20306		return err
20307	}
20308	for key, val := range rawMsg {
20309		var err error
20310		switch key {
20311		case "additionalColumns":
20312			err = unpopulate(val, &m.AdditionalColumns)
20313			delete(rawMsg, key)
20314		case "batchSize":
20315			err = unpopulate(val, &m.BatchSize)
20316			delete(rawMsg, key)
20317		case "cursorMethods":
20318			err = unpopulate(val, &m.CursorMethods)
20319			delete(rawMsg, key)
20320		case "filter":
20321			err = unpopulate(val, &m.Filter)
20322			delete(rawMsg, key)
20323		case "queryTimeout":
20324			err = unpopulate(val, &m.QueryTimeout)
20325			delete(rawMsg, key)
20326		}
20327		if err != nil {
20328			return err
20329		}
20330	}
20331	return m.CopySource.unmarshalInternal(rawMsg)
20332}
20333
20334// MongoDbCollectionDataset - The MongoDB database dataset.
20335type MongoDbCollectionDataset struct {
20336	Dataset
20337	// REQUIRED; MongoDB database dataset properties.
20338	TypeProperties *MongoDbCollectionDatasetTypeProperties `json:"typeProperties,omitempty"`
20339}
20340
20341// MarshalJSON implements the json.Marshaller interface for type MongoDbCollectionDataset.
20342func (m MongoDbCollectionDataset) MarshalJSON() ([]byte, error) {
20343	objectMap := m.Dataset.marshalInternal("MongoDbCollection")
20344	populate(objectMap, "typeProperties", m.TypeProperties)
20345	return json.Marshal(objectMap)
20346}
20347
20348// UnmarshalJSON implements the json.Unmarshaller interface for type MongoDbCollectionDataset.
20349func (m *MongoDbCollectionDataset) UnmarshalJSON(data []byte) error {
20350	var rawMsg map[string]json.RawMessage
20351	if err := json.Unmarshal(data, &rawMsg); err != nil {
20352		return err
20353	}
20354	for key, val := range rawMsg {
20355		var err error
20356		switch key {
20357		case "typeProperties":
20358			err = unpopulate(val, &m.TypeProperties)
20359			delete(rawMsg, key)
20360		}
20361		if err != nil {
20362			return err
20363		}
20364	}
20365	return m.Dataset.unmarshalInternal(rawMsg)
20366}
20367
20368// MongoDbCollectionDatasetTypeProperties - MongoDB database dataset properties.
20369type MongoDbCollectionDatasetTypeProperties struct {
20370	// REQUIRED; The table name of the MongoDB database. Type: string (or Expression with resultType string).
20371	CollectionName interface{} `json:"collectionName,omitempty"`
20372}
20373
20374// MongoDbCursorMethodsProperties - Cursor methods for Mongodb query
20375type MongoDbCursorMethodsProperties struct {
20376	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
20377	AdditionalProperties map[string]interface{}
20378
20379	// Specifies the maximum number of documents the server returns. limit() is analogous to the LIMIT statement in a SQL database. Type: integer (or Expression
20380	// with resultType integer).
20381	Limit interface{} `json:"limit,omitempty"`
20382
20383	// Specifies the fields to return in the documents that match the query filter. To return all fields in the matching documents, omit this parameter. Type:
20384	// string (or Expression with resultType string).
20385	Project interface{} `json:"project,omitempty"`
20386
20387	// Specifies the how many documents skipped and where MongoDB begins returning results. This approach may be useful in implementing paginated results. Type:
20388	// integer (or Expression with resultType
20389	// integer).
20390	Skip interface{} `json:"skip,omitempty"`
20391
20392	// Specifies the order in which the query returns matching documents. Type: string (or Expression with resultType string). Type: string (or Expression with
20393	// resultType string).
20394	Sort interface{} `json:"sort,omitempty"`
20395}
20396
20397// MarshalJSON implements the json.Marshaller interface for type MongoDbCursorMethodsProperties.
20398func (m MongoDbCursorMethodsProperties) MarshalJSON() ([]byte, error) {
20399	objectMap := make(map[string]interface{})
20400	populate(objectMap, "limit", m.Limit)
20401	populate(objectMap, "project", m.Project)
20402	populate(objectMap, "skip", m.Skip)
20403	populate(objectMap, "sort", m.Sort)
20404	if m.AdditionalProperties != nil {
20405		for key, val := range m.AdditionalProperties {
20406			objectMap[key] = val
20407		}
20408	}
20409	return json.Marshal(objectMap)
20410}
20411
20412// UnmarshalJSON implements the json.Unmarshaller interface for type MongoDbCursorMethodsProperties.
20413func (m *MongoDbCursorMethodsProperties) UnmarshalJSON(data []byte) error {
20414	var rawMsg map[string]json.RawMessage
20415	if err := json.Unmarshal(data, &rawMsg); err != nil {
20416		return err
20417	}
20418	for key, val := range rawMsg {
20419		var err error
20420		switch key {
20421		case "limit":
20422			err = unpopulate(val, &m.Limit)
20423			delete(rawMsg, key)
20424		case "project":
20425			err = unpopulate(val, &m.Project)
20426			delete(rawMsg, key)
20427		case "skip":
20428			err = unpopulate(val, &m.Skip)
20429			delete(rawMsg, key)
20430		case "sort":
20431			err = unpopulate(val, &m.Sort)
20432			delete(rawMsg, key)
20433		default:
20434			if m.AdditionalProperties == nil {
20435				m.AdditionalProperties = map[string]interface{}{}
20436			}
20437			if val != nil {
20438				var aux interface{}
20439				err = json.Unmarshal(val, &aux)
20440				m.AdditionalProperties[key] = aux
20441			}
20442			delete(rawMsg, key)
20443		}
20444		if err != nil {
20445			return err
20446		}
20447	}
20448	return nil
20449}
20450
20451// MongoDbLinkedService - Linked service for MongoDb data source.
20452type MongoDbLinkedService struct {
20453	LinkedService
20454	// REQUIRED; MongoDB linked service properties.
20455	TypeProperties *MongoDbLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
20456}
20457
20458// MarshalJSON implements the json.Marshaller interface for type MongoDbLinkedService.
20459func (m MongoDbLinkedService) MarshalJSON() ([]byte, error) {
20460	objectMap := m.LinkedService.marshalInternal("MongoDb")
20461	populate(objectMap, "typeProperties", m.TypeProperties)
20462	return json.Marshal(objectMap)
20463}
20464
20465// UnmarshalJSON implements the json.Unmarshaller interface for type MongoDbLinkedService.
20466func (m *MongoDbLinkedService) UnmarshalJSON(data []byte) error {
20467	var rawMsg map[string]json.RawMessage
20468	if err := json.Unmarshal(data, &rawMsg); err != nil {
20469		return err
20470	}
20471	for key, val := range rawMsg {
20472		var err error
20473		switch key {
20474		case "typeProperties":
20475			err = unpopulate(val, &m.TypeProperties)
20476			delete(rawMsg, key)
20477		}
20478		if err != nil {
20479			return err
20480		}
20481	}
20482	return m.LinkedService.unmarshalInternal(rawMsg)
20483}
20484
20485// MongoDbLinkedServiceTypeProperties - MongoDB linked service properties.
20486type MongoDbLinkedServiceTypeProperties struct {
20487	// REQUIRED; The name of the MongoDB database that you want to access. Type: string (or Expression with resultType string).
20488	DatabaseName interface{} `json:"databaseName,omitempty"`
20489
20490	// REQUIRED; The IP address or server name of the MongoDB server. Type: string (or Expression with resultType string).
20491	Server interface{} `json:"server,omitempty"`
20492
20493	// Specifies whether to allow self-signed certificates from the server. The default value is false. Type: boolean (or Expression with resultType boolean).
20494	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
20495
20496	// Database to verify the username and password. Type: string (or Expression with resultType string).
20497	AuthSource interface{} `json:"authSource,omitempty"`
20498
20499	// The authentication type to be used to connect to the MongoDB database.
20500	AuthenticationType *MongoDbAuthenticationType `json:"authenticationType,omitempty"`
20501
20502	// Specifies whether the connections to the server are encrypted using SSL. The default value is false. Type: boolean (or Expression with resultType boolean).
20503	EnableSSL interface{} `json:"enableSsl,omitempty"`
20504
20505	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
20506	// with resultType string).
20507	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
20508
20509	// Password for authentication.
20510	Password SecretBaseClassification `json:"password,omitempty"`
20511
20512	// The TCP port number that the MongoDB server uses to listen for client connections. The default value is 27017. Type: integer (or Expression with resultType
20513	// integer), minimum: 0.
20514	Port interface{} `json:"port,omitempty"`
20515
20516	// Username for authentication. Type: string (or Expression with resultType string).
20517	Username interface{} `json:"username,omitempty"`
20518}
20519
20520// MarshalJSON implements the json.Marshaller interface for type MongoDbLinkedServiceTypeProperties.
20521func (m MongoDbLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
20522	objectMap := make(map[string]interface{})
20523	populate(objectMap, "allowSelfSignedServerCert", m.AllowSelfSignedServerCert)
20524	populate(objectMap, "authSource", m.AuthSource)
20525	populate(objectMap, "authenticationType", m.AuthenticationType)
20526	populate(objectMap, "databaseName", m.DatabaseName)
20527	populate(objectMap, "enableSsl", m.EnableSSL)
20528	populate(objectMap, "encryptedCredential", m.EncryptedCredential)
20529	populate(objectMap, "password", m.Password)
20530	populate(objectMap, "port", m.Port)
20531	populate(objectMap, "server", m.Server)
20532	populate(objectMap, "username", m.Username)
20533	return json.Marshal(objectMap)
20534}
20535
20536// UnmarshalJSON implements the json.Unmarshaller interface for type MongoDbLinkedServiceTypeProperties.
20537func (m *MongoDbLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
20538	var rawMsg map[string]json.RawMessage
20539	if err := json.Unmarshal(data, &rawMsg); err != nil {
20540		return err
20541	}
20542	for key, val := range rawMsg {
20543		var err error
20544		switch key {
20545		case "allowSelfSignedServerCert":
20546			err = unpopulate(val, &m.AllowSelfSignedServerCert)
20547			delete(rawMsg, key)
20548		case "authSource":
20549			err = unpopulate(val, &m.AuthSource)
20550			delete(rawMsg, key)
20551		case "authenticationType":
20552			err = unpopulate(val, &m.AuthenticationType)
20553			delete(rawMsg, key)
20554		case "databaseName":
20555			err = unpopulate(val, &m.DatabaseName)
20556			delete(rawMsg, key)
20557		case "enableSsl":
20558			err = unpopulate(val, &m.EnableSSL)
20559			delete(rawMsg, key)
20560		case "encryptedCredential":
20561			err = unpopulate(val, &m.EncryptedCredential)
20562			delete(rawMsg, key)
20563		case "password":
20564			m.Password, err = unmarshalSecretBaseClassification(val)
20565			delete(rawMsg, key)
20566		case "port":
20567			err = unpopulate(val, &m.Port)
20568			delete(rawMsg, key)
20569		case "server":
20570			err = unpopulate(val, &m.Server)
20571			delete(rawMsg, key)
20572		case "username":
20573			err = unpopulate(val, &m.Username)
20574			delete(rawMsg, key)
20575		}
20576		if err != nil {
20577			return err
20578		}
20579	}
20580	return nil
20581}
20582
20583// MongoDbSource - A copy activity source for a MongoDB database.
20584type MongoDbSource struct {
20585	CopySource
20586	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
20587	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
20588
20589	// Database query. Should be a SQL-92 query expression. Type: string (or Expression with resultType string).
20590	Query interface{} `json:"query,omitempty"`
20591}
20592
20593// MarshalJSON implements the json.Marshaller interface for type MongoDbSource.
20594func (m MongoDbSource) MarshalJSON() ([]byte, error) {
20595	objectMap := m.CopySource.marshalInternal("MongoDbSource")
20596	populate(objectMap, "additionalColumns", m.AdditionalColumns)
20597	populate(objectMap, "query", m.Query)
20598	return json.Marshal(objectMap)
20599}
20600
20601// UnmarshalJSON implements the json.Unmarshaller interface for type MongoDbSource.
20602func (m *MongoDbSource) UnmarshalJSON(data []byte) error {
20603	var rawMsg map[string]json.RawMessage
20604	if err := json.Unmarshal(data, &rawMsg); err != nil {
20605		return err
20606	}
20607	for key, val := range rawMsg {
20608		var err error
20609		switch key {
20610		case "additionalColumns":
20611			err = unpopulate(val, &m.AdditionalColumns)
20612			delete(rawMsg, key)
20613		case "query":
20614			err = unpopulate(val, &m.Query)
20615			delete(rawMsg, key)
20616		}
20617		if err != nil {
20618			return err
20619		}
20620	}
20621	return m.CopySource.unmarshalInternal(rawMsg)
20622}
20623
20624// MongoDbV2CollectionDataset - The MongoDB database dataset.
20625type MongoDbV2CollectionDataset struct {
20626	Dataset
20627	// REQUIRED; MongoDB database dataset properties.
20628	TypeProperties *MongoDbV2CollectionDatasetTypeProperties `json:"typeProperties,omitempty"`
20629}
20630
20631// MarshalJSON implements the json.Marshaller interface for type MongoDbV2CollectionDataset.
20632func (m MongoDbV2CollectionDataset) MarshalJSON() ([]byte, error) {
20633	objectMap := m.Dataset.marshalInternal("MongoDbV2Collection")
20634	populate(objectMap, "typeProperties", m.TypeProperties)
20635	return json.Marshal(objectMap)
20636}
20637
20638// UnmarshalJSON implements the json.Unmarshaller interface for type MongoDbV2CollectionDataset.
20639func (m *MongoDbV2CollectionDataset) UnmarshalJSON(data []byte) error {
20640	var rawMsg map[string]json.RawMessage
20641	if err := json.Unmarshal(data, &rawMsg); err != nil {
20642		return err
20643	}
20644	for key, val := range rawMsg {
20645		var err error
20646		switch key {
20647		case "typeProperties":
20648			err = unpopulate(val, &m.TypeProperties)
20649			delete(rawMsg, key)
20650		}
20651		if err != nil {
20652			return err
20653		}
20654	}
20655	return m.Dataset.unmarshalInternal(rawMsg)
20656}
20657
20658// MongoDbV2CollectionDatasetTypeProperties - MongoDB database dataset properties.
20659type MongoDbV2CollectionDatasetTypeProperties struct {
20660	// REQUIRED; The collection name of the MongoDB database. Type: string (or Expression with resultType string).
20661	Collection interface{} `json:"collection,omitempty"`
20662}
20663
20664// MongoDbV2LinkedService - Linked service for MongoDB data source.
20665type MongoDbV2LinkedService struct {
20666	LinkedService
20667	// REQUIRED; MongoDB linked service properties.
20668	TypeProperties *MongoDbV2LinkedServiceTypeProperties `json:"typeProperties,omitempty"`
20669}
20670
20671// MarshalJSON implements the json.Marshaller interface for type MongoDbV2LinkedService.
20672func (m MongoDbV2LinkedService) MarshalJSON() ([]byte, error) {
20673	objectMap := m.LinkedService.marshalInternal("MongoDbV2")
20674	populate(objectMap, "typeProperties", m.TypeProperties)
20675	return json.Marshal(objectMap)
20676}
20677
20678// UnmarshalJSON implements the json.Unmarshaller interface for type MongoDbV2LinkedService.
20679func (m *MongoDbV2LinkedService) UnmarshalJSON(data []byte) error {
20680	var rawMsg map[string]json.RawMessage
20681	if err := json.Unmarshal(data, &rawMsg); err != nil {
20682		return err
20683	}
20684	for key, val := range rawMsg {
20685		var err error
20686		switch key {
20687		case "typeProperties":
20688			err = unpopulate(val, &m.TypeProperties)
20689			delete(rawMsg, key)
20690		}
20691		if err != nil {
20692			return err
20693		}
20694	}
20695	return m.LinkedService.unmarshalInternal(rawMsg)
20696}
20697
20698// MongoDbV2LinkedServiceTypeProperties - MongoDB linked service properties.
20699type MongoDbV2LinkedServiceTypeProperties struct {
20700	// REQUIRED; The MongoDB connection string. Type: string, SecureString or AzureKeyVaultSecretReference. Type: string, SecureString or AzureKeyVaultSecretReference.
20701	ConnectionString interface{} `json:"connectionString,omitempty"`
20702
20703	// REQUIRED; The name of the MongoDB database that you want to access. Type: string (or Expression with resultType string).
20704	Database interface{} `json:"database,omitempty"`
20705}
20706
20707// MongoDbV2Source - A copy activity source for a MongoDB database.
20708type MongoDbV2Source struct {
20709	CopySource
20710	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
20711	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
20712
20713	// Specifies the number of documents to return in each batch of the response from MongoDB instance. In most cases, modifying the batch size will not affect
20714	// the user or the application. This property's
20715	// main purpose is to avoid hit the limitation of response size. Type: integer (or Expression with resultType integer).
20716	BatchSize interface{} `json:"batchSize,omitempty"`
20717
20718	// Cursor methods for Mongodb query
20719	CursorMethods *MongoDbCursorMethodsProperties `json:"cursorMethods,omitempty"`
20720
20721	// Specifies selection filter using query operators. To return all documents in a collection, omit this parameter or pass an empty document ({}). Type:
20722	// string (or Expression with resultType string).
20723	Filter interface{} `json:"filter,omitempty"`
20724
20725	// Query timeout. Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
20726	QueryTimeout interface{} `json:"queryTimeout,omitempty"`
20727}
20728
20729// MarshalJSON implements the json.Marshaller interface for type MongoDbV2Source.
20730func (m MongoDbV2Source) MarshalJSON() ([]byte, error) {
20731	objectMap := m.CopySource.marshalInternal("MongoDbV2Source")
20732	populate(objectMap, "additionalColumns", m.AdditionalColumns)
20733	populate(objectMap, "batchSize", m.BatchSize)
20734	populate(objectMap, "cursorMethods", m.CursorMethods)
20735	populate(objectMap, "filter", m.Filter)
20736	populate(objectMap, "queryTimeout", m.QueryTimeout)
20737	return json.Marshal(objectMap)
20738}
20739
20740// UnmarshalJSON implements the json.Unmarshaller interface for type MongoDbV2Source.
20741func (m *MongoDbV2Source) UnmarshalJSON(data []byte) error {
20742	var rawMsg map[string]json.RawMessage
20743	if err := json.Unmarshal(data, &rawMsg); err != nil {
20744		return err
20745	}
20746	for key, val := range rawMsg {
20747		var err error
20748		switch key {
20749		case "additionalColumns":
20750			err = unpopulate(val, &m.AdditionalColumns)
20751			delete(rawMsg, key)
20752		case "batchSize":
20753			err = unpopulate(val, &m.BatchSize)
20754			delete(rawMsg, key)
20755		case "cursorMethods":
20756			err = unpopulate(val, &m.CursorMethods)
20757			delete(rawMsg, key)
20758		case "filter":
20759			err = unpopulate(val, &m.Filter)
20760			delete(rawMsg, key)
20761		case "queryTimeout":
20762			err = unpopulate(val, &m.QueryTimeout)
20763			delete(rawMsg, key)
20764		}
20765		if err != nil {
20766			return err
20767		}
20768	}
20769	return m.CopySource.unmarshalInternal(rawMsg)
20770}
20771
20772// MultiplePipelineTriggerClassification provides polymorphic access to related types.
20773// Call the interface's GetMultiplePipelineTrigger() method to access the common type.
20774// Use a type switch to determine the concrete type.  The possible types are:
20775// - *BlobEventsTrigger, *BlobTrigger, *CustomEventsTrigger, *MultiplePipelineTrigger, *ScheduleTrigger
20776type MultiplePipelineTriggerClassification interface {
20777	TriggerClassification
20778	// GetMultiplePipelineTrigger returns the MultiplePipelineTrigger content of the underlying type.
20779	GetMultiplePipelineTrigger() *MultiplePipelineTrigger
20780}
20781
20782// MultiplePipelineTrigger - Base class for all triggers that support one to many model for trigger to pipeline.
20783type MultiplePipelineTrigger struct {
20784	Trigger
20785	// Pipelines that need to be started.
20786	Pipelines []*TriggerPipelineReference `json:"pipelines,omitempty"`
20787}
20788
20789// GetMultiplePipelineTrigger implements the MultiplePipelineTriggerClassification interface for type MultiplePipelineTrigger.
20790func (m *MultiplePipelineTrigger) GetMultiplePipelineTrigger() *MultiplePipelineTrigger { return m }
20791
20792// MarshalJSON implements the json.Marshaller interface for type MultiplePipelineTrigger.
20793func (m MultiplePipelineTrigger) MarshalJSON() ([]byte, error) {
20794	objectMap := m.marshalInternal("MultiplePipelineTrigger")
20795	return json.Marshal(objectMap)
20796}
20797
20798// UnmarshalJSON implements the json.Unmarshaller interface for type MultiplePipelineTrigger.
20799func (m *MultiplePipelineTrigger) UnmarshalJSON(data []byte) error {
20800	var rawMsg map[string]json.RawMessage
20801	if err := json.Unmarshal(data, &rawMsg); err != nil {
20802		return err
20803	}
20804	return m.unmarshalInternal(rawMsg)
20805}
20806
20807func (m MultiplePipelineTrigger) marshalInternal(discValue string) map[string]interface{} {
20808	objectMap := m.Trigger.marshalInternal(discValue)
20809	populate(objectMap, "pipelines", m.Pipelines)
20810	return objectMap
20811}
20812
20813func (m *MultiplePipelineTrigger) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
20814	for key, val := range rawMsg {
20815		var err error
20816		switch key {
20817		case "pipelines":
20818			err = unpopulate(val, &m.Pipelines)
20819			delete(rawMsg, key)
20820		}
20821		if err != nil {
20822			return err
20823		}
20824	}
20825	return m.Trigger.unmarshalInternal(rawMsg)
20826}
20827
20828// MySQLLinkedService - Linked service for MySQL data source.
20829type MySQLLinkedService struct {
20830	LinkedService
20831	// REQUIRED; MySQL linked service properties.
20832	TypeProperties *MySQLLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
20833}
20834
20835// MarshalJSON implements the json.Marshaller interface for type MySQLLinkedService.
20836func (m MySQLLinkedService) MarshalJSON() ([]byte, error) {
20837	objectMap := m.LinkedService.marshalInternal("MySql")
20838	populate(objectMap, "typeProperties", m.TypeProperties)
20839	return json.Marshal(objectMap)
20840}
20841
20842// UnmarshalJSON implements the json.Unmarshaller interface for type MySQLLinkedService.
20843func (m *MySQLLinkedService) UnmarshalJSON(data []byte) error {
20844	var rawMsg map[string]json.RawMessage
20845	if err := json.Unmarshal(data, &rawMsg); err != nil {
20846		return err
20847	}
20848	for key, val := range rawMsg {
20849		var err error
20850		switch key {
20851		case "typeProperties":
20852			err = unpopulate(val, &m.TypeProperties)
20853			delete(rawMsg, key)
20854		}
20855		if err != nil {
20856			return err
20857		}
20858	}
20859	return m.LinkedService.unmarshalInternal(rawMsg)
20860}
20861
20862// MySQLLinkedServiceTypeProperties - MySQL linked service properties.
20863type MySQLLinkedServiceTypeProperties struct {
20864	// REQUIRED; The connection string.
20865	ConnectionString interface{} `json:"connectionString,omitempty"`
20866
20867	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
20868	// with resultType string).
20869	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
20870
20871	// The Azure key vault secret reference of password in connection string.
20872	Password *AzureKeyVaultSecretReference `json:"password,omitempty"`
20873}
20874
20875// MySQLSource - A copy activity source for MySQL databases.
20876type MySQLSource struct {
20877	TabularSource
20878	// Database query. Type: string (or Expression with resultType string).
20879	Query interface{} `json:"query,omitempty"`
20880}
20881
20882// MarshalJSON implements the json.Marshaller interface for type MySQLSource.
20883func (m MySQLSource) MarshalJSON() ([]byte, error) {
20884	objectMap := m.TabularSource.marshalInternal("MySqlSource")
20885	populate(objectMap, "query", m.Query)
20886	return json.Marshal(objectMap)
20887}
20888
20889// UnmarshalJSON implements the json.Unmarshaller interface for type MySQLSource.
20890func (m *MySQLSource) UnmarshalJSON(data []byte) error {
20891	var rawMsg map[string]json.RawMessage
20892	if err := json.Unmarshal(data, &rawMsg); err != nil {
20893		return err
20894	}
20895	for key, val := range rawMsg {
20896		var err error
20897		switch key {
20898		case "query":
20899			err = unpopulate(val, &m.Query)
20900			delete(rawMsg, key)
20901		}
20902		if err != nil {
20903			return err
20904		}
20905	}
20906	return m.TabularSource.unmarshalInternal(rawMsg)
20907}
20908
20909// MySQLTableDataset - The MySQL table dataset.
20910type MySQLTableDataset struct {
20911	Dataset
20912	// MySQL table dataset properties.
20913	TypeProperties *MySQLTableDatasetTypeProperties `json:"typeProperties,omitempty"`
20914}
20915
20916// MarshalJSON implements the json.Marshaller interface for type MySQLTableDataset.
20917func (m MySQLTableDataset) MarshalJSON() ([]byte, error) {
20918	objectMap := m.Dataset.marshalInternal("MySqlTable")
20919	populate(objectMap, "typeProperties", m.TypeProperties)
20920	return json.Marshal(objectMap)
20921}
20922
20923// UnmarshalJSON implements the json.Unmarshaller interface for type MySQLTableDataset.
20924func (m *MySQLTableDataset) UnmarshalJSON(data []byte) error {
20925	var rawMsg map[string]json.RawMessage
20926	if err := json.Unmarshal(data, &rawMsg); err != nil {
20927		return err
20928	}
20929	for key, val := range rawMsg {
20930		var err error
20931		switch key {
20932		case "typeProperties":
20933			err = unpopulate(val, &m.TypeProperties)
20934			delete(rawMsg, key)
20935		}
20936		if err != nil {
20937			return err
20938		}
20939	}
20940	return m.Dataset.unmarshalInternal(rawMsg)
20941}
20942
20943// MySQLTableDatasetTypeProperties - MySql table dataset properties.
20944type MySQLTableDatasetTypeProperties struct {
20945	// The MySQL table name. Type: string (or Expression with resultType string).
20946	TableName interface{} `json:"tableName,omitempty"`
20947}
20948
20949// NetezzaLinkedService - Netezza linked service.
20950type NetezzaLinkedService struct {
20951	LinkedService
20952	// REQUIRED; Netezza linked service properties.
20953	TypeProperties *NetezzaLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
20954}
20955
20956// MarshalJSON implements the json.Marshaller interface for type NetezzaLinkedService.
20957func (n NetezzaLinkedService) MarshalJSON() ([]byte, error) {
20958	objectMap := n.LinkedService.marshalInternal("Netezza")
20959	populate(objectMap, "typeProperties", n.TypeProperties)
20960	return json.Marshal(objectMap)
20961}
20962
20963// UnmarshalJSON implements the json.Unmarshaller interface for type NetezzaLinkedService.
20964func (n *NetezzaLinkedService) UnmarshalJSON(data []byte) error {
20965	var rawMsg map[string]json.RawMessage
20966	if err := json.Unmarshal(data, &rawMsg); err != nil {
20967		return err
20968	}
20969	for key, val := range rawMsg {
20970		var err error
20971		switch key {
20972		case "typeProperties":
20973			err = unpopulate(val, &n.TypeProperties)
20974			delete(rawMsg, key)
20975		}
20976		if err != nil {
20977			return err
20978		}
20979	}
20980	return n.LinkedService.unmarshalInternal(rawMsg)
20981}
20982
20983// NetezzaLinkedServiceTypeProperties - Netezza linked service properties.
20984type NetezzaLinkedServiceTypeProperties struct {
20985	// An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
20986	ConnectionString interface{} `json:"connectionString,omitempty"`
20987
20988	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
20989	// with resultType string).
20990	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
20991
20992	// The Azure key vault secret reference of password in connection string.
20993	Pwd *AzureKeyVaultSecretReference `json:"pwd,omitempty"`
20994}
20995
20996// NetezzaPartitionSettings - The settings that will be leveraged for Netezza source partitioning.
20997type NetezzaPartitionSettings struct {
20998	// The name of the column in integer type that will be used for proceeding range partitioning. Type: string (or Expression with resultType string).
20999	PartitionColumnName interface{} `json:"partitionColumnName,omitempty"`
21000
21001	// The minimum value of column specified in partitionColumnName that will be used for proceeding range partitioning. Type: string (or Expression with resultType
21002	// string).
21003	PartitionLowerBound interface{} `json:"partitionLowerBound,omitempty"`
21004
21005	// The maximum value of column specified in partitionColumnName that will be used for proceeding range partitioning. Type: string (or Expression with resultType
21006	// string).
21007	PartitionUpperBound interface{} `json:"partitionUpperBound,omitempty"`
21008}
21009
21010// NetezzaSource - A copy activity Netezza source.
21011type NetezzaSource struct {
21012	TabularSource
21013	// The partition mechanism that will be used for Netezza read in parallel.
21014	PartitionOption *NetezzaPartitionOption `json:"partitionOption,omitempty"`
21015
21016	// The settings that will be leveraged for Netezza source partitioning.
21017	PartitionSettings *NetezzaPartitionSettings `json:"partitionSettings,omitempty"`
21018
21019	// A query to retrieve data from source. Type: string (or Expression with resultType string).
21020	Query interface{} `json:"query,omitempty"`
21021}
21022
21023// MarshalJSON implements the json.Marshaller interface for type NetezzaSource.
21024func (n NetezzaSource) MarshalJSON() ([]byte, error) {
21025	objectMap := n.TabularSource.marshalInternal("NetezzaSource")
21026	populate(objectMap, "partitionOption", n.PartitionOption)
21027	populate(objectMap, "partitionSettings", n.PartitionSettings)
21028	populate(objectMap, "query", n.Query)
21029	return json.Marshal(objectMap)
21030}
21031
21032// UnmarshalJSON implements the json.Unmarshaller interface for type NetezzaSource.
21033func (n *NetezzaSource) UnmarshalJSON(data []byte) error {
21034	var rawMsg map[string]json.RawMessage
21035	if err := json.Unmarshal(data, &rawMsg); err != nil {
21036		return err
21037	}
21038	for key, val := range rawMsg {
21039		var err error
21040		switch key {
21041		case "partitionOption":
21042			err = unpopulate(val, &n.PartitionOption)
21043			delete(rawMsg, key)
21044		case "partitionSettings":
21045			err = unpopulate(val, &n.PartitionSettings)
21046			delete(rawMsg, key)
21047		case "query":
21048			err = unpopulate(val, &n.Query)
21049			delete(rawMsg, key)
21050		}
21051		if err != nil {
21052			return err
21053		}
21054	}
21055	return n.TabularSource.unmarshalInternal(rawMsg)
21056}
21057
21058// NetezzaTableDataset - Netezza dataset.
21059type NetezzaTableDataset struct {
21060	Dataset
21061	// Properties specific to this dataset type.
21062	TypeProperties *NetezzaTableDatasetTypeProperties `json:"typeProperties,omitempty"`
21063}
21064
21065// MarshalJSON implements the json.Marshaller interface for type NetezzaTableDataset.
21066func (n NetezzaTableDataset) MarshalJSON() ([]byte, error) {
21067	objectMap := n.Dataset.marshalInternal("NetezzaTable")
21068	populate(objectMap, "typeProperties", n.TypeProperties)
21069	return json.Marshal(objectMap)
21070}
21071
21072// UnmarshalJSON implements the json.Unmarshaller interface for type NetezzaTableDataset.
21073func (n *NetezzaTableDataset) UnmarshalJSON(data []byte) error {
21074	var rawMsg map[string]json.RawMessage
21075	if err := json.Unmarshal(data, &rawMsg); err != nil {
21076		return err
21077	}
21078	for key, val := range rawMsg {
21079		var err error
21080		switch key {
21081		case "typeProperties":
21082			err = unpopulate(val, &n.TypeProperties)
21083			delete(rawMsg, key)
21084		}
21085		if err != nil {
21086			return err
21087		}
21088	}
21089	return n.Dataset.unmarshalInternal(rawMsg)
21090}
21091
21092// NetezzaTableDatasetTypeProperties - Netezza dataset properties.
21093type NetezzaTableDatasetTypeProperties struct {
21094	// The schema name of the Netezza. Type: string (or Expression with resultType string).
21095	Schema interface{} `json:"schema,omitempty"`
21096
21097	// The table name of the Netezza. Type: string (or Expression with resultType string).
21098	Table interface{} `json:"table,omitempty"`
21099
21100	// This property will be retired. Please consider using schema + table properties instead.
21101	TableName interface{} `json:"tableName,omitempty"`
21102}
21103
21104// Notebook.
21105type Notebook struct {
21106	// REQUIRED; Array of cells of the current notebook.
21107	Cells []*NotebookCell `json:"cells,omitempty"`
21108
21109	// REQUIRED; Notebook root-level metadata.
21110	Metadata *NotebookMetadata `json:"metadata,omitempty"`
21111
21112	// REQUIRED; Notebook format (major number). Incremented between backwards incompatible changes to the notebook format.
21113	Nbformat *int32 `json:"nbformat,omitempty"`
21114
21115	// REQUIRED; Notebook format (minor number). Incremented for backward compatible changes to the notebook format.
21116	NbformatMinor *int32 `json:"nbformat_minor,omitempty"`
21117
21118	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
21119	AdditionalProperties map[string]interface{}
21120
21121	// Big data pool reference.
21122	BigDataPool *BigDataPoolReference `json:"bigDataPool,omitempty"`
21123
21124	// The description of the notebook.
21125	Description *string `json:"description,omitempty"`
21126
21127	// Session properties.
21128	SessionProperties *NotebookSessionProperties `json:"sessionProperties,omitempty"`
21129}
21130
21131// MarshalJSON implements the json.Marshaller interface for type Notebook.
21132func (n Notebook) MarshalJSON() ([]byte, error) {
21133	objectMap := make(map[string]interface{})
21134	populate(objectMap, "bigDataPool", n.BigDataPool)
21135	populate(objectMap, "cells", n.Cells)
21136	populate(objectMap, "description", n.Description)
21137	populate(objectMap, "metadata", n.Metadata)
21138	populate(objectMap, "nbformat", n.Nbformat)
21139	populate(objectMap, "nbformat_minor", n.NbformatMinor)
21140	populate(objectMap, "sessionProperties", n.SessionProperties)
21141	if n.AdditionalProperties != nil {
21142		for key, val := range n.AdditionalProperties {
21143			objectMap[key] = val
21144		}
21145	}
21146	return json.Marshal(objectMap)
21147}
21148
21149// UnmarshalJSON implements the json.Unmarshaller interface for type Notebook.
21150func (n *Notebook) UnmarshalJSON(data []byte) error {
21151	var rawMsg map[string]json.RawMessage
21152	if err := json.Unmarshal(data, &rawMsg); err != nil {
21153		return err
21154	}
21155	for key, val := range rawMsg {
21156		var err error
21157		switch key {
21158		case "bigDataPool":
21159			err = unpopulate(val, &n.BigDataPool)
21160			delete(rawMsg, key)
21161		case "cells":
21162			err = unpopulate(val, &n.Cells)
21163			delete(rawMsg, key)
21164		case "description":
21165			err = unpopulate(val, &n.Description)
21166			delete(rawMsg, key)
21167		case "metadata":
21168			err = unpopulate(val, &n.Metadata)
21169			delete(rawMsg, key)
21170		case "nbformat":
21171			err = unpopulate(val, &n.Nbformat)
21172			delete(rawMsg, key)
21173		case "nbformat_minor":
21174			err = unpopulate(val, &n.NbformatMinor)
21175			delete(rawMsg, key)
21176		case "sessionProperties":
21177			err = unpopulate(val, &n.SessionProperties)
21178			delete(rawMsg, key)
21179		default:
21180			if n.AdditionalProperties == nil {
21181				n.AdditionalProperties = map[string]interface{}{}
21182			}
21183			if val != nil {
21184				var aux interface{}
21185				err = json.Unmarshal(val, &aux)
21186				n.AdditionalProperties[key] = aux
21187			}
21188			delete(rawMsg, key)
21189		}
21190		if err != nil {
21191			return err
21192		}
21193	}
21194	return nil
21195}
21196
21197// NotebookBeginCreateOrUpdateNotebookOptions contains the optional parameters for the Notebook.BeginCreateOrUpdateNotebook method.
21198type NotebookBeginCreateOrUpdateNotebookOptions struct {
21199	// ETag of the Note book entity. Should only be specified for update, for which it should match existing entity or can be * for unconditional update.
21200	IfMatch *string
21201}
21202
21203// NotebookBeginDeleteNotebookOptions contains the optional parameters for the Notebook.BeginDeleteNotebook method.
21204type NotebookBeginDeleteNotebookOptions struct {
21205	// placeholder for future optional parameters
21206}
21207
21208// NotebookBeginRenameNotebookOptions contains the optional parameters for the Notebook.BeginRenameNotebook method.
21209type NotebookBeginRenameNotebookOptions struct {
21210	// placeholder for future optional parameters
21211}
21212
21213// NotebookCell - Notebook cell.
21214type NotebookCell struct {
21215	// REQUIRED; String identifying the type of cell.
21216	CellType *string `json:"cell_type,omitempty"`
21217
21218	// REQUIRED; Cell-level metadata.
21219	Metadata interface{} `json:"metadata,omitempty"`
21220
21221	// REQUIRED; Contents of the cell, represented as an array of lines.
21222	Source []*string `json:"source,omitempty"`
21223
21224	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
21225	AdditionalProperties map[string]interface{}
21226
21227	// Attachments associated with the cell.
21228	Attachments interface{} `json:"attachments,omitempty"`
21229
21230	// Cell-level output items.
21231	Outputs []*NotebookCellOutputItem `json:"outputs,omitempty"`
21232}
21233
21234// MarshalJSON implements the json.Marshaller interface for type NotebookCell.
21235func (n NotebookCell) MarshalJSON() ([]byte, error) {
21236	objectMap := make(map[string]interface{})
21237	populate(objectMap, "attachments", n.Attachments)
21238	populate(objectMap, "cell_type", n.CellType)
21239	populate(objectMap, "metadata", n.Metadata)
21240	populate(objectMap, "outputs", n.Outputs)
21241	populate(objectMap, "source", n.Source)
21242	if n.AdditionalProperties != nil {
21243		for key, val := range n.AdditionalProperties {
21244			objectMap[key] = val
21245		}
21246	}
21247	return json.Marshal(objectMap)
21248}
21249
21250// UnmarshalJSON implements the json.Unmarshaller interface for type NotebookCell.
21251func (n *NotebookCell) UnmarshalJSON(data []byte) error {
21252	var rawMsg map[string]json.RawMessage
21253	if err := json.Unmarshal(data, &rawMsg); err != nil {
21254		return err
21255	}
21256	for key, val := range rawMsg {
21257		var err error
21258		switch key {
21259		case "attachments":
21260			err = unpopulate(val, &n.Attachments)
21261			delete(rawMsg, key)
21262		case "cell_type":
21263			err = unpopulate(val, &n.CellType)
21264			delete(rawMsg, key)
21265		case "metadata":
21266			err = unpopulate(val, &n.Metadata)
21267			delete(rawMsg, key)
21268		case "outputs":
21269			err = unpopulate(val, &n.Outputs)
21270			delete(rawMsg, key)
21271		case "source":
21272			err = unpopulate(val, &n.Source)
21273			delete(rawMsg, key)
21274		default:
21275			if n.AdditionalProperties == nil {
21276				n.AdditionalProperties = map[string]interface{}{}
21277			}
21278			if val != nil {
21279				var aux interface{}
21280				err = json.Unmarshal(val, &aux)
21281				n.AdditionalProperties[key] = aux
21282			}
21283			delete(rawMsg, key)
21284		}
21285		if err != nil {
21286			return err
21287		}
21288	}
21289	return nil
21290}
21291
21292// NotebookCellOutputItem - An item of the notebook cell execution output.
21293type NotebookCellOutputItem struct {
21294	// REQUIRED; Execution, display, or stream outputs.
21295	OutputType *CellOutputType `json:"output_type,omitempty"`
21296
21297	// Output data. Use MIME type as key, and content as value.
21298	Data interface{} `json:"data,omitempty"`
21299
21300	// Execution sequence number.
21301	ExecutionCount *int32 `json:"execution_count,omitempty"`
21302
21303	// Metadata for the output item.
21304	Metadata interface{} `json:"metadata,omitempty"`
21305
21306	// For output_type=stream, determines the name of stream (stdout / stderr).
21307	Name *string `json:"name,omitempty"`
21308
21309	// For output_type=stream, the stream's text output, represented as a string or an array of strings.
21310	Text interface{} `json:"text,omitempty"`
21311}
21312
21313// NotebookGetNotebookOptions contains the optional parameters for the Notebook.GetNotebook method.
21314type NotebookGetNotebookOptions struct {
21315	// ETag of the Notebook entity. Should only be specified for get. If the ETag matches the existing entity tag, or if * was provided, then no content will
21316	// be returned.
21317	IfNoneMatch *string
21318}
21319
21320// NotebookGetNotebookSummaryByWorkSpaceOptions contains the optional parameters for the Notebook.GetNotebookSummaryByWorkSpace method.
21321type NotebookGetNotebookSummaryByWorkSpaceOptions struct {
21322	// placeholder for future optional parameters
21323}
21324
21325// NotebookGetNotebooksByWorkspaceOptions contains the optional parameters for the Notebook.GetNotebooksByWorkspace method.
21326type NotebookGetNotebooksByWorkspaceOptions struct {
21327	// placeholder for future optional parameters
21328}
21329
21330// NotebookKernelSpec - Kernel information.
21331type NotebookKernelSpec struct {
21332	// REQUIRED; Name to display in UI.
21333	DisplayName *string `json:"display_name,omitempty"`
21334
21335	// REQUIRED; Name of the kernel specification.
21336	Name *string `json:"name,omitempty"`
21337
21338	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
21339	AdditionalProperties map[string]interface{}
21340}
21341
21342// MarshalJSON implements the json.Marshaller interface for type NotebookKernelSpec.
21343func (n NotebookKernelSpec) MarshalJSON() ([]byte, error) {
21344	objectMap := make(map[string]interface{})
21345	populate(objectMap, "display_name", n.DisplayName)
21346	populate(objectMap, "name", n.Name)
21347	if n.AdditionalProperties != nil {
21348		for key, val := range n.AdditionalProperties {
21349			objectMap[key] = val
21350		}
21351	}
21352	return json.Marshal(objectMap)
21353}
21354
21355// UnmarshalJSON implements the json.Unmarshaller interface for type NotebookKernelSpec.
21356func (n *NotebookKernelSpec) UnmarshalJSON(data []byte) error {
21357	var rawMsg map[string]json.RawMessage
21358	if err := json.Unmarshal(data, &rawMsg); err != nil {
21359		return err
21360	}
21361	for key, val := range rawMsg {
21362		var err error
21363		switch key {
21364		case "display_name":
21365			err = unpopulate(val, &n.DisplayName)
21366			delete(rawMsg, key)
21367		case "name":
21368			err = unpopulate(val, &n.Name)
21369			delete(rawMsg, key)
21370		default:
21371			if n.AdditionalProperties == nil {
21372				n.AdditionalProperties = map[string]interface{}{}
21373			}
21374			if val != nil {
21375				var aux interface{}
21376				err = json.Unmarshal(val, &aux)
21377				n.AdditionalProperties[key] = aux
21378			}
21379			delete(rawMsg, key)
21380		}
21381		if err != nil {
21382			return err
21383		}
21384	}
21385	return nil
21386}
21387
21388// NotebookLanguageInfo - Language info.
21389type NotebookLanguageInfo struct {
21390	// REQUIRED; The programming language which this kernel runs.
21391	Name *string `json:"name,omitempty"`
21392
21393	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
21394	AdditionalProperties map[string]interface{}
21395
21396	// The codemirror mode to use for code in this language.
21397	CodemirrorMode *string `json:"codemirror_mode,omitempty"`
21398}
21399
21400// MarshalJSON implements the json.Marshaller interface for type NotebookLanguageInfo.
21401func (n NotebookLanguageInfo) MarshalJSON() ([]byte, error) {
21402	objectMap := make(map[string]interface{})
21403	populate(objectMap, "codemirror_mode", n.CodemirrorMode)
21404	populate(objectMap, "name", n.Name)
21405	if n.AdditionalProperties != nil {
21406		for key, val := range n.AdditionalProperties {
21407			objectMap[key] = val
21408		}
21409	}
21410	return json.Marshal(objectMap)
21411}
21412
21413// UnmarshalJSON implements the json.Unmarshaller interface for type NotebookLanguageInfo.
21414func (n *NotebookLanguageInfo) UnmarshalJSON(data []byte) error {
21415	var rawMsg map[string]json.RawMessage
21416	if err := json.Unmarshal(data, &rawMsg); err != nil {
21417		return err
21418	}
21419	for key, val := range rawMsg {
21420		var err error
21421		switch key {
21422		case "codemirror_mode":
21423			err = unpopulate(val, &n.CodemirrorMode)
21424			delete(rawMsg, key)
21425		case "name":
21426			err = unpopulate(val, &n.Name)
21427			delete(rawMsg, key)
21428		default:
21429			if n.AdditionalProperties == nil {
21430				n.AdditionalProperties = map[string]interface{}{}
21431			}
21432			if val != nil {
21433				var aux interface{}
21434				err = json.Unmarshal(val, &aux)
21435				n.AdditionalProperties[key] = aux
21436			}
21437			delete(rawMsg, key)
21438		}
21439		if err != nil {
21440			return err
21441		}
21442	}
21443	return nil
21444}
21445
21446// NotebookListResponse - A list of Notebook resources.
21447type NotebookListResponse struct {
21448	// REQUIRED; List of Notebooks.
21449	Value []*NotebookResource `json:"value,omitempty"`
21450
21451	// The link to the next page of results, if any remaining results exist.
21452	NextLink *string `json:"nextLink,omitempty"`
21453}
21454
21455// MarshalJSON implements the json.Marshaller interface for type NotebookListResponse.
21456func (n NotebookListResponse) MarshalJSON() ([]byte, error) {
21457	objectMap := make(map[string]interface{})
21458	populate(objectMap, "nextLink", n.NextLink)
21459	populate(objectMap, "value", n.Value)
21460	return json.Marshal(objectMap)
21461}
21462
21463// NotebookMetadata - Notebook root-level metadata.
21464type NotebookMetadata struct {
21465	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
21466	AdditionalProperties map[string]interface{}
21467
21468	// Kernel information.
21469	Kernelspec *NotebookKernelSpec `json:"kernelspec,omitempty"`
21470
21471	// Language info.
21472	LanguageInfo *NotebookLanguageInfo `json:"language_info,omitempty"`
21473}
21474
21475// MarshalJSON implements the json.Marshaller interface for type NotebookMetadata.
21476func (n NotebookMetadata) MarshalJSON() ([]byte, error) {
21477	objectMap := make(map[string]interface{})
21478	populate(objectMap, "kernelspec", n.Kernelspec)
21479	populate(objectMap, "language_info", n.LanguageInfo)
21480	if n.AdditionalProperties != nil {
21481		for key, val := range n.AdditionalProperties {
21482			objectMap[key] = val
21483		}
21484	}
21485	return json.Marshal(objectMap)
21486}
21487
21488// UnmarshalJSON implements the json.Unmarshaller interface for type NotebookMetadata.
21489func (n *NotebookMetadata) UnmarshalJSON(data []byte) error {
21490	var rawMsg map[string]json.RawMessage
21491	if err := json.Unmarshal(data, &rawMsg); err != nil {
21492		return err
21493	}
21494	for key, val := range rawMsg {
21495		var err error
21496		switch key {
21497		case "kernelspec":
21498			err = unpopulate(val, &n.Kernelspec)
21499			delete(rawMsg, key)
21500		case "language_info":
21501			err = unpopulate(val, &n.LanguageInfo)
21502			delete(rawMsg, key)
21503		default:
21504			if n.AdditionalProperties == nil {
21505				n.AdditionalProperties = map[string]interface{}{}
21506			}
21507			if val != nil {
21508				var aux interface{}
21509				err = json.Unmarshal(val, &aux)
21510				n.AdditionalProperties[key] = aux
21511			}
21512			delete(rawMsg, key)
21513		}
21514		if err != nil {
21515			return err
21516		}
21517	}
21518	return nil
21519}
21520
21521// NotebookResource - Notebook resource type.
21522type NotebookResource struct {
21523	// REQUIRED; The name of the resource
21524	Name *string `json:"name,omitempty"`
21525
21526	// REQUIRED; Properties of Notebook.
21527	Properties *Notebook `json:"properties,omitempty"`
21528
21529	// READ-ONLY; Resource Etag.
21530	Etag *string `json:"etag,omitempty" azure:"ro"`
21531
21532	// READ-ONLY; Fully qualified resource Id for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
21533	ID *string `json:"id,omitempty" azure:"ro"`
21534
21535	// READ-ONLY; The type of the resource. Ex- Microsoft.Compute/virtualMachines or Microsoft.Storage/storageAccounts.
21536	Type *string `json:"type,omitempty" azure:"ro"`
21537}
21538
21539// NotebookSessionProperties - Session properties.
21540type NotebookSessionProperties struct {
21541	// REQUIRED; Number of cores to use for the driver.
21542	DriverCores *int32 `json:"driverCores,omitempty"`
21543
21544	// REQUIRED; Amount of memory to use for the driver process.
21545	DriverMemory *string `json:"driverMemory,omitempty"`
21546
21547	// REQUIRED; Number of cores to use for each executor.
21548	ExecutorCores *int32 `json:"executorCores,omitempty"`
21549
21550	// REQUIRED; Amount of memory to use per executor process.
21551	ExecutorMemory *string `json:"executorMemory,omitempty"`
21552
21553	// REQUIRED; Number of executors to launch for this session.
21554	NumExecutors *int32 `json:"numExecutors,omitempty"`
21555}
21556
21557// ODataLinkedService - Open Data Protocol (OData) linked service.
21558type ODataLinkedService struct {
21559	LinkedService
21560	// REQUIRED; OData linked service properties.
21561	TypeProperties *ODataLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
21562}
21563
21564// MarshalJSON implements the json.Marshaller interface for type ODataLinkedService.
21565func (o ODataLinkedService) MarshalJSON() ([]byte, error) {
21566	objectMap := o.LinkedService.marshalInternal("OData")
21567	populate(objectMap, "typeProperties", o.TypeProperties)
21568	return json.Marshal(objectMap)
21569}
21570
21571// UnmarshalJSON implements the json.Unmarshaller interface for type ODataLinkedService.
21572func (o *ODataLinkedService) UnmarshalJSON(data []byte) error {
21573	var rawMsg map[string]json.RawMessage
21574	if err := json.Unmarshal(data, &rawMsg); err != nil {
21575		return err
21576	}
21577	for key, val := range rawMsg {
21578		var err error
21579		switch key {
21580		case "typeProperties":
21581			err = unpopulate(val, &o.TypeProperties)
21582			delete(rawMsg, key)
21583		}
21584		if err != nil {
21585			return err
21586		}
21587	}
21588	return o.LinkedService.unmarshalInternal(rawMsg)
21589}
21590
21591// ODataLinkedServiceTypeProperties - OData linked service properties.
21592type ODataLinkedServiceTypeProperties struct {
21593	// REQUIRED; The URL of the OData service endpoint. Type: string (or Expression with resultType string).
21594	URL interface{} `json:"url,omitempty"`
21595
21596	// Specify the resource you are requesting authorization to use Directory. Type: string (or Expression with resultType string).
21597	AADResourceID interface{} `json:"aadResourceId,omitempty"`
21598
21599	// Specify the credential type (key or cert) is used for service principal.
21600	AADServicePrincipalCredentialType *ODataAADServicePrincipalCredentialType `json:"aadServicePrincipalCredentialType,omitempty"`
21601
21602	// Type of authentication used to connect to the OData service.
21603	AuthenticationType *ODataAuthenticationType `json:"authenticationType,omitempty"`
21604
21605	// Indicates the azure cloud type of the service principle auth. Allowed values are AzurePublic, AzureChina, AzureUsGovernment, AzureGermany. Default value
21606	// is the data factory regions’ cloud type. Type:
21607	// string (or Expression with resultType string).
21608	AzureCloudType interface{} `json:"azureCloudType,omitempty"`
21609
21610	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
21611	// with resultType string).
21612	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
21613
21614	// Password of the OData service.
21615	Password SecretBaseClassification `json:"password,omitempty"`
21616
21617	// Specify the base64 encoded certificate of your application registered in Azure Active Directory. Type: string (or Expression with resultType string).
21618	ServicePrincipalEmbeddedCert SecretBaseClassification `json:"servicePrincipalEmbeddedCert,omitempty"`
21619
21620	// Specify the password of your certificate if your certificate has a password and you are using AadServicePrincipal authentication. Type: string (or Expression
21621	// with resultType string).
21622	ServicePrincipalEmbeddedCertPassword SecretBaseClassification `json:"servicePrincipalEmbeddedCertPassword,omitempty"`
21623
21624	// Specify the application id of your application registered in Azure Active Directory. Type: string (or Expression with resultType string).
21625	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
21626
21627	// Specify the secret of your application registered in Azure Active Directory. Type: string (or Expression with resultType string).
21628	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
21629
21630	// Specify the tenant information (domain name or tenant ID) under which your application resides. Type: string (or Expression with resultType string).
21631	Tenant interface{} `json:"tenant,omitempty"`
21632
21633	// User name of the OData service. Type: string (or Expression with resultType string).
21634	UserName interface{} `json:"userName,omitempty"`
21635}
21636
21637// MarshalJSON implements the json.Marshaller interface for type ODataLinkedServiceTypeProperties.
21638func (o ODataLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
21639	objectMap := make(map[string]interface{})
21640	populate(objectMap, "aadResourceId", o.AADResourceID)
21641	populate(objectMap, "aadServicePrincipalCredentialType", o.AADServicePrincipalCredentialType)
21642	populate(objectMap, "authenticationType", o.AuthenticationType)
21643	populate(objectMap, "azureCloudType", o.AzureCloudType)
21644	populate(objectMap, "encryptedCredential", o.EncryptedCredential)
21645	populate(objectMap, "password", o.Password)
21646	populate(objectMap, "servicePrincipalEmbeddedCert", o.ServicePrincipalEmbeddedCert)
21647	populate(objectMap, "servicePrincipalEmbeddedCertPassword", o.ServicePrincipalEmbeddedCertPassword)
21648	populate(objectMap, "servicePrincipalId", o.ServicePrincipalID)
21649	populate(objectMap, "servicePrincipalKey", o.ServicePrincipalKey)
21650	populate(objectMap, "tenant", o.Tenant)
21651	populate(objectMap, "url", o.URL)
21652	populate(objectMap, "userName", o.UserName)
21653	return json.Marshal(objectMap)
21654}
21655
21656// UnmarshalJSON implements the json.Unmarshaller interface for type ODataLinkedServiceTypeProperties.
21657func (o *ODataLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
21658	var rawMsg map[string]json.RawMessage
21659	if err := json.Unmarshal(data, &rawMsg); err != nil {
21660		return err
21661	}
21662	for key, val := range rawMsg {
21663		var err error
21664		switch key {
21665		case "aadResourceId":
21666			err = unpopulate(val, &o.AADResourceID)
21667			delete(rawMsg, key)
21668		case "aadServicePrincipalCredentialType":
21669			err = unpopulate(val, &o.AADServicePrincipalCredentialType)
21670			delete(rawMsg, key)
21671		case "authenticationType":
21672			err = unpopulate(val, &o.AuthenticationType)
21673			delete(rawMsg, key)
21674		case "azureCloudType":
21675			err = unpopulate(val, &o.AzureCloudType)
21676			delete(rawMsg, key)
21677		case "encryptedCredential":
21678			err = unpopulate(val, &o.EncryptedCredential)
21679			delete(rawMsg, key)
21680		case "password":
21681			o.Password, err = unmarshalSecretBaseClassification(val)
21682			delete(rawMsg, key)
21683		case "servicePrincipalEmbeddedCert":
21684			o.ServicePrincipalEmbeddedCert, err = unmarshalSecretBaseClassification(val)
21685			delete(rawMsg, key)
21686		case "servicePrincipalEmbeddedCertPassword":
21687			o.ServicePrincipalEmbeddedCertPassword, err = unmarshalSecretBaseClassification(val)
21688			delete(rawMsg, key)
21689		case "servicePrincipalId":
21690			err = unpopulate(val, &o.ServicePrincipalID)
21691			delete(rawMsg, key)
21692		case "servicePrincipalKey":
21693			o.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
21694			delete(rawMsg, key)
21695		case "tenant":
21696			err = unpopulate(val, &o.Tenant)
21697			delete(rawMsg, key)
21698		case "url":
21699			err = unpopulate(val, &o.URL)
21700			delete(rawMsg, key)
21701		case "userName":
21702			err = unpopulate(val, &o.UserName)
21703			delete(rawMsg, key)
21704		}
21705		if err != nil {
21706			return err
21707		}
21708	}
21709	return nil
21710}
21711
21712// ODataResourceDataset - The Open Data Protocol (OData) resource dataset.
21713type ODataResourceDataset struct {
21714	Dataset
21715	// OData dataset properties.
21716	TypeProperties *ODataResourceDatasetTypeProperties `json:"typeProperties,omitempty"`
21717}
21718
21719// MarshalJSON implements the json.Marshaller interface for type ODataResourceDataset.
21720func (o ODataResourceDataset) MarshalJSON() ([]byte, error) {
21721	objectMap := o.Dataset.marshalInternal("ODataResource")
21722	populate(objectMap, "typeProperties", o.TypeProperties)
21723	return json.Marshal(objectMap)
21724}
21725
21726// UnmarshalJSON implements the json.Unmarshaller interface for type ODataResourceDataset.
21727func (o *ODataResourceDataset) UnmarshalJSON(data []byte) error {
21728	var rawMsg map[string]json.RawMessage
21729	if err := json.Unmarshal(data, &rawMsg); err != nil {
21730		return err
21731	}
21732	for key, val := range rawMsg {
21733		var err error
21734		switch key {
21735		case "typeProperties":
21736			err = unpopulate(val, &o.TypeProperties)
21737			delete(rawMsg, key)
21738		}
21739		if err != nil {
21740			return err
21741		}
21742	}
21743	return o.Dataset.unmarshalInternal(rawMsg)
21744}
21745
21746// ODataResourceDatasetTypeProperties - OData dataset properties.
21747type ODataResourceDatasetTypeProperties struct {
21748	// The OData resource path. Type: string (or Expression with resultType string).
21749	Path interface{} `json:"path,omitempty"`
21750}
21751
21752// ODataSource - A copy activity source for OData source.
21753type ODataSource struct {
21754	CopySource
21755	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
21756	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
21757
21758	// The timeout (TimeSpan) to get an HTTP response. It is the timeout to get a response, not the timeout to read response data. Default value: 00:05:00.
21759	// Type: string (or Expression with resultType
21760	// string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
21761	HTTPRequestTimeout interface{} `json:"httpRequestTimeout,omitempty"`
21762
21763	// OData query. For example, "$top=1". Type: string (or Expression with resultType string).
21764	Query interface{} `json:"query,omitempty"`
21765}
21766
21767// MarshalJSON implements the json.Marshaller interface for type ODataSource.
21768func (o ODataSource) MarshalJSON() ([]byte, error) {
21769	objectMap := o.CopySource.marshalInternal("ODataSource")
21770	populate(objectMap, "additionalColumns", o.AdditionalColumns)
21771	populate(objectMap, "httpRequestTimeout", o.HTTPRequestTimeout)
21772	populate(objectMap, "query", o.Query)
21773	return json.Marshal(objectMap)
21774}
21775
21776// UnmarshalJSON implements the json.Unmarshaller interface for type ODataSource.
21777func (o *ODataSource) UnmarshalJSON(data []byte) error {
21778	var rawMsg map[string]json.RawMessage
21779	if err := json.Unmarshal(data, &rawMsg); err != nil {
21780		return err
21781	}
21782	for key, val := range rawMsg {
21783		var err error
21784		switch key {
21785		case "additionalColumns":
21786			err = unpopulate(val, &o.AdditionalColumns)
21787			delete(rawMsg, key)
21788		case "httpRequestTimeout":
21789			err = unpopulate(val, &o.HTTPRequestTimeout)
21790			delete(rawMsg, key)
21791		case "query":
21792			err = unpopulate(val, &o.Query)
21793			delete(rawMsg, key)
21794		}
21795		if err != nil {
21796			return err
21797		}
21798	}
21799	return o.CopySource.unmarshalInternal(rawMsg)
21800}
21801
21802// OdbcLinkedService - Open Database Connectivity (ODBC) linked service.
21803type OdbcLinkedService struct {
21804	LinkedService
21805	// REQUIRED; ODBC linked service properties.
21806	TypeProperties *OdbcLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
21807}
21808
21809// MarshalJSON implements the json.Marshaller interface for type OdbcLinkedService.
21810func (o OdbcLinkedService) MarshalJSON() ([]byte, error) {
21811	objectMap := o.LinkedService.marshalInternal("Odbc")
21812	populate(objectMap, "typeProperties", o.TypeProperties)
21813	return json.Marshal(objectMap)
21814}
21815
21816// UnmarshalJSON implements the json.Unmarshaller interface for type OdbcLinkedService.
21817func (o *OdbcLinkedService) UnmarshalJSON(data []byte) error {
21818	var rawMsg map[string]json.RawMessage
21819	if err := json.Unmarshal(data, &rawMsg); err != nil {
21820		return err
21821	}
21822	for key, val := range rawMsg {
21823		var err error
21824		switch key {
21825		case "typeProperties":
21826			err = unpopulate(val, &o.TypeProperties)
21827			delete(rawMsg, key)
21828		}
21829		if err != nil {
21830			return err
21831		}
21832	}
21833	return o.LinkedService.unmarshalInternal(rawMsg)
21834}
21835
21836// OdbcLinkedServiceTypeProperties - ODBC linked service properties.
21837type OdbcLinkedServiceTypeProperties struct {
21838	// REQUIRED; The non-access credential portion of the connection string as well as an optional encrypted credential. Type: string, SecureString or AzureKeyVaultSecretReference.
21839	ConnectionString interface{} `json:"connectionString,omitempty"`
21840
21841	// Type of authentication used to connect to the ODBC data store. Possible values are: Anonymous and Basic. Type: string (or Expression with resultType
21842	// string).
21843	AuthenticationType interface{} `json:"authenticationType,omitempty"`
21844
21845	// The access credential portion of the connection string specified in driver-specific property-value format.
21846	Credential SecretBaseClassification `json:"credential,omitempty"`
21847
21848	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
21849	// with resultType string).
21850	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
21851
21852	// Password for Basic authentication.
21853	Password SecretBaseClassification `json:"password,omitempty"`
21854
21855	// User name for Basic authentication. Type: string (or Expression with resultType string).
21856	UserName interface{} `json:"userName,omitempty"`
21857}
21858
21859// MarshalJSON implements the json.Marshaller interface for type OdbcLinkedServiceTypeProperties.
21860func (o OdbcLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
21861	objectMap := make(map[string]interface{})
21862	populate(objectMap, "authenticationType", o.AuthenticationType)
21863	populate(objectMap, "connectionString", o.ConnectionString)
21864	populate(objectMap, "credential", o.Credential)
21865	populate(objectMap, "encryptedCredential", o.EncryptedCredential)
21866	populate(objectMap, "password", o.Password)
21867	populate(objectMap, "userName", o.UserName)
21868	return json.Marshal(objectMap)
21869}
21870
21871// UnmarshalJSON implements the json.Unmarshaller interface for type OdbcLinkedServiceTypeProperties.
21872func (o *OdbcLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
21873	var rawMsg map[string]json.RawMessage
21874	if err := json.Unmarshal(data, &rawMsg); err != nil {
21875		return err
21876	}
21877	for key, val := range rawMsg {
21878		var err error
21879		switch key {
21880		case "authenticationType":
21881			err = unpopulate(val, &o.AuthenticationType)
21882			delete(rawMsg, key)
21883		case "connectionString":
21884			err = unpopulate(val, &o.ConnectionString)
21885			delete(rawMsg, key)
21886		case "credential":
21887			o.Credential, err = unmarshalSecretBaseClassification(val)
21888			delete(rawMsg, key)
21889		case "encryptedCredential":
21890			err = unpopulate(val, &o.EncryptedCredential)
21891			delete(rawMsg, key)
21892		case "password":
21893			o.Password, err = unmarshalSecretBaseClassification(val)
21894			delete(rawMsg, key)
21895		case "userName":
21896			err = unpopulate(val, &o.UserName)
21897			delete(rawMsg, key)
21898		}
21899		if err != nil {
21900			return err
21901		}
21902	}
21903	return nil
21904}
21905
21906// OdbcSink - A copy activity ODBC sink.
21907type OdbcSink struct {
21908	CopySink
21909	// A query to execute before starting the copy. Type: string (or Expression with resultType string).
21910	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
21911}
21912
21913// MarshalJSON implements the json.Marshaller interface for type OdbcSink.
21914func (o OdbcSink) MarshalJSON() ([]byte, error) {
21915	objectMap := o.CopySink.marshalInternal("OdbcSink")
21916	populate(objectMap, "preCopyScript", o.PreCopyScript)
21917	return json.Marshal(objectMap)
21918}
21919
21920// UnmarshalJSON implements the json.Unmarshaller interface for type OdbcSink.
21921func (o *OdbcSink) UnmarshalJSON(data []byte) error {
21922	var rawMsg map[string]json.RawMessage
21923	if err := json.Unmarshal(data, &rawMsg); err != nil {
21924		return err
21925	}
21926	for key, val := range rawMsg {
21927		var err error
21928		switch key {
21929		case "preCopyScript":
21930			err = unpopulate(val, &o.PreCopyScript)
21931			delete(rawMsg, key)
21932		}
21933		if err != nil {
21934			return err
21935		}
21936	}
21937	return o.CopySink.unmarshalInternal(rawMsg)
21938}
21939
21940// OdbcSource - A copy activity source for ODBC databases.
21941type OdbcSource struct {
21942	TabularSource
21943	// Database query. Type: string (or Expression with resultType string).
21944	Query interface{} `json:"query,omitempty"`
21945}
21946
21947// MarshalJSON implements the json.Marshaller interface for type OdbcSource.
21948func (o OdbcSource) MarshalJSON() ([]byte, error) {
21949	objectMap := o.TabularSource.marshalInternal("OdbcSource")
21950	populate(objectMap, "query", o.Query)
21951	return json.Marshal(objectMap)
21952}
21953
21954// UnmarshalJSON implements the json.Unmarshaller interface for type OdbcSource.
21955func (o *OdbcSource) UnmarshalJSON(data []byte) error {
21956	var rawMsg map[string]json.RawMessage
21957	if err := json.Unmarshal(data, &rawMsg); err != nil {
21958		return err
21959	}
21960	for key, val := range rawMsg {
21961		var err error
21962		switch key {
21963		case "query":
21964			err = unpopulate(val, &o.Query)
21965			delete(rawMsg, key)
21966		}
21967		if err != nil {
21968			return err
21969		}
21970	}
21971	return o.TabularSource.unmarshalInternal(rawMsg)
21972}
21973
21974// OdbcTableDataset - The ODBC table dataset.
21975type OdbcTableDataset struct {
21976	Dataset
21977	// ODBC table dataset properties.
21978	TypeProperties *OdbcTableDatasetTypeProperties `json:"typeProperties,omitempty"`
21979}
21980
21981// MarshalJSON implements the json.Marshaller interface for type OdbcTableDataset.
21982func (o OdbcTableDataset) MarshalJSON() ([]byte, error) {
21983	objectMap := o.Dataset.marshalInternal("OdbcTable")
21984	populate(objectMap, "typeProperties", o.TypeProperties)
21985	return json.Marshal(objectMap)
21986}
21987
21988// UnmarshalJSON implements the json.Unmarshaller interface for type OdbcTableDataset.
21989func (o *OdbcTableDataset) UnmarshalJSON(data []byte) error {
21990	var rawMsg map[string]json.RawMessage
21991	if err := json.Unmarshal(data, &rawMsg); err != nil {
21992		return err
21993	}
21994	for key, val := range rawMsg {
21995		var err error
21996		switch key {
21997		case "typeProperties":
21998			err = unpopulate(val, &o.TypeProperties)
21999			delete(rawMsg, key)
22000		}
22001		if err != nil {
22002			return err
22003		}
22004	}
22005	return o.Dataset.unmarshalInternal(rawMsg)
22006}
22007
22008// OdbcTableDatasetTypeProperties - ODBC table dataset properties.
22009type OdbcTableDatasetTypeProperties struct {
22010	// The ODBC table name. Type: string (or Expression with resultType string).
22011	TableName interface{} `json:"tableName,omitempty"`
22012}
22013
22014// Office365Dataset - The Office365 account.
22015type Office365Dataset struct {
22016	Dataset
22017	// REQUIRED; Office365 dataset properties.
22018	TypeProperties *Office365DatasetTypeProperties `json:"typeProperties,omitempty"`
22019}
22020
22021// MarshalJSON implements the json.Marshaller interface for type Office365Dataset.
22022func (o Office365Dataset) MarshalJSON() ([]byte, error) {
22023	objectMap := o.Dataset.marshalInternal("Office365Table")
22024	populate(objectMap, "typeProperties", o.TypeProperties)
22025	return json.Marshal(objectMap)
22026}
22027
22028// UnmarshalJSON implements the json.Unmarshaller interface for type Office365Dataset.
22029func (o *Office365Dataset) UnmarshalJSON(data []byte) error {
22030	var rawMsg map[string]json.RawMessage
22031	if err := json.Unmarshal(data, &rawMsg); err != nil {
22032		return err
22033	}
22034	for key, val := range rawMsg {
22035		var err error
22036		switch key {
22037		case "typeProperties":
22038			err = unpopulate(val, &o.TypeProperties)
22039			delete(rawMsg, key)
22040		}
22041		if err != nil {
22042			return err
22043		}
22044	}
22045	return o.Dataset.unmarshalInternal(rawMsg)
22046}
22047
22048// Office365DatasetTypeProperties - Office365 dataset properties.
22049type Office365DatasetTypeProperties struct {
22050	// REQUIRED; Name of the dataset to extract from Office 365. Type: string (or Expression with resultType string).
22051	TableName interface{} `json:"tableName,omitempty"`
22052
22053	// A predicate expression that can be used to filter the specific rows to extract from Office 365. Type: string (or Expression with resultType string).
22054	Predicate interface{} `json:"predicate,omitempty"`
22055}
22056
22057// Office365LinkedService - Office365 linked service.
22058type Office365LinkedService struct {
22059	LinkedService
22060	// REQUIRED; Office365 linked service properties.
22061	TypeProperties *Office365LinkedServiceTypeProperties `json:"typeProperties,omitempty"`
22062}
22063
22064// MarshalJSON implements the json.Marshaller interface for type Office365LinkedService.
22065func (o Office365LinkedService) MarshalJSON() ([]byte, error) {
22066	objectMap := o.LinkedService.marshalInternal("Office365")
22067	populate(objectMap, "typeProperties", o.TypeProperties)
22068	return json.Marshal(objectMap)
22069}
22070
22071// UnmarshalJSON implements the json.Unmarshaller interface for type Office365LinkedService.
22072func (o *Office365LinkedService) UnmarshalJSON(data []byte) error {
22073	var rawMsg map[string]json.RawMessage
22074	if err := json.Unmarshal(data, &rawMsg); err != nil {
22075		return err
22076	}
22077	for key, val := range rawMsg {
22078		var err error
22079		switch key {
22080		case "typeProperties":
22081			err = unpopulate(val, &o.TypeProperties)
22082			delete(rawMsg, key)
22083		}
22084		if err != nil {
22085			return err
22086		}
22087	}
22088	return o.LinkedService.unmarshalInternal(rawMsg)
22089}
22090
22091// Office365LinkedServiceTypeProperties - Office365 linked service properties.
22092type Office365LinkedServiceTypeProperties struct {
22093	// REQUIRED; Azure tenant ID to which the Office 365 account belongs. Type: string (or Expression with resultType string).
22094	Office365TenantID interface{} `json:"office365TenantId,omitempty"`
22095
22096	// REQUIRED; Specify the application's client ID. Type: string (or Expression with resultType string).
22097	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
22098
22099	// REQUIRED; Specify the application's key.
22100	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
22101
22102	// REQUIRED; Specify the tenant information under which your Azure AD web application resides. Type: string (or Expression with resultType string).
22103	ServicePrincipalTenantID interface{} `json:"servicePrincipalTenantId,omitempty"`
22104
22105	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
22106	// with resultType string).
22107	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
22108}
22109
22110// MarshalJSON implements the json.Marshaller interface for type Office365LinkedServiceTypeProperties.
22111func (o Office365LinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
22112	objectMap := make(map[string]interface{})
22113	populate(objectMap, "encryptedCredential", o.EncryptedCredential)
22114	populate(objectMap, "office365TenantId", o.Office365TenantID)
22115	populate(objectMap, "servicePrincipalId", o.ServicePrincipalID)
22116	populate(objectMap, "servicePrincipalKey", o.ServicePrincipalKey)
22117	populate(objectMap, "servicePrincipalTenantId", o.ServicePrincipalTenantID)
22118	return json.Marshal(objectMap)
22119}
22120
22121// UnmarshalJSON implements the json.Unmarshaller interface for type Office365LinkedServiceTypeProperties.
22122func (o *Office365LinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
22123	var rawMsg map[string]json.RawMessage
22124	if err := json.Unmarshal(data, &rawMsg); err != nil {
22125		return err
22126	}
22127	for key, val := range rawMsg {
22128		var err error
22129		switch key {
22130		case "encryptedCredential":
22131			err = unpopulate(val, &o.EncryptedCredential)
22132			delete(rawMsg, key)
22133		case "office365TenantId":
22134			err = unpopulate(val, &o.Office365TenantID)
22135			delete(rawMsg, key)
22136		case "servicePrincipalId":
22137			err = unpopulate(val, &o.ServicePrincipalID)
22138			delete(rawMsg, key)
22139		case "servicePrincipalKey":
22140			o.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
22141			delete(rawMsg, key)
22142		case "servicePrincipalTenantId":
22143			err = unpopulate(val, &o.ServicePrincipalTenantID)
22144			delete(rawMsg, key)
22145		}
22146		if err != nil {
22147			return err
22148		}
22149	}
22150	return nil
22151}
22152
22153// Office365Source - A copy activity source for an Office 365 service.
22154type Office365Source struct {
22155	CopySource
22156	// The groups containing all the users. Type: array of strings (or Expression with resultType array of strings).
22157	AllowedGroups interface{} `json:"allowedGroups,omitempty"`
22158
22159	// The Column to apply the and . Type: string (or Expression with resultType string).
22160	DateFilterColumn interface{} `json:"dateFilterColumn,omitempty"`
22161
22162	// End time of the requested range for this dataset. Type: string (or Expression with resultType string).
22163	EndTime interface{} `json:"endTime,omitempty"`
22164
22165	// The columns to be read out from the Office 365 table. Type: array of objects (or Expression with resultType array of objects). Example: [ { "name": "Id"
22166	// }, { "name": "CreatedDateTime" } ]
22167	OutputColumns interface{} `json:"outputColumns,omitempty"`
22168
22169	// Start time of the requested range for this dataset. Type: string (or Expression with resultType string).
22170	StartTime interface{} `json:"startTime,omitempty"`
22171
22172	// The user scope uri. Type: string (or Expression with resultType string).
22173	UserScopeFilterURI interface{} `json:"userScopeFilterUri,omitempty"`
22174}
22175
22176// MarshalJSON implements the json.Marshaller interface for type Office365Source.
22177func (o Office365Source) MarshalJSON() ([]byte, error) {
22178	objectMap := o.CopySource.marshalInternal("Office365Source")
22179	populate(objectMap, "allowedGroups", o.AllowedGroups)
22180	populate(objectMap, "dateFilterColumn", o.DateFilterColumn)
22181	populate(objectMap, "endTime", o.EndTime)
22182	populate(objectMap, "outputColumns", o.OutputColumns)
22183	populate(objectMap, "startTime", o.StartTime)
22184	populate(objectMap, "userScopeFilterUri", o.UserScopeFilterURI)
22185	return json.Marshal(objectMap)
22186}
22187
22188// UnmarshalJSON implements the json.Unmarshaller interface for type Office365Source.
22189func (o *Office365Source) UnmarshalJSON(data []byte) error {
22190	var rawMsg map[string]json.RawMessage
22191	if err := json.Unmarshal(data, &rawMsg); err != nil {
22192		return err
22193	}
22194	for key, val := range rawMsg {
22195		var err error
22196		switch key {
22197		case "allowedGroups":
22198			err = unpopulate(val, &o.AllowedGroups)
22199			delete(rawMsg, key)
22200		case "dateFilterColumn":
22201			err = unpopulate(val, &o.DateFilterColumn)
22202			delete(rawMsg, key)
22203		case "endTime":
22204			err = unpopulate(val, &o.EndTime)
22205			delete(rawMsg, key)
22206		case "outputColumns":
22207			err = unpopulate(val, &o.OutputColumns)
22208			delete(rawMsg, key)
22209		case "startTime":
22210			err = unpopulate(val, &o.StartTime)
22211			delete(rawMsg, key)
22212		case "userScopeFilterUri":
22213			err = unpopulate(val, &o.UserScopeFilterURI)
22214			delete(rawMsg, key)
22215		}
22216		if err != nil {
22217			return err
22218		}
22219	}
22220	return o.CopySource.unmarshalInternal(rawMsg)
22221}
22222
22223// OperationResult - Operation status for the operation
22224type OperationResult struct {
22225	// Error data
22226	Error *CloudErrorBody `json:"error,omitempty"`
22227
22228	// READ-ONLY; Operation status
22229	Status *string `json:"status,omitempty" azure:"ro"`
22230}
22231
22232// OracleLinkedService - Oracle database.
22233type OracleLinkedService struct {
22234	LinkedService
22235	// REQUIRED; Oracle database linked service properties.
22236	TypeProperties *OracleLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
22237}
22238
22239// MarshalJSON implements the json.Marshaller interface for type OracleLinkedService.
22240func (o OracleLinkedService) MarshalJSON() ([]byte, error) {
22241	objectMap := o.LinkedService.marshalInternal("Oracle")
22242	populate(objectMap, "typeProperties", o.TypeProperties)
22243	return json.Marshal(objectMap)
22244}
22245
22246// UnmarshalJSON implements the json.Unmarshaller interface for type OracleLinkedService.
22247func (o *OracleLinkedService) UnmarshalJSON(data []byte) error {
22248	var rawMsg map[string]json.RawMessage
22249	if err := json.Unmarshal(data, &rawMsg); err != nil {
22250		return err
22251	}
22252	for key, val := range rawMsg {
22253		var err error
22254		switch key {
22255		case "typeProperties":
22256			err = unpopulate(val, &o.TypeProperties)
22257			delete(rawMsg, key)
22258		}
22259		if err != nil {
22260			return err
22261		}
22262	}
22263	return o.LinkedService.unmarshalInternal(rawMsg)
22264}
22265
22266// OracleLinkedServiceTypeProperties - Oracle database linked service properties.
22267type OracleLinkedServiceTypeProperties struct {
22268	// REQUIRED; The connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
22269	ConnectionString interface{} `json:"connectionString,omitempty"`
22270
22271	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
22272	// with resultType string).
22273	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
22274
22275	// The Azure key vault secret reference of password in connection string.
22276	Password *AzureKeyVaultSecretReference `json:"password,omitempty"`
22277}
22278
22279// OraclePartitionSettings - The settings that will be leveraged for Oracle source partitioning.
22280type OraclePartitionSettings struct {
22281	// The name of the column in integer type that will be used for proceeding range partitioning. Type: string (or Expression with resultType string).
22282	PartitionColumnName interface{} `json:"partitionColumnName,omitempty"`
22283
22284	// The minimum value of column specified in partitionColumnName that will be used for proceeding range partitioning. Type: string (or Expression with resultType
22285	// string).
22286	PartitionLowerBound interface{} `json:"partitionLowerBound,omitempty"`
22287
22288	// Names of the physical partitions of Oracle table.
22289	PartitionNames interface{} `json:"partitionNames,omitempty"`
22290
22291	// The maximum value of column specified in partitionColumnName that will be used for proceeding range partitioning. Type: string (or Expression with resultType
22292	// string).
22293	PartitionUpperBound interface{} `json:"partitionUpperBound,omitempty"`
22294}
22295
22296// OracleServiceCloudLinkedService - Oracle Service Cloud linked service.
22297type OracleServiceCloudLinkedService struct {
22298	LinkedService
22299	// REQUIRED; Oracle Service Cloud linked service properties.
22300	TypeProperties *OracleServiceCloudLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
22301}
22302
22303// MarshalJSON implements the json.Marshaller interface for type OracleServiceCloudLinkedService.
22304func (o OracleServiceCloudLinkedService) MarshalJSON() ([]byte, error) {
22305	objectMap := o.LinkedService.marshalInternal("OracleServiceCloud")
22306	populate(objectMap, "typeProperties", o.TypeProperties)
22307	return json.Marshal(objectMap)
22308}
22309
22310// UnmarshalJSON implements the json.Unmarshaller interface for type OracleServiceCloudLinkedService.
22311func (o *OracleServiceCloudLinkedService) UnmarshalJSON(data []byte) error {
22312	var rawMsg map[string]json.RawMessage
22313	if err := json.Unmarshal(data, &rawMsg); err != nil {
22314		return err
22315	}
22316	for key, val := range rawMsg {
22317		var err error
22318		switch key {
22319		case "typeProperties":
22320			err = unpopulate(val, &o.TypeProperties)
22321			delete(rawMsg, key)
22322		}
22323		if err != nil {
22324			return err
22325		}
22326	}
22327	return o.LinkedService.unmarshalInternal(rawMsg)
22328}
22329
22330// OracleServiceCloudLinkedServiceTypeProperties - Oracle Service Cloud linked service properties.
22331type OracleServiceCloudLinkedServiceTypeProperties struct {
22332	// REQUIRED; The URL of the Oracle Service Cloud instance.
22333	Host interface{} `json:"host,omitempty"`
22334
22335	// REQUIRED; The password corresponding to the user name that you provided in the username key.
22336	Password SecretBaseClassification `json:"password,omitempty"`
22337
22338	// REQUIRED; The user name that you use to access Oracle Service Cloud server.
22339	Username interface{} `json:"username,omitempty"`
22340
22341	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
22342	// with resultType string).
22343	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
22344
22345	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true. Type: boolean (or Expression with resultType boolean).
22346	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
22347
22348	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
22349	// is true. Type: boolean (or Expression with
22350	// resultType boolean).
22351	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
22352
22353	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true. Type: boolean (or Expression with resultType
22354	// boolean).
22355	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
22356}
22357
22358// MarshalJSON implements the json.Marshaller interface for type OracleServiceCloudLinkedServiceTypeProperties.
22359func (o OracleServiceCloudLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
22360	objectMap := make(map[string]interface{})
22361	populate(objectMap, "encryptedCredential", o.EncryptedCredential)
22362	populate(objectMap, "host", o.Host)
22363	populate(objectMap, "password", o.Password)
22364	populate(objectMap, "useEncryptedEndpoints", o.UseEncryptedEndpoints)
22365	populate(objectMap, "useHostVerification", o.UseHostVerification)
22366	populate(objectMap, "usePeerVerification", o.UsePeerVerification)
22367	populate(objectMap, "username", o.Username)
22368	return json.Marshal(objectMap)
22369}
22370
22371// UnmarshalJSON implements the json.Unmarshaller interface for type OracleServiceCloudLinkedServiceTypeProperties.
22372func (o *OracleServiceCloudLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
22373	var rawMsg map[string]json.RawMessage
22374	if err := json.Unmarshal(data, &rawMsg); err != nil {
22375		return err
22376	}
22377	for key, val := range rawMsg {
22378		var err error
22379		switch key {
22380		case "encryptedCredential":
22381			err = unpopulate(val, &o.EncryptedCredential)
22382			delete(rawMsg, key)
22383		case "host":
22384			err = unpopulate(val, &o.Host)
22385			delete(rawMsg, key)
22386		case "password":
22387			o.Password, err = unmarshalSecretBaseClassification(val)
22388			delete(rawMsg, key)
22389		case "useEncryptedEndpoints":
22390			err = unpopulate(val, &o.UseEncryptedEndpoints)
22391			delete(rawMsg, key)
22392		case "useHostVerification":
22393			err = unpopulate(val, &o.UseHostVerification)
22394			delete(rawMsg, key)
22395		case "usePeerVerification":
22396			err = unpopulate(val, &o.UsePeerVerification)
22397			delete(rawMsg, key)
22398		case "username":
22399			err = unpopulate(val, &o.Username)
22400			delete(rawMsg, key)
22401		}
22402		if err != nil {
22403			return err
22404		}
22405	}
22406	return nil
22407}
22408
22409// OracleServiceCloudObjectDataset - Oracle Service Cloud dataset.
22410type OracleServiceCloudObjectDataset struct {
22411	Dataset
22412	// Properties specific to this dataset type.
22413	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
22414}
22415
22416// MarshalJSON implements the json.Marshaller interface for type OracleServiceCloudObjectDataset.
22417func (o OracleServiceCloudObjectDataset) MarshalJSON() ([]byte, error) {
22418	objectMap := o.Dataset.marshalInternal("OracleServiceCloudObject")
22419	populate(objectMap, "typeProperties", o.TypeProperties)
22420	return json.Marshal(objectMap)
22421}
22422
22423// UnmarshalJSON implements the json.Unmarshaller interface for type OracleServiceCloudObjectDataset.
22424func (o *OracleServiceCloudObjectDataset) UnmarshalJSON(data []byte) error {
22425	var rawMsg map[string]json.RawMessage
22426	if err := json.Unmarshal(data, &rawMsg); err != nil {
22427		return err
22428	}
22429	for key, val := range rawMsg {
22430		var err error
22431		switch key {
22432		case "typeProperties":
22433			err = unpopulate(val, &o.TypeProperties)
22434			delete(rawMsg, key)
22435		}
22436		if err != nil {
22437			return err
22438		}
22439	}
22440	return o.Dataset.unmarshalInternal(rawMsg)
22441}
22442
22443// OracleServiceCloudSource - A copy activity Oracle Service Cloud source.
22444type OracleServiceCloudSource struct {
22445	TabularSource
22446	// A query to retrieve data from source. Type: string (or Expression with resultType string).
22447	Query interface{} `json:"query,omitempty"`
22448}
22449
22450// MarshalJSON implements the json.Marshaller interface for type OracleServiceCloudSource.
22451func (o OracleServiceCloudSource) MarshalJSON() ([]byte, error) {
22452	objectMap := o.TabularSource.marshalInternal("OracleServiceCloudSource")
22453	populate(objectMap, "query", o.Query)
22454	return json.Marshal(objectMap)
22455}
22456
22457// UnmarshalJSON implements the json.Unmarshaller interface for type OracleServiceCloudSource.
22458func (o *OracleServiceCloudSource) UnmarshalJSON(data []byte) error {
22459	var rawMsg map[string]json.RawMessage
22460	if err := json.Unmarshal(data, &rawMsg); err != nil {
22461		return err
22462	}
22463	for key, val := range rawMsg {
22464		var err error
22465		switch key {
22466		case "query":
22467			err = unpopulate(val, &o.Query)
22468			delete(rawMsg, key)
22469		}
22470		if err != nil {
22471			return err
22472		}
22473	}
22474	return o.TabularSource.unmarshalInternal(rawMsg)
22475}
22476
22477// OracleSink - A copy activity Oracle sink.
22478type OracleSink struct {
22479	CopySink
22480	// SQL pre-copy script. Type: string (or Expression with resultType string).
22481	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
22482}
22483
22484// MarshalJSON implements the json.Marshaller interface for type OracleSink.
22485func (o OracleSink) MarshalJSON() ([]byte, error) {
22486	objectMap := o.CopySink.marshalInternal("OracleSink")
22487	populate(objectMap, "preCopyScript", o.PreCopyScript)
22488	return json.Marshal(objectMap)
22489}
22490
22491// UnmarshalJSON implements the json.Unmarshaller interface for type OracleSink.
22492func (o *OracleSink) UnmarshalJSON(data []byte) error {
22493	var rawMsg map[string]json.RawMessage
22494	if err := json.Unmarshal(data, &rawMsg); err != nil {
22495		return err
22496	}
22497	for key, val := range rawMsg {
22498		var err error
22499		switch key {
22500		case "preCopyScript":
22501			err = unpopulate(val, &o.PreCopyScript)
22502			delete(rawMsg, key)
22503		}
22504		if err != nil {
22505			return err
22506		}
22507	}
22508	return o.CopySink.unmarshalInternal(rawMsg)
22509}
22510
22511// OracleSource - A copy activity Oracle source.
22512type OracleSource struct {
22513	CopySource
22514	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
22515	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
22516
22517	// Oracle reader query. Type: string (or Expression with resultType string).
22518	OracleReaderQuery interface{} `json:"oracleReaderQuery,omitempty"`
22519
22520	// The partition mechanism that will be used for Oracle read in parallel.
22521	PartitionOption *OraclePartitionOption `json:"partitionOption,omitempty"`
22522
22523	// The settings that will be leveraged for Oracle source partitioning.
22524	PartitionSettings *OraclePartitionSettings `json:"partitionSettings,omitempty"`
22525
22526	// Query timeout. Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
22527	QueryTimeout interface{} `json:"queryTimeout,omitempty"`
22528}
22529
22530// MarshalJSON implements the json.Marshaller interface for type OracleSource.
22531func (o OracleSource) MarshalJSON() ([]byte, error) {
22532	objectMap := o.CopySource.marshalInternal("OracleSource")
22533	populate(objectMap, "additionalColumns", o.AdditionalColumns)
22534	populate(objectMap, "oracleReaderQuery", o.OracleReaderQuery)
22535	populate(objectMap, "partitionOption", o.PartitionOption)
22536	populate(objectMap, "partitionSettings", o.PartitionSettings)
22537	populate(objectMap, "queryTimeout", o.QueryTimeout)
22538	return json.Marshal(objectMap)
22539}
22540
22541// UnmarshalJSON implements the json.Unmarshaller interface for type OracleSource.
22542func (o *OracleSource) UnmarshalJSON(data []byte) error {
22543	var rawMsg map[string]json.RawMessage
22544	if err := json.Unmarshal(data, &rawMsg); err != nil {
22545		return err
22546	}
22547	for key, val := range rawMsg {
22548		var err error
22549		switch key {
22550		case "additionalColumns":
22551			err = unpopulate(val, &o.AdditionalColumns)
22552			delete(rawMsg, key)
22553		case "oracleReaderQuery":
22554			err = unpopulate(val, &o.OracleReaderQuery)
22555			delete(rawMsg, key)
22556		case "partitionOption":
22557			err = unpopulate(val, &o.PartitionOption)
22558			delete(rawMsg, key)
22559		case "partitionSettings":
22560			err = unpopulate(val, &o.PartitionSettings)
22561			delete(rawMsg, key)
22562		case "queryTimeout":
22563			err = unpopulate(val, &o.QueryTimeout)
22564			delete(rawMsg, key)
22565		}
22566		if err != nil {
22567			return err
22568		}
22569	}
22570	return o.CopySource.unmarshalInternal(rawMsg)
22571}
22572
22573// OracleTableDataset - The on-premises Oracle database dataset.
22574type OracleTableDataset struct {
22575	Dataset
22576	// On-premises Oracle dataset properties.
22577	TypeProperties *OracleTableDatasetTypeProperties `json:"typeProperties,omitempty"`
22578}
22579
22580// MarshalJSON implements the json.Marshaller interface for type OracleTableDataset.
22581func (o OracleTableDataset) MarshalJSON() ([]byte, error) {
22582	objectMap := o.Dataset.marshalInternal("OracleTable")
22583	populate(objectMap, "typeProperties", o.TypeProperties)
22584	return json.Marshal(objectMap)
22585}
22586
22587// UnmarshalJSON implements the json.Unmarshaller interface for type OracleTableDataset.
22588func (o *OracleTableDataset) UnmarshalJSON(data []byte) error {
22589	var rawMsg map[string]json.RawMessage
22590	if err := json.Unmarshal(data, &rawMsg); err != nil {
22591		return err
22592	}
22593	for key, val := range rawMsg {
22594		var err error
22595		switch key {
22596		case "typeProperties":
22597			err = unpopulate(val, &o.TypeProperties)
22598			delete(rawMsg, key)
22599		}
22600		if err != nil {
22601			return err
22602		}
22603	}
22604	return o.Dataset.unmarshalInternal(rawMsg)
22605}
22606
22607// OracleTableDatasetTypeProperties - On-premises Oracle dataset properties.
22608type OracleTableDatasetTypeProperties struct {
22609	// The schema name of the on-premises Oracle database. Type: string (or Expression with resultType string).
22610	Schema interface{} `json:"schema,omitempty"`
22611
22612	// The table name of the on-premises Oracle database. Type: string (or Expression with resultType string).
22613	Table interface{} `json:"table,omitempty"`
22614
22615	// This property will be retired. Please consider using schema + table properties instead.
22616	TableName interface{} `json:"tableName,omitempty"`
22617}
22618
22619// OrcDataset - ORC dataset.
22620type OrcDataset struct {
22621	Dataset
22622	// ORC dataset properties.
22623	TypeProperties *OrcDatasetTypeProperties `json:"typeProperties,omitempty"`
22624}
22625
22626// MarshalJSON implements the json.Marshaller interface for type OrcDataset.
22627func (o OrcDataset) MarshalJSON() ([]byte, error) {
22628	objectMap := o.Dataset.marshalInternal("Orc")
22629	populate(objectMap, "typeProperties", o.TypeProperties)
22630	return json.Marshal(objectMap)
22631}
22632
22633// UnmarshalJSON implements the json.Unmarshaller interface for type OrcDataset.
22634func (o *OrcDataset) UnmarshalJSON(data []byte) error {
22635	var rawMsg map[string]json.RawMessage
22636	if err := json.Unmarshal(data, &rawMsg); err != nil {
22637		return err
22638	}
22639	for key, val := range rawMsg {
22640		var err error
22641		switch key {
22642		case "typeProperties":
22643			err = unpopulate(val, &o.TypeProperties)
22644			delete(rawMsg, key)
22645		}
22646		if err != nil {
22647			return err
22648		}
22649	}
22650	return o.Dataset.unmarshalInternal(rawMsg)
22651}
22652
22653// OrcDatasetTypeProperties - ORC dataset properties.
22654type OrcDatasetTypeProperties struct {
22655	// REQUIRED; The location of the ORC data storage.
22656	Location            DatasetLocationClassification `json:"location,omitempty"`
22657	OrcCompressionCodec *OrcCompressionCodec          `json:"orcCompressionCodec,omitempty"`
22658}
22659
22660// MarshalJSON implements the json.Marshaller interface for type OrcDatasetTypeProperties.
22661func (o OrcDatasetTypeProperties) MarshalJSON() ([]byte, error) {
22662	objectMap := make(map[string]interface{})
22663	populate(objectMap, "location", o.Location)
22664	populate(objectMap, "orcCompressionCodec", o.OrcCompressionCodec)
22665	return json.Marshal(objectMap)
22666}
22667
22668// UnmarshalJSON implements the json.Unmarshaller interface for type OrcDatasetTypeProperties.
22669func (o *OrcDatasetTypeProperties) UnmarshalJSON(data []byte) error {
22670	var rawMsg map[string]json.RawMessage
22671	if err := json.Unmarshal(data, &rawMsg); err != nil {
22672		return err
22673	}
22674	for key, val := range rawMsg {
22675		var err error
22676		switch key {
22677		case "location":
22678			o.Location, err = unmarshalDatasetLocationClassification(val)
22679			delete(rawMsg, key)
22680		case "orcCompressionCodec":
22681			err = unpopulate(val, &o.OrcCompressionCodec)
22682			delete(rawMsg, key)
22683		}
22684		if err != nil {
22685			return err
22686		}
22687	}
22688	return nil
22689}
22690
22691// OrcFormat - The data stored in Optimized Row Columnar (ORC) format.
22692type OrcFormat struct {
22693	DatasetStorageFormat
22694}
22695
22696// MarshalJSON implements the json.Marshaller interface for type OrcFormat.
22697func (o OrcFormat) MarshalJSON() ([]byte, error) {
22698	objectMap := o.DatasetStorageFormat.marshalInternal("OrcFormat")
22699	return json.Marshal(objectMap)
22700}
22701
22702// OrcSink - A copy activity ORC sink.
22703type OrcSink struct {
22704	CopySink
22705	// ORC format settings.
22706	FormatSettings *OrcWriteSettings `json:"formatSettings,omitempty"`
22707
22708	// ORC store settings.
22709	StoreSettings StoreWriteSettingsClassification `json:"storeSettings,omitempty"`
22710}
22711
22712// MarshalJSON implements the json.Marshaller interface for type OrcSink.
22713func (o OrcSink) MarshalJSON() ([]byte, error) {
22714	objectMap := o.CopySink.marshalInternal("OrcSink")
22715	populate(objectMap, "formatSettings", o.FormatSettings)
22716	populate(objectMap, "storeSettings", o.StoreSettings)
22717	return json.Marshal(objectMap)
22718}
22719
22720// UnmarshalJSON implements the json.Unmarshaller interface for type OrcSink.
22721func (o *OrcSink) UnmarshalJSON(data []byte) error {
22722	var rawMsg map[string]json.RawMessage
22723	if err := json.Unmarshal(data, &rawMsg); err != nil {
22724		return err
22725	}
22726	for key, val := range rawMsg {
22727		var err error
22728		switch key {
22729		case "formatSettings":
22730			err = unpopulate(val, &o.FormatSettings)
22731			delete(rawMsg, key)
22732		case "storeSettings":
22733			o.StoreSettings, err = unmarshalStoreWriteSettingsClassification(val)
22734			delete(rawMsg, key)
22735		}
22736		if err != nil {
22737			return err
22738		}
22739	}
22740	return o.CopySink.unmarshalInternal(rawMsg)
22741}
22742
22743// OrcSource - A copy activity ORC source.
22744type OrcSource struct {
22745	CopySource
22746	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
22747	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
22748
22749	// ORC store settings.
22750	StoreSettings StoreReadSettingsClassification `json:"storeSettings,omitempty"`
22751}
22752
22753// MarshalJSON implements the json.Marshaller interface for type OrcSource.
22754func (o OrcSource) MarshalJSON() ([]byte, error) {
22755	objectMap := o.CopySource.marshalInternal("OrcSource")
22756	populate(objectMap, "additionalColumns", o.AdditionalColumns)
22757	populate(objectMap, "storeSettings", o.StoreSettings)
22758	return json.Marshal(objectMap)
22759}
22760
22761// UnmarshalJSON implements the json.Unmarshaller interface for type OrcSource.
22762func (o *OrcSource) UnmarshalJSON(data []byte) error {
22763	var rawMsg map[string]json.RawMessage
22764	if err := json.Unmarshal(data, &rawMsg); err != nil {
22765		return err
22766	}
22767	for key, val := range rawMsg {
22768		var err error
22769		switch key {
22770		case "additionalColumns":
22771			err = unpopulate(val, &o.AdditionalColumns)
22772			delete(rawMsg, key)
22773		case "storeSettings":
22774			o.StoreSettings, err = unmarshalStoreReadSettingsClassification(val)
22775			delete(rawMsg, key)
22776		}
22777		if err != nil {
22778			return err
22779		}
22780	}
22781	return o.CopySource.unmarshalInternal(rawMsg)
22782}
22783
22784// OrcWriteSettings - Orc write settings.
22785type OrcWriteSettings struct {
22786	FormatWriteSettings
22787	// Specifies the file name pattern _. when copy from non-file based store without partitionOptions. Type: string (or Expression with resultType string).
22788	FileNamePrefix interface{} `json:"fileNamePrefix,omitempty"`
22789
22790	// Limit the written file's row count to be smaller than or equal to the specified count. Type: integer (or Expression with resultType integer).
22791	MaxRowsPerFile interface{} `json:"maxRowsPerFile,omitempty"`
22792}
22793
22794// MarshalJSON implements the json.Marshaller interface for type OrcWriteSettings.
22795func (o OrcWriteSettings) MarshalJSON() ([]byte, error) {
22796	objectMap := o.FormatWriteSettings.marshalInternal("OrcWriteSettings")
22797	populate(objectMap, "fileNamePrefix", o.FileNamePrefix)
22798	populate(objectMap, "maxRowsPerFile", o.MaxRowsPerFile)
22799	return json.Marshal(objectMap)
22800}
22801
22802// UnmarshalJSON implements the json.Unmarshaller interface for type OrcWriteSettings.
22803func (o *OrcWriteSettings) UnmarshalJSON(data []byte) error {
22804	var rawMsg map[string]json.RawMessage
22805	if err := json.Unmarshal(data, &rawMsg); err != nil {
22806		return err
22807	}
22808	for key, val := range rawMsg {
22809		var err error
22810		switch key {
22811		case "fileNamePrefix":
22812			err = unpopulate(val, &o.FileNamePrefix)
22813			delete(rawMsg, key)
22814		case "maxRowsPerFile":
22815			err = unpopulate(val, &o.MaxRowsPerFile)
22816			delete(rawMsg, key)
22817		}
22818		if err != nil {
22819			return err
22820		}
22821	}
22822	return o.FormatWriteSettings.unmarshalInternal(rawMsg)
22823}
22824
22825// ParameterSpecification - Definition of a single parameter for an entity.
22826type ParameterSpecification struct {
22827	// REQUIRED; Parameter type.
22828	Type *ParameterType `json:"type,omitempty"`
22829
22830	// Default value of parameter.
22831	DefaultValue interface{} `json:"defaultValue,omitempty"`
22832}
22833
22834// ParquetDataset - Parquet dataset.
22835type ParquetDataset struct {
22836	Dataset
22837	// Parquet dataset properties.
22838	TypeProperties *ParquetDatasetTypeProperties `json:"typeProperties,omitempty"`
22839}
22840
22841// MarshalJSON implements the json.Marshaller interface for type ParquetDataset.
22842func (p ParquetDataset) MarshalJSON() ([]byte, error) {
22843	objectMap := p.Dataset.marshalInternal("Parquet")
22844	populate(objectMap, "typeProperties", p.TypeProperties)
22845	return json.Marshal(objectMap)
22846}
22847
22848// UnmarshalJSON implements the json.Unmarshaller interface for type ParquetDataset.
22849func (p *ParquetDataset) UnmarshalJSON(data []byte) error {
22850	var rawMsg map[string]json.RawMessage
22851	if err := json.Unmarshal(data, &rawMsg); err != nil {
22852		return err
22853	}
22854	for key, val := range rawMsg {
22855		var err error
22856		switch key {
22857		case "typeProperties":
22858			err = unpopulate(val, &p.TypeProperties)
22859			delete(rawMsg, key)
22860		}
22861		if err != nil {
22862			return err
22863		}
22864	}
22865	return p.Dataset.unmarshalInternal(rawMsg)
22866}
22867
22868// ParquetDatasetTypeProperties - Parquet dataset properties.
22869type ParquetDatasetTypeProperties struct {
22870	// REQUIRED; The location of the parquet storage.
22871	Location DatasetLocationClassification `json:"location,omitempty"`
22872
22873	// A string from ParquetCompressionCodecEnum or an expression
22874	CompressionCodec interface{} `json:"compressionCodec,omitempty"`
22875}
22876
22877// MarshalJSON implements the json.Marshaller interface for type ParquetDatasetTypeProperties.
22878func (p ParquetDatasetTypeProperties) MarshalJSON() ([]byte, error) {
22879	objectMap := make(map[string]interface{})
22880	populate(objectMap, "compressionCodec", p.CompressionCodec)
22881	populate(objectMap, "location", p.Location)
22882	return json.Marshal(objectMap)
22883}
22884
22885// UnmarshalJSON implements the json.Unmarshaller interface for type ParquetDatasetTypeProperties.
22886func (p *ParquetDatasetTypeProperties) UnmarshalJSON(data []byte) error {
22887	var rawMsg map[string]json.RawMessage
22888	if err := json.Unmarshal(data, &rawMsg); err != nil {
22889		return err
22890	}
22891	for key, val := range rawMsg {
22892		var err error
22893		switch key {
22894		case "compressionCodec":
22895			err = unpopulate(val, &p.CompressionCodec)
22896			delete(rawMsg, key)
22897		case "location":
22898			p.Location, err = unmarshalDatasetLocationClassification(val)
22899			delete(rawMsg, key)
22900		}
22901		if err != nil {
22902			return err
22903		}
22904	}
22905	return nil
22906}
22907
22908// ParquetFormat - The data stored in Parquet format.
22909type ParquetFormat struct {
22910	DatasetStorageFormat
22911}
22912
22913// MarshalJSON implements the json.Marshaller interface for type ParquetFormat.
22914func (p ParquetFormat) MarshalJSON() ([]byte, error) {
22915	objectMap := p.DatasetStorageFormat.marshalInternal("ParquetFormat")
22916	return json.Marshal(objectMap)
22917}
22918
22919// ParquetSink - A copy activity Parquet sink.
22920type ParquetSink struct {
22921	CopySink
22922	// Parquet format settings.
22923	FormatSettings *ParquetWriteSettings `json:"formatSettings,omitempty"`
22924
22925	// Parquet store settings.
22926	StoreSettings StoreWriteSettingsClassification `json:"storeSettings,omitempty"`
22927}
22928
22929// MarshalJSON implements the json.Marshaller interface for type ParquetSink.
22930func (p ParquetSink) MarshalJSON() ([]byte, error) {
22931	objectMap := p.CopySink.marshalInternal("ParquetSink")
22932	populate(objectMap, "formatSettings", p.FormatSettings)
22933	populate(objectMap, "storeSettings", p.StoreSettings)
22934	return json.Marshal(objectMap)
22935}
22936
22937// UnmarshalJSON implements the json.Unmarshaller interface for type ParquetSink.
22938func (p *ParquetSink) UnmarshalJSON(data []byte) error {
22939	var rawMsg map[string]json.RawMessage
22940	if err := json.Unmarshal(data, &rawMsg); err != nil {
22941		return err
22942	}
22943	for key, val := range rawMsg {
22944		var err error
22945		switch key {
22946		case "formatSettings":
22947			err = unpopulate(val, &p.FormatSettings)
22948			delete(rawMsg, key)
22949		case "storeSettings":
22950			p.StoreSettings, err = unmarshalStoreWriteSettingsClassification(val)
22951			delete(rawMsg, key)
22952		}
22953		if err != nil {
22954			return err
22955		}
22956	}
22957	return p.CopySink.unmarshalInternal(rawMsg)
22958}
22959
22960// ParquetSource - A copy activity Parquet source.
22961type ParquetSource struct {
22962	CopySource
22963	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
22964	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
22965
22966	// Parquet store settings.
22967	StoreSettings StoreReadSettingsClassification `json:"storeSettings,omitempty"`
22968}
22969
22970// MarshalJSON implements the json.Marshaller interface for type ParquetSource.
22971func (p ParquetSource) MarshalJSON() ([]byte, error) {
22972	objectMap := p.CopySource.marshalInternal("ParquetSource")
22973	populate(objectMap, "additionalColumns", p.AdditionalColumns)
22974	populate(objectMap, "storeSettings", p.StoreSettings)
22975	return json.Marshal(objectMap)
22976}
22977
22978// UnmarshalJSON implements the json.Unmarshaller interface for type ParquetSource.
22979func (p *ParquetSource) UnmarshalJSON(data []byte) error {
22980	var rawMsg map[string]json.RawMessage
22981	if err := json.Unmarshal(data, &rawMsg); err != nil {
22982		return err
22983	}
22984	for key, val := range rawMsg {
22985		var err error
22986		switch key {
22987		case "additionalColumns":
22988			err = unpopulate(val, &p.AdditionalColumns)
22989			delete(rawMsg, key)
22990		case "storeSettings":
22991			p.StoreSettings, err = unmarshalStoreReadSettingsClassification(val)
22992			delete(rawMsg, key)
22993		}
22994		if err != nil {
22995			return err
22996		}
22997	}
22998	return p.CopySource.unmarshalInternal(rawMsg)
22999}
23000
23001// ParquetWriteSettings - Parquet write settings.
23002type ParquetWriteSettings struct {
23003	FormatWriteSettings
23004	// Specifies the file name pattern _. when copy from non-file based store without partitionOptions. Type: string (or Expression with resultType string).
23005	FileNamePrefix interface{} `json:"fileNamePrefix,omitempty"`
23006
23007	// Limit the written file's row count to be smaller than or equal to the specified count. Type: integer (or Expression with resultType integer).
23008	MaxRowsPerFile interface{} `json:"maxRowsPerFile,omitempty"`
23009}
23010
23011// MarshalJSON implements the json.Marshaller interface for type ParquetWriteSettings.
23012func (p ParquetWriteSettings) MarshalJSON() ([]byte, error) {
23013	objectMap := p.FormatWriteSettings.marshalInternal("ParquetWriteSettings")
23014	populate(objectMap, "fileNamePrefix", p.FileNamePrefix)
23015	populate(objectMap, "maxRowsPerFile", p.MaxRowsPerFile)
23016	return json.Marshal(objectMap)
23017}
23018
23019// UnmarshalJSON implements the json.Unmarshaller interface for type ParquetWriteSettings.
23020func (p *ParquetWriteSettings) UnmarshalJSON(data []byte) error {
23021	var rawMsg map[string]json.RawMessage
23022	if err := json.Unmarshal(data, &rawMsg); err != nil {
23023		return err
23024	}
23025	for key, val := range rawMsg {
23026		var err error
23027		switch key {
23028		case "fileNamePrefix":
23029			err = unpopulate(val, &p.FileNamePrefix)
23030			delete(rawMsg, key)
23031		case "maxRowsPerFile":
23032			err = unpopulate(val, &p.MaxRowsPerFile)
23033			delete(rawMsg, key)
23034		}
23035		if err != nil {
23036			return err
23037		}
23038	}
23039	return p.FormatWriteSettings.unmarshalInternal(rawMsg)
23040}
23041
23042// PaypalLinkedService - Paypal Service linked service.
23043type PaypalLinkedService struct {
23044	LinkedService
23045	// REQUIRED; Paypal Service linked service properties.
23046	TypeProperties *PaypalLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
23047}
23048
23049// MarshalJSON implements the json.Marshaller interface for type PaypalLinkedService.
23050func (p PaypalLinkedService) MarshalJSON() ([]byte, error) {
23051	objectMap := p.LinkedService.marshalInternal("Paypal")
23052	populate(objectMap, "typeProperties", p.TypeProperties)
23053	return json.Marshal(objectMap)
23054}
23055
23056// UnmarshalJSON implements the json.Unmarshaller interface for type PaypalLinkedService.
23057func (p *PaypalLinkedService) UnmarshalJSON(data []byte) error {
23058	var rawMsg map[string]json.RawMessage
23059	if err := json.Unmarshal(data, &rawMsg); err != nil {
23060		return err
23061	}
23062	for key, val := range rawMsg {
23063		var err error
23064		switch key {
23065		case "typeProperties":
23066			err = unpopulate(val, &p.TypeProperties)
23067			delete(rawMsg, key)
23068		}
23069		if err != nil {
23070			return err
23071		}
23072	}
23073	return p.LinkedService.unmarshalInternal(rawMsg)
23074}
23075
23076// PaypalLinkedServiceTypeProperties - Paypal Service linked service properties.
23077type PaypalLinkedServiceTypeProperties struct {
23078	// REQUIRED; The client ID associated with your PayPal application.
23079	ClientID interface{} `json:"clientId,omitempty"`
23080
23081	// REQUIRED; The URL of the PayPal instance. (i.e. api.sandbox.paypal.com)
23082	Host interface{} `json:"host,omitempty"`
23083
23084	// The client secret associated with your PayPal application.
23085	ClientSecret SecretBaseClassification `json:"clientSecret,omitempty"`
23086
23087	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
23088	// with resultType string).
23089	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
23090
23091	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
23092	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
23093
23094	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
23095	// is true.
23096	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
23097
23098	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
23099	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
23100}
23101
23102// MarshalJSON implements the json.Marshaller interface for type PaypalLinkedServiceTypeProperties.
23103func (p PaypalLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
23104	objectMap := make(map[string]interface{})
23105	populate(objectMap, "clientId", p.ClientID)
23106	populate(objectMap, "clientSecret", p.ClientSecret)
23107	populate(objectMap, "encryptedCredential", p.EncryptedCredential)
23108	populate(objectMap, "host", p.Host)
23109	populate(objectMap, "useEncryptedEndpoints", p.UseEncryptedEndpoints)
23110	populate(objectMap, "useHostVerification", p.UseHostVerification)
23111	populate(objectMap, "usePeerVerification", p.UsePeerVerification)
23112	return json.Marshal(objectMap)
23113}
23114
23115// UnmarshalJSON implements the json.Unmarshaller interface for type PaypalLinkedServiceTypeProperties.
23116func (p *PaypalLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
23117	var rawMsg map[string]json.RawMessage
23118	if err := json.Unmarshal(data, &rawMsg); err != nil {
23119		return err
23120	}
23121	for key, val := range rawMsg {
23122		var err error
23123		switch key {
23124		case "clientId":
23125			err = unpopulate(val, &p.ClientID)
23126			delete(rawMsg, key)
23127		case "clientSecret":
23128			p.ClientSecret, err = unmarshalSecretBaseClassification(val)
23129			delete(rawMsg, key)
23130		case "encryptedCredential":
23131			err = unpopulate(val, &p.EncryptedCredential)
23132			delete(rawMsg, key)
23133		case "host":
23134			err = unpopulate(val, &p.Host)
23135			delete(rawMsg, key)
23136		case "useEncryptedEndpoints":
23137			err = unpopulate(val, &p.UseEncryptedEndpoints)
23138			delete(rawMsg, key)
23139		case "useHostVerification":
23140			err = unpopulate(val, &p.UseHostVerification)
23141			delete(rawMsg, key)
23142		case "usePeerVerification":
23143			err = unpopulate(val, &p.UsePeerVerification)
23144			delete(rawMsg, key)
23145		}
23146		if err != nil {
23147			return err
23148		}
23149	}
23150	return nil
23151}
23152
23153// PaypalObjectDataset - Paypal Service dataset.
23154type PaypalObjectDataset struct {
23155	Dataset
23156	// Properties specific to this dataset type.
23157	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
23158}
23159
23160// MarshalJSON implements the json.Marshaller interface for type PaypalObjectDataset.
23161func (p PaypalObjectDataset) MarshalJSON() ([]byte, error) {
23162	objectMap := p.Dataset.marshalInternal("PaypalObject")
23163	populate(objectMap, "typeProperties", p.TypeProperties)
23164	return json.Marshal(objectMap)
23165}
23166
23167// UnmarshalJSON implements the json.Unmarshaller interface for type PaypalObjectDataset.
23168func (p *PaypalObjectDataset) UnmarshalJSON(data []byte) error {
23169	var rawMsg map[string]json.RawMessage
23170	if err := json.Unmarshal(data, &rawMsg); err != nil {
23171		return err
23172	}
23173	for key, val := range rawMsg {
23174		var err error
23175		switch key {
23176		case "typeProperties":
23177			err = unpopulate(val, &p.TypeProperties)
23178			delete(rawMsg, key)
23179		}
23180		if err != nil {
23181			return err
23182		}
23183	}
23184	return p.Dataset.unmarshalInternal(rawMsg)
23185}
23186
23187// PaypalSource - A copy activity Paypal Service source.
23188type PaypalSource struct {
23189	TabularSource
23190	// A query to retrieve data from source. Type: string (or Expression with resultType string).
23191	Query interface{} `json:"query,omitempty"`
23192}
23193
23194// MarshalJSON implements the json.Marshaller interface for type PaypalSource.
23195func (p PaypalSource) MarshalJSON() ([]byte, error) {
23196	objectMap := p.TabularSource.marshalInternal("PaypalSource")
23197	populate(objectMap, "query", p.Query)
23198	return json.Marshal(objectMap)
23199}
23200
23201// UnmarshalJSON implements the json.Unmarshaller interface for type PaypalSource.
23202func (p *PaypalSource) UnmarshalJSON(data []byte) error {
23203	var rawMsg map[string]json.RawMessage
23204	if err := json.Unmarshal(data, &rawMsg); err != nil {
23205		return err
23206	}
23207	for key, val := range rawMsg {
23208		var err error
23209		switch key {
23210		case "query":
23211			err = unpopulate(val, &p.Query)
23212			delete(rawMsg, key)
23213		}
23214		if err != nil {
23215			return err
23216		}
23217	}
23218	return p.TabularSource.unmarshalInternal(rawMsg)
23219}
23220
23221// PhoenixDatasetTypeProperties - Phoenix Dataset Properties
23222type PhoenixDatasetTypeProperties struct {
23223	// The schema name of the Phoenix. Type: string (or Expression with resultType string).
23224	Schema interface{} `json:"schema,omitempty"`
23225
23226	// The table name of the Phoenix. Type: string (or Expression with resultType string).
23227	Table interface{} `json:"table,omitempty"`
23228
23229	// This property will be retired. Please consider using schema + table properties instead.
23230	TableName interface{} `json:"tableName,omitempty"`
23231}
23232
23233// PhoenixLinkedService - Phoenix server linked service.
23234type PhoenixLinkedService struct {
23235	LinkedService
23236	// REQUIRED; Phoenix server linked service properties.
23237	TypeProperties *PhoenixLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
23238}
23239
23240// MarshalJSON implements the json.Marshaller interface for type PhoenixLinkedService.
23241func (p PhoenixLinkedService) MarshalJSON() ([]byte, error) {
23242	objectMap := p.LinkedService.marshalInternal("Phoenix")
23243	populate(objectMap, "typeProperties", p.TypeProperties)
23244	return json.Marshal(objectMap)
23245}
23246
23247// UnmarshalJSON implements the json.Unmarshaller interface for type PhoenixLinkedService.
23248func (p *PhoenixLinkedService) UnmarshalJSON(data []byte) error {
23249	var rawMsg map[string]json.RawMessage
23250	if err := json.Unmarshal(data, &rawMsg); err != nil {
23251		return err
23252	}
23253	for key, val := range rawMsg {
23254		var err error
23255		switch key {
23256		case "typeProperties":
23257			err = unpopulate(val, &p.TypeProperties)
23258			delete(rawMsg, key)
23259		}
23260		if err != nil {
23261			return err
23262		}
23263	}
23264	return p.LinkedService.unmarshalInternal(rawMsg)
23265}
23266
23267// PhoenixLinkedServiceTypeProperties - Phoenix server linked service properties.
23268type PhoenixLinkedServiceTypeProperties struct {
23269	// REQUIRED; The authentication mechanism used to connect to the Phoenix server.
23270	AuthenticationType *PhoenixAuthenticationType `json:"authenticationType,omitempty"`
23271
23272	// REQUIRED; The IP address or host name of the Phoenix server. (i.e. 192.168.222.160)
23273	Host interface{} `json:"host,omitempty"`
23274
23275	// Specifies whether to require a CA-issued SSL certificate name to match the host name of the server when connecting over SSL. The default value is false.
23276	AllowHostNameCNMismatch interface{} `json:"allowHostNameCNMismatch,omitempty"`
23277
23278	// Specifies whether to allow self-signed certificates from the server. The default value is false.
23279	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
23280
23281	// Specifies whether the connections to the server are encrypted using SSL. The default value is false.
23282	EnableSSL interface{} `json:"enableSsl,omitempty"`
23283
23284	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
23285	// with resultType string).
23286	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
23287
23288	// The partial URL corresponding to the Phoenix server. (i.e. /gateway/sandbox/phoenix/version). The default value is hbasephoenix if using WindowsAzureHDInsightService.
23289	HTTPPath interface{} `json:"httpPath,omitempty"`
23290
23291	// The password corresponding to the user name.
23292	Password SecretBaseClassification `json:"password,omitempty"`
23293
23294	// The TCP port that the Phoenix server uses to listen for client connections. The default value is 8765.
23295	Port interface{} `json:"port,omitempty"`
23296
23297	// The full path of the .pem file containing trusted CA certificates for verifying the server when connecting over SSL. This property can only be set when
23298	// using SSL on self-hosted IR. The default value
23299	// is the cacerts.pem file installed with the IR.
23300	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
23301
23302	// Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.
23303	UseSystemTrustStore interface{} `json:"useSystemTrustStore,omitempty"`
23304
23305	// The user name used to connect to the Phoenix server.
23306	Username interface{} `json:"username,omitempty"`
23307}
23308
23309// MarshalJSON implements the json.Marshaller interface for type PhoenixLinkedServiceTypeProperties.
23310func (p PhoenixLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
23311	objectMap := make(map[string]interface{})
23312	populate(objectMap, "allowHostNameCNMismatch", p.AllowHostNameCNMismatch)
23313	populate(objectMap, "allowSelfSignedServerCert", p.AllowSelfSignedServerCert)
23314	populate(objectMap, "authenticationType", p.AuthenticationType)
23315	populate(objectMap, "enableSsl", p.EnableSSL)
23316	populate(objectMap, "encryptedCredential", p.EncryptedCredential)
23317	populate(objectMap, "httpPath", p.HTTPPath)
23318	populate(objectMap, "host", p.Host)
23319	populate(objectMap, "password", p.Password)
23320	populate(objectMap, "port", p.Port)
23321	populate(objectMap, "trustedCertPath", p.TrustedCertPath)
23322	populate(objectMap, "useSystemTrustStore", p.UseSystemTrustStore)
23323	populate(objectMap, "username", p.Username)
23324	return json.Marshal(objectMap)
23325}
23326
23327// UnmarshalJSON implements the json.Unmarshaller interface for type PhoenixLinkedServiceTypeProperties.
23328func (p *PhoenixLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
23329	var rawMsg map[string]json.RawMessage
23330	if err := json.Unmarshal(data, &rawMsg); err != nil {
23331		return err
23332	}
23333	for key, val := range rawMsg {
23334		var err error
23335		switch key {
23336		case "allowHostNameCNMismatch":
23337			err = unpopulate(val, &p.AllowHostNameCNMismatch)
23338			delete(rawMsg, key)
23339		case "allowSelfSignedServerCert":
23340			err = unpopulate(val, &p.AllowSelfSignedServerCert)
23341			delete(rawMsg, key)
23342		case "authenticationType":
23343			err = unpopulate(val, &p.AuthenticationType)
23344			delete(rawMsg, key)
23345		case "enableSsl":
23346			err = unpopulate(val, &p.EnableSSL)
23347			delete(rawMsg, key)
23348		case "encryptedCredential":
23349			err = unpopulate(val, &p.EncryptedCredential)
23350			delete(rawMsg, key)
23351		case "httpPath":
23352			err = unpopulate(val, &p.HTTPPath)
23353			delete(rawMsg, key)
23354		case "host":
23355			err = unpopulate(val, &p.Host)
23356			delete(rawMsg, key)
23357		case "password":
23358			p.Password, err = unmarshalSecretBaseClassification(val)
23359			delete(rawMsg, key)
23360		case "port":
23361			err = unpopulate(val, &p.Port)
23362			delete(rawMsg, key)
23363		case "trustedCertPath":
23364			err = unpopulate(val, &p.TrustedCertPath)
23365			delete(rawMsg, key)
23366		case "useSystemTrustStore":
23367			err = unpopulate(val, &p.UseSystemTrustStore)
23368			delete(rawMsg, key)
23369		case "username":
23370			err = unpopulate(val, &p.Username)
23371			delete(rawMsg, key)
23372		}
23373		if err != nil {
23374			return err
23375		}
23376	}
23377	return nil
23378}
23379
23380// PhoenixObjectDataset - Phoenix server dataset.
23381type PhoenixObjectDataset struct {
23382	Dataset
23383	// Properties specific to this dataset type.
23384	TypeProperties *PhoenixDatasetTypeProperties `json:"typeProperties,omitempty"`
23385}
23386
23387// MarshalJSON implements the json.Marshaller interface for type PhoenixObjectDataset.
23388func (p PhoenixObjectDataset) MarshalJSON() ([]byte, error) {
23389	objectMap := p.Dataset.marshalInternal("PhoenixObject")
23390	populate(objectMap, "typeProperties", p.TypeProperties)
23391	return json.Marshal(objectMap)
23392}
23393
23394// UnmarshalJSON implements the json.Unmarshaller interface for type PhoenixObjectDataset.
23395func (p *PhoenixObjectDataset) UnmarshalJSON(data []byte) error {
23396	var rawMsg map[string]json.RawMessage
23397	if err := json.Unmarshal(data, &rawMsg); err != nil {
23398		return err
23399	}
23400	for key, val := range rawMsg {
23401		var err error
23402		switch key {
23403		case "typeProperties":
23404			err = unpopulate(val, &p.TypeProperties)
23405			delete(rawMsg, key)
23406		}
23407		if err != nil {
23408			return err
23409		}
23410	}
23411	return p.Dataset.unmarshalInternal(rawMsg)
23412}
23413
23414// PhoenixSource - A copy activity Phoenix server source.
23415type PhoenixSource struct {
23416	TabularSource
23417	// A query to retrieve data from source. Type: string (or Expression with resultType string).
23418	Query interface{} `json:"query,omitempty"`
23419}
23420
23421// MarshalJSON implements the json.Marshaller interface for type PhoenixSource.
23422func (p PhoenixSource) MarshalJSON() ([]byte, error) {
23423	objectMap := p.TabularSource.marshalInternal("PhoenixSource")
23424	populate(objectMap, "query", p.Query)
23425	return json.Marshal(objectMap)
23426}
23427
23428// UnmarshalJSON implements the json.Unmarshaller interface for type PhoenixSource.
23429func (p *PhoenixSource) UnmarshalJSON(data []byte) error {
23430	var rawMsg map[string]json.RawMessage
23431	if err := json.Unmarshal(data, &rawMsg); err != nil {
23432		return err
23433	}
23434	for key, val := range rawMsg {
23435		var err error
23436		switch key {
23437		case "query":
23438			err = unpopulate(val, &p.Query)
23439			delete(rawMsg, key)
23440		}
23441		if err != nil {
23442			return err
23443		}
23444	}
23445	return p.TabularSource.unmarshalInternal(rawMsg)
23446}
23447
23448// Pipeline - A workspace pipeline.
23449type Pipeline struct {
23450	// List of activities in pipeline.
23451	Activities []ActivityClassification `json:"activities,omitempty"`
23452
23453	// List of tags that can be used for describing the Pipeline.
23454	Annotations []interface{} `json:"annotations,omitempty"`
23455
23456	// The max number of concurrent runs for the pipeline.
23457	Concurrency *int32 `json:"concurrency,omitempty"`
23458
23459	// The description of the pipeline.
23460	Description *string `json:"description,omitempty"`
23461
23462	// The folder that this Pipeline is in. If not specified, Pipeline will appear at the root level.
23463	Folder *PipelineFolder `json:"folder,omitempty"`
23464
23465	// List of parameters for pipeline.
23466	Parameters map[string]*ParameterSpecification `json:"parameters,omitempty"`
23467
23468	// Dimensions emitted by Pipeline.
23469	RunDimensions map[string]interface{} `json:"runDimensions,omitempty"`
23470
23471	// List of variables for pipeline.
23472	Variables map[string]*VariableSpecification `json:"variables,omitempty"`
23473}
23474
23475// MarshalJSON implements the json.Marshaller interface for type Pipeline.
23476func (p Pipeline) MarshalJSON() ([]byte, error) {
23477	objectMap := make(map[string]interface{})
23478	populate(objectMap, "activities", p.Activities)
23479	populate(objectMap, "annotations", p.Annotations)
23480	populate(objectMap, "concurrency", p.Concurrency)
23481	populate(objectMap, "description", p.Description)
23482	populate(objectMap, "folder", p.Folder)
23483	populate(objectMap, "parameters", p.Parameters)
23484	populate(objectMap, "runDimensions", p.RunDimensions)
23485	populate(objectMap, "variables", p.Variables)
23486	return json.Marshal(objectMap)
23487}
23488
23489// UnmarshalJSON implements the json.Unmarshaller interface for type Pipeline.
23490func (p *Pipeline) UnmarshalJSON(data []byte) error {
23491	var rawMsg map[string]json.RawMessage
23492	if err := json.Unmarshal(data, &rawMsg); err != nil {
23493		return err
23494	}
23495	for key, val := range rawMsg {
23496		var err error
23497		switch key {
23498		case "activities":
23499			p.Activities, err = unmarshalActivityClassificationArray(val)
23500			delete(rawMsg, key)
23501		case "annotations":
23502			err = unpopulate(val, &p.Annotations)
23503			delete(rawMsg, key)
23504		case "concurrency":
23505			err = unpopulate(val, &p.Concurrency)
23506			delete(rawMsg, key)
23507		case "description":
23508			err = unpopulate(val, &p.Description)
23509			delete(rawMsg, key)
23510		case "folder":
23511			err = unpopulate(val, &p.Folder)
23512			delete(rawMsg, key)
23513		case "parameters":
23514			err = unpopulate(val, &p.Parameters)
23515			delete(rawMsg, key)
23516		case "runDimensions":
23517			err = unpopulate(val, &p.RunDimensions)
23518			delete(rawMsg, key)
23519		case "variables":
23520			err = unpopulate(val, &p.Variables)
23521			delete(rawMsg, key)
23522		}
23523		if err != nil {
23524			return err
23525		}
23526	}
23527	return nil
23528}
23529
23530// PipelineBeginCreateOrUpdatePipelineOptions contains the optional parameters for the Pipeline.BeginCreateOrUpdatePipeline method.
23531type PipelineBeginCreateOrUpdatePipelineOptions struct {
23532	// ETag of the pipeline entity. Should only be specified for update, for which it should match existing entity or can be * for unconditional update.
23533	IfMatch *string
23534}
23535
23536// PipelineBeginDeletePipelineOptions contains the optional parameters for the Pipeline.BeginDeletePipeline method.
23537type PipelineBeginDeletePipelineOptions struct {
23538	// placeholder for future optional parameters
23539}
23540
23541// PipelineBeginRenamePipelineOptions contains the optional parameters for the Pipeline.BeginRenamePipeline method.
23542type PipelineBeginRenamePipelineOptions struct {
23543	// placeholder for future optional parameters
23544}
23545
23546// PipelineCreatePipelineRunOptions contains the optional parameters for the Pipeline.CreatePipelineRun method.
23547type PipelineCreatePipelineRunOptions struct {
23548	// Recovery mode flag. If recovery mode is set to true, the specified referenced pipeline run and the new run will be grouped under the same groupId.
23549	IsRecovery *bool
23550	// Parameters of the pipeline run. These parameters will be used only if the runId is not specified.
23551	Parameters map[string]interface{}
23552	// The pipeline run identifier. If run ID is specified the parameters of the specified run will be used to create a new run.
23553	ReferencePipelineRunID *string
23554	// In recovery mode, the rerun will start from this activity. If not specified, all activities will run.
23555	StartActivityName *string
23556}
23557
23558// PipelineFolder - The folder that this Pipeline is in. If not specified, Pipeline will appear at the root level.
23559type PipelineFolder struct {
23560	// The name of the folder that this Pipeline is in.
23561	Name *string `json:"name,omitempty"`
23562}
23563
23564// PipelineGetPipelineOptions contains the optional parameters for the Pipeline.GetPipeline method.
23565type PipelineGetPipelineOptions struct {
23566	// ETag of the pipeline entity. Should only be specified for get. If the ETag matches the existing entity tag, or if * was provided, then no content will
23567	// be returned.
23568	IfNoneMatch *string
23569}
23570
23571// PipelineGetPipelinesByWorkspaceOptions contains the optional parameters for the Pipeline.GetPipelinesByWorkspace method.
23572type PipelineGetPipelinesByWorkspaceOptions struct {
23573	// placeholder for future optional parameters
23574}
23575
23576// PipelineListResponse - A list of pipeline resources.
23577type PipelineListResponse struct {
23578	// REQUIRED; List of pipelines.
23579	Value []*PipelineResource `json:"value,omitempty"`
23580
23581	// The link to the next page of results, if any remaining results exist.
23582	NextLink *string `json:"nextLink,omitempty"`
23583}
23584
23585// MarshalJSON implements the json.Marshaller interface for type PipelineListResponse.
23586func (p PipelineListResponse) MarshalJSON() ([]byte, error) {
23587	objectMap := make(map[string]interface{})
23588	populate(objectMap, "nextLink", p.NextLink)
23589	populate(objectMap, "value", p.Value)
23590	return json.Marshal(objectMap)
23591}
23592
23593// PipelineReference - Pipeline reference type.
23594type PipelineReference struct {
23595	// REQUIRED; Reference pipeline name.
23596	ReferenceName *string `json:"referenceName,omitempty"`
23597
23598	// REQUIRED; Pipeline reference type.
23599	Type *PipelineReferenceType `json:"type,omitempty"`
23600
23601	// Reference name.
23602	Name *string `json:"name,omitempty"`
23603}
23604
23605// PipelineResource - Pipeline resource type.
23606type PipelineResource struct {
23607	SubResource
23608	// REQUIRED; Properties of the pipeline.
23609	Properties *Pipeline `json:"properties,omitempty"`
23610
23611	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
23612	AdditionalProperties map[string]interface{}
23613}
23614
23615// MarshalJSON implements the json.Marshaller interface for type PipelineResource.
23616func (p PipelineResource) MarshalJSON() ([]byte, error) {
23617	objectMap := p.SubResource.marshalInternal()
23618	populate(objectMap, "properties", p.Properties)
23619	if p.AdditionalProperties != nil {
23620		for key, val := range p.AdditionalProperties {
23621			objectMap[key] = val
23622		}
23623	}
23624	return json.Marshal(objectMap)
23625}
23626
23627// UnmarshalJSON implements the json.Unmarshaller interface for type PipelineResource.
23628func (p *PipelineResource) UnmarshalJSON(data []byte) error {
23629	var rawMsg map[string]json.RawMessage
23630	if err := json.Unmarshal(data, &rawMsg); err != nil {
23631		return err
23632	}
23633	for key, val := range rawMsg {
23634		var err error
23635		switch key {
23636		case "properties":
23637			err = unpopulate(val, &p.Properties)
23638			delete(rawMsg, key)
23639		}
23640		if err != nil {
23641			return err
23642		}
23643	}
23644	if err := p.SubResource.unmarshalInternal(rawMsg); err != nil {
23645		return err
23646	}
23647	for key, val := range rawMsg {
23648		var err error
23649		if p.AdditionalProperties == nil {
23650			p.AdditionalProperties = map[string]interface{}{}
23651		}
23652		if val != nil {
23653			var aux interface{}
23654			err = json.Unmarshal(val, &aux)
23655			p.AdditionalProperties[key] = aux
23656		}
23657		delete(rawMsg, key)
23658		if err != nil {
23659			return err
23660		}
23661	}
23662	return nil
23663}
23664
23665// PipelineRun - Information about a pipeline run.
23666type PipelineRun struct {
23667	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
23668	AdditionalProperties map[string]interface{}
23669
23670	// READ-ONLY; The duration of a pipeline run.
23671	DurationInMs *int32 `json:"durationInMs,omitempty" azure:"ro"`
23672
23673	// READ-ONLY; Entity that started the pipeline run.
23674	InvokedBy *PipelineRunInvokedBy `json:"invokedBy,omitempty" azure:"ro"`
23675
23676	// READ-ONLY; Indicates if the recovered pipeline run is the latest in its group.
23677	IsLatest *bool `json:"isLatest,omitempty" azure:"ro"`
23678
23679	// READ-ONLY; The last updated timestamp for the pipeline run event in ISO8601 format.
23680	LastUpdated *time.Time `json:"lastUpdated,omitempty" azure:"ro"`
23681
23682	// READ-ONLY; The message from a pipeline run.
23683	Message *string `json:"message,omitempty" azure:"ro"`
23684
23685	// READ-ONLY; The full or partial list of parameter name, value pair used in the pipeline run.
23686	Parameters map[string]*string `json:"parameters,omitempty" azure:"ro"`
23687
23688	// READ-ONLY; The pipeline name.
23689	PipelineName *string `json:"pipelineName,omitempty" azure:"ro"`
23690
23691	// READ-ONLY; The end time of a pipeline run in ISO8601 format.
23692	RunEnd *time.Time `json:"runEnd,omitempty" azure:"ro"`
23693
23694	// READ-ONLY; Identifier that correlates all the recovery runs of a pipeline run.
23695	RunGroupID *string `json:"runGroupId,omitempty" azure:"ro"`
23696
23697	// READ-ONLY; Identifier of a run.
23698	RunID *string `json:"runId,omitempty" azure:"ro"`
23699
23700	// READ-ONLY; The start time of a pipeline run in ISO8601 format.
23701	RunStart *time.Time `json:"runStart,omitempty" azure:"ro"`
23702
23703	// READ-ONLY; The status of a pipeline run.
23704	Status *string `json:"status,omitempty" azure:"ro"`
23705}
23706
23707// MarshalJSON implements the json.Marshaller interface for type PipelineRun.
23708func (p PipelineRun) MarshalJSON() ([]byte, error) {
23709	objectMap := make(map[string]interface{})
23710	populate(objectMap, "durationInMs", p.DurationInMs)
23711	populate(objectMap, "invokedBy", p.InvokedBy)
23712	populate(objectMap, "isLatest", p.IsLatest)
23713	populate(objectMap, "lastUpdated", (*timeRFC3339)(p.LastUpdated))
23714	populate(objectMap, "message", p.Message)
23715	populate(objectMap, "parameters", p.Parameters)
23716	populate(objectMap, "pipelineName", p.PipelineName)
23717	populate(objectMap, "runEnd", (*timeRFC3339)(p.RunEnd))
23718	populate(objectMap, "runGroupId", p.RunGroupID)
23719	populate(objectMap, "runId", p.RunID)
23720	populate(objectMap, "runStart", (*timeRFC3339)(p.RunStart))
23721	populate(objectMap, "status", p.Status)
23722	if p.AdditionalProperties != nil {
23723		for key, val := range p.AdditionalProperties {
23724			objectMap[key] = val
23725		}
23726	}
23727	return json.Marshal(objectMap)
23728}
23729
23730// UnmarshalJSON implements the json.Unmarshaller interface for type PipelineRun.
23731func (p *PipelineRun) UnmarshalJSON(data []byte) error {
23732	var rawMsg map[string]json.RawMessage
23733	if err := json.Unmarshal(data, &rawMsg); err != nil {
23734		return err
23735	}
23736	for key, val := range rawMsg {
23737		var err error
23738		switch key {
23739		case "durationInMs":
23740			err = unpopulate(val, &p.DurationInMs)
23741			delete(rawMsg, key)
23742		case "invokedBy":
23743			err = unpopulate(val, &p.InvokedBy)
23744			delete(rawMsg, key)
23745		case "isLatest":
23746			err = unpopulate(val, &p.IsLatest)
23747			delete(rawMsg, key)
23748		case "lastUpdated":
23749			var aux timeRFC3339
23750			err = unpopulate(val, &aux)
23751			p.LastUpdated = (*time.Time)(&aux)
23752			delete(rawMsg, key)
23753		case "message":
23754			err = unpopulate(val, &p.Message)
23755			delete(rawMsg, key)
23756		case "parameters":
23757			err = unpopulate(val, &p.Parameters)
23758			delete(rawMsg, key)
23759		case "pipelineName":
23760			err = unpopulate(val, &p.PipelineName)
23761			delete(rawMsg, key)
23762		case "runEnd":
23763			var aux timeRFC3339
23764			err = unpopulate(val, &aux)
23765			p.RunEnd = (*time.Time)(&aux)
23766			delete(rawMsg, key)
23767		case "runGroupId":
23768			err = unpopulate(val, &p.RunGroupID)
23769			delete(rawMsg, key)
23770		case "runId":
23771			err = unpopulate(val, &p.RunID)
23772			delete(rawMsg, key)
23773		case "runStart":
23774			var aux timeRFC3339
23775			err = unpopulate(val, &aux)
23776			p.RunStart = (*time.Time)(&aux)
23777			delete(rawMsg, key)
23778		case "status":
23779			err = unpopulate(val, &p.Status)
23780			delete(rawMsg, key)
23781		default:
23782			if p.AdditionalProperties == nil {
23783				p.AdditionalProperties = map[string]interface{}{}
23784			}
23785			if val != nil {
23786				var aux interface{}
23787				err = json.Unmarshal(val, &aux)
23788				p.AdditionalProperties[key] = aux
23789			}
23790			delete(rawMsg, key)
23791		}
23792		if err != nil {
23793			return err
23794		}
23795	}
23796	return nil
23797}
23798
23799// PipelineRunCancelPipelineRunOptions contains the optional parameters for the PipelineRun.CancelPipelineRun method.
23800type PipelineRunCancelPipelineRunOptions struct {
23801	// If true, cancel all the Child pipelines that are triggered by the current pipeline.
23802	IsRecursive *bool
23803}
23804
23805// PipelineRunGetPipelineRunOptions contains the optional parameters for the PipelineRun.GetPipelineRun method.
23806type PipelineRunGetPipelineRunOptions struct {
23807	// placeholder for future optional parameters
23808}
23809
23810// PipelineRunInvokedBy - Provides entity name and id that started the pipeline run.
23811type PipelineRunInvokedBy struct {
23812	// READ-ONLY; The ID of the entity that started the run.
23813	ID *string `json:"id,omitempty" azure:"ro"`
23814
23815	// READ-ONLY; The type of the entity that started the run.
23816	InvokedByType *string `json:"invokedByType,omitempty" azure:"ro"`
23817
23818	// READ-ONLY; Name of the entity that started the pipeline run.
23819	Name *string `json:"name,omitempty" azure:"ro"`
23820}
23821
23822// PipelineRunQueryActivityRunsOptions contains the optional parameters for the PipelineRun.QueryActivityRuns method.
23823type PipelineRunQueryActivityRunsOptions struct {
23824	// placeholder for future optional parameters
23825}
23826
23827// PipelineRunQueryPipelineRunsByWorkspaceOptions contains the optional parameters for the PipelineRun.QueryPipelineRunsByWorkspace method.
23828type PipelineRunQueryPipelineRunsByWorkspaceOptions struct {
23829	// placeholder for future optional parameters
23830}
23831
23832// PipelineRunsQueryResponse - A list pipeline runs.
23833type PipelineRunsQueryResponse struct {
23834	// REQUIRED; List of pipeline runs.
23835	Value []*PipelineRun `json:"value,omitempty"`
23836
23837	// The continuation token for getting the next page of results, if any remaining results exist, null otherwise.
23838	ContinuationToken *string `json:"continuationToken,omitempty"`
23839}
23840
23841// MarshalJSON implements the json.Marshaller interface for type PipelineRunsQueryResponse.
23842func (p PipelineRunsQueryResponse) MarshalJSON() ([]byte, error) {
23843	objectMap := make(map[string]interface{})
23844	populate(objectMap, "continuationToken", p.ContinuationToken)
23845	populate(objectMap, "value", p.Value)
23846	return json.Marshal(objectMap)
23847}
23848
23849// PolybaseSettings - PolyBase settings.
23850type PolybaseSettings struct {
23851	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
23852	AdditionalProperties map[string]interface{}
23853
23854	// Determines the number of rows to attempt to retrieve before the PolyBase recalculates the percentage of rejected rows. Type: integer (or Expression with
23855	// resultType integer), minimum: 0.
23856	RejectSampleValue interface{} `json:"rejectSampleValue,omitempty"`
23857
23858	// Reject type.
23859	RejectType *PolybaseSettingsRejectType `json:"rejectType,omitempty"`
23860
23861	// Specifies the value or the percentage of rows that can be rejected before the query fails. Type: number (or Expression with resultType number), minimum:
23862	// 0.
23863	RejectValue interface{} `json:"rejectValue,omitempty"`
23864
23865	// Specifies how to handle missing values in delimited text files when PolyBase retrieves data from the text file. Type: boolean (or Expression with resultType
23866	// boolean).
23867	UseTypeDefault interface{} `json:"useTypeDefault,omitempty"`
23868}
23869
23870// MarshalJSON implements the json.Marshaller interface for type PolybaseSettings.
23871func (p PolybaseSettings) MarshalJSON() ([]byte, error) {
23872	objectMap := make(map[string]interface{})
23873	populate(objectMap, "rejectSampleValue", p.RejectSampleValue)
23874	populate(objectMap, "rejectType", p.RejectType)
23875	populate(objectMap, "rejectValue", p.RejectValue)
23876	populate(objectMap, "useTypeDefault", p.UseTypeDefault)
23877	if p.AdditionalProperties != nil {
23878		for key, val := range p.AdditionalProperties {
23879			objectMap[key] = val
23880		}
23881	}
23882	return json.Marshal(objectMap)
23883}
23884
23885// UnmarshalJSON implements the json.Unmarshaller interface for type PolybaseSettings.
23886func (p *PolybaseSettings) UnmarshalJSON(data []byte) error {
23887	var rawMsg map[string]json.RawMessage
23888	if err := json.Unmarshal(data, &rawMsg); err != nil {
23889		return err
23890	}
23891	for key, val := range rawMsg {
23892		var err error
23893		switch key {
23894		case "rejectSampleValue":
23895			err = unpopulate(val, &p.RejectSampleValue)
23896			delete(rawMsg, key)
23897		case "rejectType":
23898			err = unpopulate(val, &p.RejectType)
23899			delete(rawMsg, key)
23900		case "rejectValue":
23901			err = unpopulate(val, &p.RejectValue)
23902			delete(rawMsg, key)
23903		case "useTypeDefault":
23904			err = unpopulate(val, &p.UseTypeDefault)
23905			delete(rawMsg, key)
23906		default:
23907			if p.AdditionalProperties == nil {
23908				p.AdditionalProperties = map[string]interface{}{}
23909			}
23910			if val != nil {
23911				var aux interface{}
23912				err = json.Unmarshal(val, &aux)
23913				p.AdditionalProperties[key] = aux
23914			}
23915			delete(rawMsg, key)
23916		}
23917		if err != nil {
23918			return err
23919		}
23920	}
23921	return nil
23922}
23923
23924// PostgreSQLLinkedService - Linked service for PostgreSQL data source.
23925type PostgreSQLLinkedService struct {
23926	LinkedService
23927	// REQUIRED; PostgreSQL linked service properties.
23928	TypeProperties *PostgreSQLLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
23929}
23930
23931// MarshalJSON implements the json.Marshaller interface for type PostgreSQLLinkedService.
23932func (p PostgreSQLLinkedService) MarshalJSON() ([]byte, error) {
23933	objectMap := p.LinkedService.marshalInternal("PostgreSql")
23934	populate(objectMap, "typeProperties", p.TypeProperties)
23935	return json.Marshal(objectMap)
23936}
23937
23938// UnmarshalJSON implements the json.Unmarshaller interface for type PostgreSQLLinkedService.
23939func (p *PostgreSQLLinkedService) UnmarshalJSON(data []byte) error {
23940	var rawMsg map[string]json.RawMessage
23941	if err := json.Unmarshal(data, &rawMsg); err != nil {
23942		return err
23943	}
23944	for key, val := range rawMsg {
23945		var err error
23946		switch key {
23947		case "typeProperties":
23948			err = unpopulate(val, &p.TypeProperties)
23949			delete(rawMsg, key)
23950		}
23951		if err != nil {
23952			return err
23953		}
23954	}
23955	return p.LinkedService.unmarshalInternal(rawMsg)
23956}
23957
23958// PostgreSQLLinkedServiceTypeProperties - PostgreSQL linked service properties.
23959type PostgreSQLLinkedServiceTypeProperties struct {
23960	// REQUIRED; The connection string.
23961	ConnectionString interface{} `json:"connectionString,omitempty"`
23962
23963	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
23964	// with resultType string).
23965	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
23966
23967	// The Azure key vault secret reference of password in connection string.
23968	Password *AzureKeyVaultSecretReference `json:"password,omitempty"`
23969}
23970
23971// PostgreSQLSource - A copy activity source for PostgreSQL databases.
23972type PostgreSQLSource struct {
23973	TabularSource
23974	// Database query. Type: string (or Expression with resultType string).
23975	Query interface{} `json:"query,omitempty"`
23976}
23977
23978// MarshalJSON implements the json.Marshaller interface for type PostgreSQLSource.
23979func (p PostgreSQLSource) MarshalJSON() ([]byte, error) {
23980	objectMap := p.TabularSource.marshalInternal("PostgreSqlSource")
23981	populate(objectMap, "query", p.Query)
23982	return json.Marshal(objectMap)
23983}
23984
23985// UnmarshalJSON implements the json.Unmarshaller interface for type PostgreSQLSource.
23986func (p *PostgreSQLSource) UnmarshalJSON(data []byte) error {
23987	var rawMsg map[string]json.RawMessage
23988	if err := json.Unmarshal(data, &rawMsg); err != nil {
23989		return err
23990	}
23991	for key, val := range rawMsg {
23992		var err error
23993		switch key {
23994		case "query":
23995			err = unpopulate(val, &p.Query)
23996			delete(rawMsg, key)
23997		}
23998		if err != nil {
23999			return err
24000		}
24001	}
24002	return p.TabularSource.unmarshalInternal(rawMsg)
24003}
24004
24005// PostgreSQLTableDataset - The PostgreSQL table dataset.
24006type PostgreSQLTableDataset struct {
24007	Dataset
24008	// PostgreSQL table dataset properties.
24009	TypeProperties *PostgreSQLTableDatasetTypeProperties `json:"typeProperties,omitempty"`
24010}
24011
24012// MarshalJSON implements the json.Marshaller interface for type PostgreSQLTableDataset.
24013func (p PostgreSQLTableDataset) MarshalJSON() ([]byte, error) {
24014	objectMap := p.Dataset.marshalInternal("PostgreSqlTable")
24015	populate(objectMap, "typeProperties", p.TypeProperties)
24016	return json.Marshal(objectMap)
24017}
24018
24019// UnmarshalJSON implements the json.Unmarshaller interface for type PostgreSQLTableDataset.
24020func (p *PostgreSQLTableDataset) UnmarshalJSON(data []byte) error {
24021	var rawMsg map[string]json.RawMessage
24022	if err := json.Unmarshal(data, &rawMsg); err != nil {
24023		return err
24024	}
24025	for key, val := range rawMsg {
24026		var err error
24027		switch key {
24028		case "typeProperties":
24029			err = unpopulate(val, &p.TypeProperties)
24030			delete(rawMsg, key)
24031		}
24032		if err != nil {
24033			return err
24034		}
24035	}
24036	return p.Dataset.unmarshalInternal(rawMsg)
24037}
24038
24039// PostgreSQLTableDatasetTypeProperties - PostgreSQL table dataset properties.
24040type PostgreSQLTableDatasetTypeProperties struct {
24041	// The PostgreSQL schema name. Type: string (or Expression with resultType string).
24042	Schema interface{} `json:"schema,omitempty"`
24043
24044	// The PostgreSQL table name. Type: string (or Expression with resultType string).
24045	Table interface{} `json:"table,omitempty"`
24046
24047	// This property will be retired. Please consider using schema + table properties instead.
24048	TableName interface{} `json:"tableName,omitempty"`
24049}
24050
24051// PrestoDatasetTypeProperties - Presto Dataset Properties
24052type PrestoDatasetTypeProperties struct {
24053	// The schema name of the Presto. Type: string (or Expression with resultType string).
24054	Schema interface{} `json:"schema,omitempty"`
24055
24056	// The table name of the Presto. Type: string (or Expression with resultType string).
24057	Table interface{} `json:"table,omitempty"`
24058
24059	// This property will be retired. Please consider using schema + table properties instead.
24060	TableName interface{} `json:"tableName,omitempty"`
24061}
24062
24063// PrestoLinkedService - Presto server linked service.
24064type PrestoLinkedService struct {
24065	LinkedService
24066	// REQUIRED; Presto server linked service properties.
24067	TypeProperties *PrestoLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
24068}
24069
24070// MarshalJSON implements the json.Marshaller interface for type PrestoLinkedService.
24071func (p PrestoLinkedService) MarshalJSON() ([]byte, error) {
24072	objectMap := p.LinkedService.marshalInternal("Presto")
24073	populate(objectMap, "typeProperties", p.TypeProperties)
24074	return json.Marshal(objectMap)
24075}
24076
24077// UnmarshalJSON implements the json.Unmarshaller interface for type PrestoLinkedService.
24078func (p *PrestoLinkedService) UnmarshalJSON(data []byte) error {
24079	var rawMsg map[string]json.RawMessage
24080	if err := json.Unmarshal(data, &rawMsg); err != nil {
24081		return err
24082	}
24083	for key, val := range rawMsg {
24084		var err error
24085		switch key {
24086		case "typeProperties":
24087			err = unpopulate(val, &p.TypeProperties)
24088			delete(rawMsg, key)
24089		}
24090		if err != nil {
24091			return err
24092		}
24093	}
24094	return p.LinkedService.unmarshalInternal(rawMsg)
24095}
24096
24097// PrestoLinkedServiceTypeProperties - Presto server linked service properties.
24098type PrestoLinkedServiceTypeProperties struct {
24099	// REQUIRED; The authentication mechanism used to connect to the Presto server.
24100	AuthenticationType *PrestoAuthenticationType `json:"authenticationType,omitempty"`
24101
24102	// REQUIRED; The catalog context for all request against the server.
24103	Catalog interface{} `json:"catalog,omitempty"`
24104
24105	// REQUIRED; The IP address or host name of the Presto server. (i.e. 192.168.222.160)
24106	Host interface{} `json:"host,omitempty"`
24107
24108	// REQUIRED; The version of the Presto server. (i.e. 0.148-t)
24109	ServerVersion interface{} `json:"serverVersion,omitempty"`
24110
24111	// Specifies whether to require a CA-issued SSL certificate name to match the host name of the server when connecting over SSL. The default value is false.
24112	AllowHostNameCNMismatch interface{} `json:"allowHostNameCNMismatch,omitempty"`
24113
24114	// Specifies whether to allow self-signed certificates from the server. The default value is false.
24115	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
24116
24117	// Specifies whether the connections to the server are encrypted using SSL. The default value is false.
24118	EnableSSL interface{} `json:"enableSsl,omitempty"`
24119
24120	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
24121	// with resultType string).
24122	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
24123
24124	// The password corresponding to the user name.
24125	Password SecretBaseClassification `json:"password,omitempty"`
24126
24127	// The TCP port that the Presto server uses to listen for client connections. The default value is 8080.
24128	Port interface{} `json:"port,omitempty"`
24129
24130	// The local time zone used by the connection. Valid values for this option are specified in the IANA Time Zone Database. The default value is the system
24131	// time zone.
24132	TimeZoneID interface{} `json:"timeZoneID,omitempty"`
24133
24134	// The full path of the .pem file containing trusted CA certificates for verifying the server when connecting over SSL. This property can only be set when
24135	// using SSL on self-hosted IR. The default value
24136	// is the cacerts.pem file installed with the IR.
24137	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
24138
24139	// Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.
24140	UseSystemTrustStore interface{} `json:"useSystemTrustStore,omitempty"`
24141
24142	// The user name used to connect to the Presto server.
24143	Username interface{} `json:"username,omitempty"`
24144}
24145
24146// MarshalJSON implements the json.Marshaller interface for type PrestoLinkedServiceTypeProperties.
24147func (p PrestoLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
24148	objectMap := make(map[string]interface{})
24149	populate(objectMap, "allowHostNameCNMismatch", p.AllowHostNameCNMismatch)
24150	populate(objectMap, "allowSelfSignedServerCert", p.AllowSelfSignedServerCert)
24151	populate(objectMap, "authenticationType", p.AuthenticationType)
24152	populate(objectMap, "catalog", p.Catalog)
24153	populate(objectMap, "enableSsl", p.EnableSSL)
24154	populate(objectMap, "encryptedCredential", p.EncryptedCredential)
24155	populate(objectMap, "host", p.Host)
24156	populate(objectMap, "password", p.Password)
24157	populate(objectMap, "port", p.Port)
24158	populate(objectMap, "serverVersion", p.ServerVersion)
24159	populate(objectMap, "timeZoneID", p.TimeZoneID)
24160	populate(objectMap, "trustedCertPath", p.TrustedCertPath)
24161	populate(objectMap, "useSystemTrustStore", p.UseSystemTrustStore)
24162	populate(objectMap, "username", p.Username)
24163	return json.Marshal(objectMap)
24164}
24165
24166// UnmarshalJSON implements the json.Unmarshaller interface for type PrestoLinkedServiceTypeProperties.
24167func (p *PrestoLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
24168	var rawMsg map[string]json.RawMessage
24169	if err := json.Unmarshal(data, &rawMsg); err != nil {
24170		return err
24171	}
24172	for key, val := range rawMsg {
24173		var err error
24174		switch key {
24175		case "allowHostNameCNMismatch":
24176			err = unpopulate(val, &p.AllowHostNameCNMismatch)
24177			delete(rawMsg, key)
24178		case "allowSelfSignedServerCert":
24179			err = unpopulate(val, &p.AllowSelfSignedServerCert)
24180			delete(rawMsg, key)
24181		case "authenticationType":
24182			err = unpopulate(val, &p.AuthenticationType)
24183			delete(rawMsg, key)
24184		case "catalog":
24185			err = unpopulate(val, &p.Catalog)
24186			delete(rawMsg, key)
24187		case "enableSsl":
24188			err = unpopulate(val, &p.EnableSSL)
24189			delete(rawMsg, key)
24190		case "encryptedCredential":
24191			err = unpopulate(val, &p.EncryptedCredential)
24192			delete(rawMsg, key)
24193		case "host":
24194			err = unpopulate(val, &p.Host)
24195			delete(rawMsg, key)
24196		case "password":
24197			p.Password, err = unmarshalSecretBaseClassification(val)
24198			delete(rawMsg, key)
24199		case "port":
24200			err = unpopulate(val, &p.Port)
24201			delete(rawMsg, key)
24202		case "serverVersion":
24203			err = unpopulate(val, &p.ServerVersion)
24204			delete(rawMsg, key)
24205		case "timeZoneID":
24206			err = unpopulate(val, &p.TimeZoneID)
24207			delete(rawMsg, key)
24208		case "trustedCertPath":
24209			err = unpopulate(val, &p.TrustedCertPath)
24210			delete(rawMsg, key)
24211		case "useSystemTrustStore":
24212			err = unpopulate(val, &p.UseSystemTrustStore)
24213			delete(rawMsg, key)
24214		case "username":
24215			err = unpopulate(val, &p.Username)
24216			delete(rawMsg, key)
24217		}
24218		if err != nil {
24219			return err
24220		}
24221	}
24222	return nil
24223}
24224
24225// PrestoObjectDataset - Presto server dataset.
24226type PrestoObjectDataset struct {
24227	Dataset
24228	// Properties specific to this dataset type.
24229	TypeProperties *PrestoDatasetTypeProperties `json:"typeProperties,omitempty"`
24230}
24231
24232// MarshalJSON implements the json.Marshaller interface for type PrestoObjectDataset.
24233func (p PrestoObjectDataset) MarshalJSON() ([]byte, error) {
24234	objectMap := p.Dataset.marshalInternal("PrestoObject")
24235	populate(objectMap, "typeProperties", p.TypeProperties)
24236	return json.Marshal(objectMap)
24237}
24238
24239// UnmarshalJSON implements the json.Unmarshaller interface for type PrestoObjectDataset.
24240func (p *PrestoObjectDataset) UnmarshalJSON(data []byte) error {
24241	var rawMsg map[string]json.RawMessage
24242	if err := json.Unmarshal(data, &rawMsg); err != nil {
24243		return err
24244	}
24245	for key, val := range rawMsg {
24246		var err error
24247		switch key {
24248		case "typeProperties":
24249			err = unpopulate(val, &p.TypeProperties)
24250			delete(rawMsg, key)
24251		}
24252		if err != nil {
24253			return err
24254		}
24255	}
24256	return p.Dataset.unmarshalInternal(rawMsg)
24257}
24258
24259// PrestoSource - A copy activity Presto server source.
24260type PrestoSource struct {
24261	TabularSource
24262	// A query to retrieve data from source. Type: string (or Expression with resultType string).
24263	Query interface{} `json:"query,omitempty"`
24264}
24265
24266// MarshalJSON implements the json.Marshaller interface for type PrestoSource.
24267func (p PrestoSource) MarshalJSON() ([]byte, error) {
24268	objectMap := p.TabularSource.marshalInternal("PrestoSource")
24269	populate(objectMap, "query", p.Query)
24270	return json.Marshal(objectMap)
24271}
24272
24273// UnmarshalJSON implements the json.Unmarshaller interface for type PrestoSource.
24274func (p *PrestoSource) UnmarshalJSON(data []byte) error {
24275	var rawMsg map[string]json.RawMessage
24276	if err := json.Unmarshal(data, &rawMsg); err != nil {
24277		return err
24278	}
24279	for key, val := range rawMsg {
24280		var err error
24281		switch key {
24282		case "query":
24283			err = unpopulate(val, &p.Query)
24284			delete(rawMsg, key)
24285		}
24286		if err != nil {
24287			return err
24288		}
24289	}
24290	return p.TabularSource.unmarshalInternal(rawMsg)
24291}
24292
24293// PrivateEndpoint - Private endpoint details
24294type PrivateEndpoint struct {
24295	// READ-ONLY; Resource id of the private endpoint.
24296	ID *string `json:"id,omitempty" azure:"ro"`
24297}
24298
24299// PrivateEndpointConnection - A private endpoint connection
24300type PrivateEndpointConnection struct {
24301	ProxyResource
24302	// Private endpoint connection properties.
24303	Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"`
24304}
24305
24306// MarshalJSON implements the json.Marshaller interface for type PrivateEndpointConnection.
24307func (p PrivateEndpointConnection) MarshalJSON() ([]byte, error) {
24308	objectMap := p.ProxyResource.marshalInternal()
24309	populate(objectMap, "properties", p.Properties)
24310	return json.Marshal(objectMap)
24311}
24312
24313// PrivateEndpointConnectionProperties - Properties of a private endpoint connection.
24314type PrivateEndpointConnectionProperties struct {
24315	// The private endpoint which the connection belongs to.
24316	PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty"`
24317
24318	// Connection state of the private endpoint connection.
24319	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
24320
24321	// READ-ONLY; Provisioning state of the private endpoint connection.
24322	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
24323}
24324
24325// PrivateLinkServiceConnectionState - Connection state details of the private endpoint
24326type PrivateLinkServiceConnectionState struct {
24327	// The private link service connection description.
24328	Description *string `json:"description,omitempty"`
24329
24330	// The private link service connection status.
24331	Status *string `json:"status,omitempty"`
24332
24333	// READ-ONLY; The actions required for private link service connection.
24334	ActionsRequired *string `json:"actionsRequired,omitempty" azure:"ro"`
24335}
24336
24337// ProxyResource - The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location
24338type ProxyResource struct {
24339	Resource
24340}
24341
24342func (p ProxyResource) marshalInternal() map[string]interface{} {
24343	objectMap := p.Resource.marshalInternal()
24344	return objectMap
24345}
24346
24347// PurviewConfiguration - Purview Configuration
24348type PurviewConfiguration struct {
24349	// Purview Resource ID
24350	PurviewResourceID *string `json:"purviewResourceId,omitempty"`
24351}
24352
24353// QueryDataFlowDebugSessionsResponse - A list of active debug sessions.
24354type QueryDataFlowDebugSessionsResponse struct {
24355	// The link to the next page of results, if any remaining results exist.
24356	NextLink *string `json:"nextLink,omitempty"`
24357
24358	// Array with all active debug sessions.
24359	Value []*DataFlowDebugSessionInfo `json:"value,omitempty"`
24360}
24361
24362// MarshalJSON implements the json.Marshaller interface for type QueryDataFlowDebugSessionsResponse.
24363func (q QueryDataFlowDebugSessionsResponse) MarshalJSON() ([]byte, error) {
24364	objectMap := make(map[string]interface{})
24365	populate(objectMap, "nextLink", q.NextLink)
24366	populate(objectMap, "value", q.Value)
24367	return json.Marshal(objectMap)
24368}
24369
24370// QuickBooksLinkedService - QuickBooks server linked service.
24371type QuickBooksLinkedService struct {
24372	LinkedService
24373	// REQUIRED; QuickBooks server linked service properties.
24374	TypeProperties *QuickBooksLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
24375}
24376
24377// MarshalJSON implements the json.Marshaller interface for type QuickBooksLinkedService.
24378func (q QuickBooksLinkedService) MarshalJSON() ([]byte, error) {
24379	objectMap := q.LinkedService.marshalInternal("QuickBooks")
24380	populate(objectMap, "typeProperties", q.TypeProperties)
24381	return json.Marshal(objectMap)
24382}
24383
24384// UnmarshalJSON implements the json.Unmarshaller interface for type QuickBooksLinkedService.
24385func (q *QuickBooksLinkedService) UnmarshalJSON(data []byte) error {
24386	var rawMsg map[string]json.RawMessage
24387	if err := json.Unmarshal(data, &rawMsg); err != nil {
24388		return err
24389	}
24390	for key, val := range rawMsg {
24391		var err error
24392		switch key {
24393		case "typeProperties":
24394			err = unpopulate(val, &q.TypeProperties)
24395			delete(rawMsg, key)
24396		}
24397		if err != nil {
24398			return err
24399		}
24400	}
24401	return q.LinkedService.unmarshalInternal(rawMsg)
24402}
24403
24404// QuickBooksLinkedServiceTypeProperties - QuickBooks server linked service properties.
24405type QuickBooksLinkedServiceTypeProperties struct {
24406	// REQUIRED; The access token for OAuth 1.0 authentication.
24407	AccessToken SecretBaseClassification `json:"accessToken,omitempty"`
24408
24409	// REQUIRED; The access token secret for OAuth 1.0 authentication.
24410	AccessTokenSecret SecretBaseClassification `json:"accessTokenSecret,omitempty"`
24411
24412	// REQUIRED; The company ID of the QuickBooks company to authorize.
24413	CompanyID interface{} `json:"companyId,omitempty"`
24414
24415	// REQUIRED; The consumer key for OAuth 1.0 authentication.
24416	ConsumerKey interface{} `json:"consumerKey,omitempty"`
24417
24418	// REQUIRED; The consumer secret for OAuth 1.0 authentication.
24419	ConsumerSecret SecretBaseClassification `json:"consumerSecret,omitempty"`
24420
24421	// REQUIRED; The endpoint of the QuickBooks server. (i.e. quickbooks.api.intuit.com)
24422	Endpoint interface{} `json:"endpoint,omitempty"`
24423
24424	// Properties used to connect to QuickBooks. It is mutually exclusive with any other properties in the linked service. Type: object.
24425	ConnectionProperties interface{} `json:"connectionProperties,omitempty"`
24426
24427	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
24428	// with resultType string).
24429	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
24430
24431	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
24432	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
24433}
24434
24435// MarshalJSON implements the json.Marshaller interface for type QuickBooksLinkedServiceTypeProperties.
24436func (q QuickBooksLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
24437	objectMap := make(map[string]interface{})
24438	populate(objectMap, "accessToken", q.AccessToken)
24439	populate(objectMap, "accessTokenSecret", q.AccessTokenSecret)
24440	populate(objectMap, "companyId", q.CompanyID)
24441	populate(objectMap, "connectionProperties", q.ConnectionProperties)
24442	populate(objectMap, "consumerKey", q.ConsumerKey)
24443	populate(objectMap, "consumerSecret", q.ConsumerSecret)
24444	populate(objectMap, "encryptedCredential", q.EncryptedCredential)
24445	populate(objectMap, "endpoint", q.Endpoint)
24446	populate(objectMap, "useEncryptedEndpoints", q.UseEncryptedEndpoints)
24447	return json.Marshal(objectMap)
24448}
24449
24450// UnmarshalJSON implements the json.Unmarshaller interface for type QuickBooksLinkedServiceTypeProperties.
24451func (q *QuickBooksLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
24452	var rawMsg map[string]json.RawMessage
24453	if err := json.Unmarshal(data, &rawMsg); err != nil {
24454		return err
24455	}
24456	for key, val := range rawMsg {
24457		var err error
24458		switch key {
24459		case "accessToken":
24460			q.AccessToken, err = unmarshalSecretBaseClassification(val)
24461			delete(rawMsg, key)
24462		case "accessTokenSecret":
24463			q.AccessTokenSecret, err = unmarshalSecretBaseClassification(val)
24464			delete(rawMsg, key)
24465		case "companyId":
24466			err = unpopulate(val, &q.CompanyID)
24467			delete(rawMsg, key)
24468		case "connectionProperties":
24469			err = unpopulate(val, &q.ConnectionProperties)
24470			delete(rawMsg, key)
24471		case "consumerKey":
24472			err = unpopulate(val, &q.ConsumerKey)
24473			delete(rawMsg, key)
24474		case "consumerSecret":
24475			q.ConsumerSecret, err = unmarshalSecretBaseClassification(val)
24476			delete(rawMsg, key)
24477		case "encryptedCredential":
24478			err = unpopulate(val, &q.EncryptedCredential)
24479			delete(rawMsg, key)
24480		case "endpoint":
24481			err = unpopulate(val, &q.Endpoint)
24482			delete(rawMsg, key)
24483		case "useEncryptedEndpoints":
24484			err = unpopulate(val, &q.UseEncryptedEndpoints)
24485			delete(rawMsg, key)
24486		}
24487		if err != nil {
24488			return err
24489		}
24490	}
24491	return nil
24492}
24493
24494// QuickBooksObjectDataset - QuickBooks server dataset.
24495type QuickBooksObjectDataset struct {
24496	Dataset
24497	// Properties specific to this dataset type.
24498	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
24499}
24500
24501// MarshalJSON implements the json.Marshaller interface for type QuickBooksObjectDataset.
24502func (q QuickBooksObjectDataset) MarshalJSON() ([]byte, error) {
24503	objectMap := q.Dataset.marshalInternal("QuickBooksObject")
24504	populate(objectMap, "typeProperties", q.TypeProperties)
24505	return json.Marshal(objectMap)
24506}
24507
24508// UnmarshalJSON implements the json.Unmarshaller interface for type QuickBooksObjectDataset.
24509func (q *QuickBooksObjectDataset) UnmarshalJSON(data []byte) error {
24510	var rawMsg map[string]json.RawMessage
24511	if err := json.Unmarshal(data, &rawMsg); err != nil {
24512		return err
24513	}
24514	for key, val := range rawMsg {
24515		var err error
24516		switch key {
24517		case "typeProperties":
24518			err = unpopulate(val, &q.TypeProperties)
24519			delete(rawMsg, key)
24520		}
24521		if err != nil {
24522			return err
24523		}
24524	}
24525	return q.Dataset.unmarshalInternal(rawMsg)
24526}
24527
24528// QuickBooksSource - A copy activity QuickBooks server source.
24529type QuickBooksSource struct {
24530	TabularSource
24531	// A query to retrieve data from source. Type: string (or Expression with resultType string).
24532	Query interface{} `json:"query,omitempty"`
24533}
24534
24535// MarshalJSON implements the json.Marshaller interface for type QuickBooksSource.
24536func (q QuickBooksSource) MarshalJSON() ([]byte, error) {
24537	objectMap := q.TabularSource.marshalInternal("QuickBooksSource")
24538	populate(objectMap, "query", q.Query)
24539	return json.Marshal(objectMap)
24540}
24541
24542// UnmarshalJSON implements the json.Unmarshaller interface for type QuickBooksSource.
24543func (q *QuickBooksSource) UnmarshalJSON(data []byte) error {
24544	var rawMsg map[string]json.RawMessage
24545	if err := json.Unmarshal(data, &rawMsg); err != nil {
24546		return err
24547	}
24548	for key, val := range rawMsg {
24549		var err error
24550		switch key {
24551		case "query":
24552			err = unpopulate(val, &q.Query)
24553			delete(rawMsg, key)
24554		}
24555		if err != nil {
24556			return err
24557		}
24558	}
24559	return q.TabularSource.unmarshalInternal(rawMsg)
24560}
24561
24562// RecurrenceSchedule - The recurrence schedule.
24563type RecurrenceSchedule struct {
24564	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
24565	AdditionalProperties map[string]interface{}
24566
24567	// The hours.
24568	Hours []*int32 `json:"hours,omitempty"`
24569
24570	// The minutes.
24571	Minutes []*int32 `json:"minutes,omitempty"`
24572
24573	// The month days.
24574	MonthDays []*int32 `json:"monthDays,omitempty"`
24575
24576	// The monthly occurrences.
24577	MonthlyOccurrences []*RecurrenceScheduleOccurrence `json:"monthlyOccurrences,omitempty"`
24578
24579	// The days of the week.
24580	WeekDays []*DayOfWeek `json:"weekDays,omitempty"`
24581}
24582
24583// MarshalJSON implements the json.Marshaller interface for type RecurrenceSchedule.
24584func (r RecurrenceSchedule) MarshalJSON() ([]byte, error) {
24585	objectMap := make(map[string]interface{})
24586	populate(objectMap, "hours", r.Hours)
24587	populate(objectMap, "minutes", r.Minutes)
24588	populate(objectMap, "monthDays", r.MonthDays)
24589	populate(objectMap, "monthlyOccurrences", r.MonthlyOccurrences)
24590	populate(objectMap, "weekDays", r.WeekDays)
24591	if r.AdditionalProperties != nil {
24592		for key, val := range r.AdditionalProperties {
24593			objectMap[key] = val
24594		}
24595	}
24596	return json.Marshal(objectMap)
24597}
24598
24599// UnmarshalJSON implements the json.Unmarshaller interface for type RecurrenceSchedule.
24600func (r *RecurrenceSchedule) UnmarshalJSON(data []byte) error {
24601	var rawMsg map[string]json.RawMessage
24602	if err := json.Unmarshal(data, &rawMsg); err != nil {
24603		return err
24604	}
24605	for key, val := range rawMsg {
24606		var err error
24607		switch key {
24608		case "hours":
24609			err = unpopulate(val, &r.Hours)
24610			delete(rawMsg, key)
24611		case "minutes":
24612			err = unpopulate(val, &r.Minutes)
24613			delete(rawMsg, key)
24614		case "monthDays":
24615			err = unpopulate(val, &r.MonthDays)
24616			delete(rawMsg, key)
24617		case "monthlyOccurrences":
24618			err = unpopulate(val, &r.MonthlyOccurrences)
24619			delete(rawMsg, key)
24620		case "weekDays":
24621			err = unpopulate(val, &r.WeekDays)
24622			delete(rawMsg, key)
24623		default:
24624			if r.AdditionalProperties == nil {
24625				r.AdditionalProperties = map[string]interface{}{}
24626			}
24627			if val != nil {
24628				var aux interface{}
24629				err = json.Unmarshal(val, &aux)
24630				r.AdditionalProperties[key] = aux
24631			}
24632			delete(rawMsg, key)
24633		}
24634		if err != nil {
24635			return err
24636		}
24637	}
24638	return nil
24639}
24640
24641// RecurrenceScheduleOccurrence - The recurrence schedule occurrence.
24642type RecurrenceScheduleOccurrence struct {
24643	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
24644	AdditionalProperties map[string]interface{}
24645
24646	// The day of the week.
24647	Day *DayOfWeek `json:"day,omitempty"`
24648
24649	// The occurrence.
24650	Occurrence *int32 `json:"occurrence,omitempty"`
24651}
24652
24653// MarshalJSON implements the json.Marshaller interface for type RecurrenceScheduleOccurrence.
24654func (r RecurrenceScheduleOccurrence) MarshalJSON() ([]byte, error) {
24655	objectMap := make(map[string]interface{})
24656	populate(objectMap, "day", r.Day)
24657	populate(objectMap, "occurrence", r.Occurrence)
24658	if r.AdditionalProperties != nil {
24659		for key, val := range r.AdditionalProperties {
24660			objectMap[key] = val
24661		}
24662	}
24663	return json.Marshal(objectMap)
24664}
24665
24666// UnmarshalJSON implements the json.Unmarshaller interface for type RecurrenceScheduleOccurrence.
24667func (r *RecurrenceScheduleOccurrence) UnmarshalJSON(data []byte) error {
24668	var rawMsg map[string]json.RawMessage
24669	if err := json.Unmarshal(data, &rawMsg); err != nil {
24670		return err
24671	}
24672	for key, val := range rawMsg {
24673		var err error
24674		switch key {
24675		case "day":
24676			err = unpopulate(val, &r.Day)
24677			delete(rawMsg, key)
24678		case "occurrence":
24679			err = unpopulate(val, &r.Occurrence)
24680			delete(rawMsg, key)
24681		default:
24682			if r.AdditionalProperties == nil {
24683				r.AdditionalProperties = map[string]interface{}{}
24684			}
24685			if val != nil {
24686				var aux interface{}
24687				err = json.Unmarshal(val, &aux)
24688				r.AdditionalProperties[key] = aux
24689			}
24690			delete(rawMsg, key)
24691		}
24692		if err != nil {
24693			return err
24694		}
24695	}
24696	return nil
24697}
24698
24699// RedirectIncompatibleRowSettings - Redirect incompatible row settings
24700type RedirectIncompatibleRowSettings struct {
24701	// REQUIRED; Name of the Azure Storage, Storage SAS, or Azure Data Lake Store linked service used for redirecting incompatible row. Must be specified if
24702	// redirectIncompatibleRowSettings is specified. Type: string
24703	// (or Expression with resultType string).
24704	LinkedServiceName interface{} `json:"linkedServiceName,omitempty"`
24705
24706	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
24707	AdditionalProperties map[string]interface{}
24708
24709	// The path for storing the redirect incompatible row data. Type: string (or Expression with resultType string).
24710	Path interface{} `json:"path,omitempty"`
24711}
24712
24713// MarshalJSON implements the json.Marshaller interface for type RedirectIncompatibleRowSettings.
24714func (r RedirectIncompatibleRowSettings) MarshalJSON() ([]byte, error) {
24715	objectMap := make(map[string]interface{})
24716	populate(objectMap, "linkedServiceName", r.LinkedServiceName)
24717	populate(objectMap, "path", r.Path)
24718	if r.AdditionalProperties != nil {
24719		for key, val := range r.AdditionalProperties {
24720			objectMap[key] = val
24721		}
24722	}
24723	return json.Marshal(objectMap)
24724}
24725
24726// UnmarshalJSON implements the json.Unmarshaller interface for type RedirectIncompatibleRowSettings.
24727func (r *RedirectIncompatibleRowSettings) UnmarshalJSON(data []byte) error {
24728	var rawMsg map[string]json.RawMessage
24729	if err := json.Unmarshal(data, &rawMsg); err != nil {
24730		return err
24731	}
24732	for key, val := range rawMsg {
24733		var err error
24734		switch key {
24735		case "linkedServiceName":
24736			err = unpopulate(val, &r.LinkedServiceName)
24737			delete(rawMsg, key)
24738		case "path":
24739			err = unpopulate(val, &r.Path)
24740			delete(rawMsg, key)
24741		default:
24742			if r.AdditionalProperties == nil {
24743				r.AdditionalProperties = map[string]interface{}{}
24744			}
24745			if val != nil {
24746				var aux interface{}
24747				err = json.Unmarshal(val, &aux)
24748				r.AdditionalProperties[key] = aux
24749			}
24750			delete(rawMsg, key)
24751		}
24752		if err != nil {
24753			return err
24754		}
24755	}
24756	return nil
24757}
24758
24759// RedshiftUnloadSettings - The Amazon S3 settings needed for the interim Amazon S3 when copying from Amazon Redshift with unload. With this, data from
24760// Amazon Redshift source will be unloaded into S3 first and then copied into
24761// the targeted sink from the interim S3.
24762type RedshiftUnloadSettings struct {
24763	// REQUIRED; The bucket of the interim Amazon S3 which will be used to store the unloaded data from Amazon Redshift source. The bucket must be in the same
24764	// region as the Amazon Redshift source. Type: string (or
24765	// Expression with resultType string).
24766	BucketName interface{} `json:"bucketName,omitempty"`
24767
24768	// REQUIRED; The name of the Amazon S3 linked service which will be used for the unload operation when copying from the Amazon Redshift source.
24769	S3LinkedServiceName *LinkedServiceReference `json:"s3LinkedServiceName,omitempty"`
24770}
24771
24772// RelationalSource - A copy activity source for various relational databases.
24773type RelationalSource struct {
24774	CopySource
24775	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
24776	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
24777
24778	// Database query. Type: string (or Expression with resultType string).
24779	Query interface{} `json:"query,omitempty"`
24780}
24781
24782// MarshalJSON implements the json.Marshaller interface for type RelationalSource.
24783func (r RelationalSource) MarshalJSON() ([]byte, error) {
24784	objectMap := r.CopySource.marshalInternal("RelationalSource")
24785	populate(objectMap, "additionalColumns", r.AdditionalColumns)
24786	populate(objectMap, "query", r.Query)
24787	return json.Marshal(objectMap)
24788}
24789
24790// UnmarshalJSON implements the json.Unmarshaller interface for type RelationalSource.
24791func (r *RelationalSource) UnmarshalJSON(data []byte) error {
24792	var rawMsg map[string]json.RawMessage
24793	if err := json.Unmarshal(data, &rawMsg); err != nil {
24794		return err
24795	}
24796	for key, val := range rawMsg {
24797		var err error
24798		switch key {
24799		case "additionalColumns":
24800			err = unpopulate(val, &r.AdditionalColumns)
24801			delete(rawMsg, key)
24802		case "query":
24803			err = unpopulate(val, &r.Query)
24804			delete(rawMsg, key)
24805		}
24806		if err != nil {
24807			return err
24808		}
24809	}
24810	return r.CopySource.unmarshalInternal(rawMsg)
24811}
24812
24813// RelationalTableDataset - The relational table dataset.
24814type RelationalTableDataset struct {
24815	Dataset
24816	// Relational table dataset properties.
24817	TypeProperties *RelationalTableDatasetTypeProperties `json:"typeProperties,omitempty"`
24818}
24819
24820// MarshalJSON implements the json.Marshaller interface for type RelationalTableDataset.
24821func (r RelationalTableDataset) MarshalJSON() ([]byte, error) {
24822	objectMap := r.Dataset.marshalInternal("RelationalTable")
24823	populate(objectMap, "typeProperties", r.TypeProperties)
24824	return json.Marshal(objectMap)
24825}
24826
24827// UnmarshalJSON implements the json.Unmarshaller interface for type RelationalTableDataset.
24828func (r *RelationalTableDataset) UnmarshalJSON(data []byte) error {
24829	var rawMsg map[string]json.RawMessage
24830	if err := json.Unmarshal(data, &rawMsg); err != nil {
24831		return err
24832	}
24833	for key, val := range rawMsg {
24834		var err error
24835		switch key {
24836		case "typeProperties":
24837			err = unpopulate(val, &r.TypeProperties)
24838			delete(rawMsg, key)
24839		}
24840		if err != nil {
24841			return err
24842		}
24843	}
24844	return r.Dataset.unmarshalInternal(rawMsg)
24845}
24846
24847// RelationalTableDatasetTypeProperties - Relational table dataset properties.
24848type RelationalTableDatasetTypeProperties struct {
24849	// The relational table name. Type: string (or Expression with resultType string).
24850	TableName interface{} `json:"tableName,omitempty"`
24851}
24852
24853// RerunTriggerListResponse - A list of rerun triggers.
24854type RerunTriggerListResponse struct {
24855	// REQUIRED; List of rerun triggers.
24856	Value []*RerunTriggerResource `json:"value,omitempty"`
24857
24858	// READ-ONLY; The continuation token for getting the next page of results, if any remaining results exist, null otherwise.
24859	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
24860}
24861
24862// MarshalJSON implements the json.Marshaller interface for type RerunTriggerListResponse.
24863func (r RerunTriggerListResponse) MarshalJSON() ([]byte, error) {
24864	objectMap := make(map[string]interface{})
24865	populate(objectMap, "nextLink", r.NextLink)
24866	populate(objectMap, "value", r.Value)
24867	return json.Marshal(objectMap)
24868}
24869
24870// RerunTriggerResource - RerunTrigger resource type.
24871type RerunTriggerResource struct {
24872	SubResource
24873	// REQUIRED; Properties of the rerun trigger.
24874	Properties *RerunTumblingWindowTrigger `json:"properties,omitempty"`
24875}
24876
24877// MarshalJSON implements the json.Marshaller interface for type RerunTriggerResource.
24878func (r RerunTriggerResource) MarshalJSON() ([]byte, error) {
24879	objectMap := r.SubResource.marshalInternal()
24880	populate(objectMap, "properties", r.Properties)
24881	return json.Marshal(objectMap)
24882}
24883
24884// UnmarshalJSON implements the json.Unmarshaller interface for type RerunTriggerResource.
24885func (r *RerunTriggerResource) UnmarshalJSON(data []byte) error {
24886	var rawMsg map[string]json.RawMessage
24887	if err := json.Unmarshal(data, &rawMsg); err != nil {
24888		return err
24889	}
24890	for key, val := range rawMsg {
24891		var err error
24892		switch key {
24893		case "properties":
24894			err = unpopulate(val, &r.Properties)
24895			delete(rawMsg, key)
24896		}
24897		if err != nil {
24898			return err
24899		}
24900	}
24901	return r.SubResource.unmarshalInternal(rawMsg)
24902}
24903
24904// RerunTumblingWindowTrigger - Trigger that schedules pipeline reruns for all fixed time interval windows from a requested start time to requested end
24905// time.
24906type RerunTumblingWindowTrigger struct {
24907	Trigger
24908	// REQUIRED; Rerun Trigger properties.
24909	TypeProperties *RerunTumblingWindowTriggerTypeProperties `json:"typeProperties,omitempty"`
24910}
24911
24912// MarshalJSON implements the json.Marshaller interface for type RerunTumblingWindowTrigger.
24913func (r RerunTumblingWindowTrigger) MarshalJSON() ([]byte, error) {
24914	objectMap := r.Trigger.marshalInternal("RerunTumblingWindowTrigger")
24915	populate(objectMap, "typeProperties", r.TypeProperties)
24916	return json.Marshal(objectMap)
24917}
24918
24919// UnmarshalJSON implements the json.Unmarshaller interface for type RerunTumblingWindowTrigger.
24920func (r *RerunTumblingWindowTrigger) UnmarshalJSON(data []byte) error {
24921	var rawMsg map[string]json.RawMessage
24922	if err := json.Unmarshal(data, &rawMsg); err != nil {
24923		return err
24924	}
24925	for key, val := range rawMsg {
24926		var err error
24927		switch key {
24928		case "typeProperties":
24929			err = unpopulate(val, &r.TypeProperties)
24930			delete(rawMsg, key)
24931		}
24932		if err != nil {
24933			return err
24934		}
24935	}
24936	return r.Trigger.unmarshalInternal(rawMsg)
24937}
24938
24939// RerunTumblingWindowTriggerActionParameters - Rerun tumbling window trigger Parameters.
24940type RerunTumblingWindowTriggerActionParameters struct {
24941	// REQUIRED; The end time for the time period for which restatement is initiated. Only UTC time is currently supported.
24942	EndTime *time.Time `json:"endTime,omitempty"`
24943
24944	// REQUIRED; The max number of parallel time windows (ready for execution) for which a rerun is triggered.
24945	MaxConcurrency *int32 `json:"maxConcurrency,omitempty"`
24946
24947	// REQUIRED; The start time for the time period for which restatement is initiated. Only UTC time is currently supported.
24948	StartTime *time.Time `json:"startTime,omitempty"`
24949}
24950
24951// MarshalJSON implements the json.Marshaller interface for type RerunTumblingWindowTriggerActionParameters.
24952func (r RerunTumblingWindowTriggerActionParameters) MarshalJSON() ([]byte, error) {
24953	objectMap := make(map[string]interface{})
24954	populate(objectMap, "endTime", (*timeRFC3339)(r.EndTime))
24955	populate(objectMap, "maxConcurrency", r.MaxConcurrency)
24956	populate(objectMap, "startTime", (*timeRFC3339)(r.StartTime))
24957	return json.Marshal(objectMap)
24958}
24959
24960// UnmarshalJSON implements the json.Unmarshaller interface for type RerunTumblingWindowTriggerActionParameters.
24961func (r *RerunTumblingWindowTriggerActionParameters) UnmarshalJSON(data []byte) error {
24962	var rawMsg map[string]json.RawMessage
24963	if err := json.Unmarshal(data, &rawMsg); err != nil {
24964		return err
24965	}
24966	for key, val := range rawMsg {
24967		var err error
24968		switch key {
24969		case "endTime":
24970			var aux timeRFC3339
24971			err = unpopulate(val, &aux)
24972			r.EndTime = (*time.Time)(&aux)
24973			delete(rawMsg, key)
24974		case "maxConcurrency":
24975			err = unpopulate(val, &r.MaxConcurrency)
24976			delete(rawMsg, key)
24977		case "startTime":
24978			var aux timeRFC3339
24979			err = unpopulate(val, &aux)
24980			r.StartTime = (*time.Time)(&aux)
24981			delete(rawMsg, key)
24982		}
24983		if err != nil {
24984			return err
24985		}
24986	}
24987	return nil
24988}
24989
24990// RerunTumblingWindowTriggerTypeProperties - Rerun Trigger properties.
24991type RerunTumblingWindowTriggerTypeProperties struct {
24992	// REQUIRED; The parent trigger reference.
24993	ParentTrigger interface{} `json:"parentTrigger,omitempty"`
24994
24995	// REQUIRED; The end time for the time period for which restatement is initiated. Only UTC time is currently supported.
24996	RequestedEndTime *time.Time `json:"requestedEndTime,omitempty"`
24997
24998	// REQUIRED; The start time for the time period for which restatement is initiated. Only UTC time is currently supported.
24999	RequestedStartTime *time.Time `json:"requestedStartTime,omitempty"`
25000
25001	// REQUIRED; The max number of parallel time windows (ready for execution) for which a rerun is triggered.
25002	RerunConcurrency *int32 `json:"rerunConcurrency,omitempty"`
25003}
25004
25005// MarshalJSON implements the json.Marshaller interface for type RerunTumblingWindowTriggerTypeProperties.
25006func (r RerunTumblingWindowTriggerTypeProperties) MarshalJSON() ([]byte, error) {
25007	objectMap := make(map[string]interface{})
25008	populate(objectMap, "parentTrigger", r.ParentTrigger)
25009	populate(objectMap, "requestedEndTime", (*timeRFC3339)(r.RequestedEndTime))
25010	populate(objectMap, "requestedStartTime", (*timeRFC3339)(r.RequestedStartTime))
25011	populate(objectMap, "rerunConcurrency", r.RerunConcurrency)
25012	return json.Marshal(objectMap)
25013}
25014
25015// UnmarshalJSON implements the json.Unmarshaller interface for type RerunTumblingWindowTriggerTypeProperties.
25016func (r *RerunTumblingWindowTriggerTypeProperties) UnmarshalJSON(data []byte) error {
25017	var rawMsg map[string]json.RawMessage
25018	if err := json.Unmarshal(data, &rawMsg); err != nil {
25019		return err
25020	}
25021	for key, val := range rawMsg {
25022		var err error
25023		switch key {
25024		case "parentTrigger":
25025			err = unpopulate(val, &r.ParentTrigger)
25026			delete(rawMsg, key)
25027		case "requestedEndTime":
25028			var aux timeRFC3339
25029			err = unpopulate(val, &aux)
25030			r.RequestedEndTime = (*time.Time)(&aux)
25031			delete(rawMsg, key)
25032		case "requestedStartTime":
25033			var aux timeRFC3339
25034			err = unpopulate(val, &aux)
25035			r.RequestedStartTime = (*time.Time)(&aux)
25036			delete(rawMsg, key)
25037		case "rerunConcurrency":
25038			err = unpopulate(val, &r.RerunConcurrency)
25039			delete(rawMsg, key)
25040		}
25041		if err != nil {
25042			return err
25043		}
25044	}
25045	return nil
25046}
25047
25048// Resource - Common fields that are returned in the response for all Azure Resource Manager resources
25049type Resource struct {
25050	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
25051	ID *string `json:"id,omitempty" azure:"ro"`
25052
25053	// READ-ONLY; The name of the resource
25054	Name *string `json:"name,omitempty" azure:"ro"`
25055
25056	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
25057	Type *string `json:"type,omitempty" azure:"ro"`
25058}
25059
25060// MarshalJSON implements the json.Marshaller interface for type Resource.
25061func (r Resource) MarshalJSON() ([]byte, error) {
25062	objectMap := r.marshalInternal()
25063	return json.Marshal(objectMap)
25064}
25065
25066// UnmarshalJSON implements the json.Unmarshaller interface for type Resource.
25067func (r *Resource) UnmarshalJSON(data []byte) error {
25068	var rawMsg map[string]json.RawMessage
25069	if err := json.Unmarshal(data, &rawMsg); err != nil {
25070		return err
25071	}
25072	return r.unmarshalInternal(rawMsg)
25073}
25074
25075func (r Resource) marshalInternal() map[string]interface{} {
25076	objectMap := make(map[string]interface{})
25077	populate(objectMap, "id", r.ID)
25078	populate(objectMap, "name", r.Name)
25079	populate(objectMap, "type", r.Type)
25080	return objectMap
25081}
25082
25083func (r *Resource) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
25084	for key, val := range rawMsg {
25085		var err error
25086		switch key {
25087		case "id":
25088			err = unpopulate(val, &r.ID)
25089			delete(rawMsg, key)
25090		case "name":
25091			err = unpopulate(val, &r.Name)
25092			delete(rawMsg, key)
25093		case "type":
25094			err = unpopulate(val, &r.Type)
25095			delete(rawMsg, key)
25096		}
25097		if err != nil {
25098			return err
25099		}
25100	}
25101	return nil
25102}
25103
25104// ResponsysLinkedService - Responsys linked service.
25105type ResponsysLinkedService struct {
25106	LinkedService
25107	// REQUIRED; Responsys linked service properties.
25108	TypeProperties *ResponsysLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
25109}
25110
25111// MarshalJSON implements the json.Marshaller interface for type ResponsysLinkedService.
25112func (r ResponsysLinkedService) MarshalJSON() ([]byte, error) {
25113	objectMap := r.LinkedService.marshalInternal("Responsys")
25114	populate(objectMap, "typeProperties", r.TypeProperties)
25115	return json.Marshal(objectMap)
25116}
25117
25118// UnmarshalJSON implements the json.Unmarshaller interface for type ResponsysLinkedService.
25119func (r *ResponsysLinkedService) UnmarshalJSON(data []byte) error {
25120	var rawMsg map[string]json.RawMessage
25121	if err := json.Unmarshal(data, &rawMsg); err != nil {
25122		return err
25123	}
25124	for key, val := range rawMsg {
25125		var err error
25126		switch key {
25127		case "typeProperties":
25128			err = unpopulate(val, &r.TypeProperties)
25129			delete(rawMsg, key)
25130		}
25131		if err != nil {
25132			return err
25133		}
25134	}
25135	return r.LinkedService.unmarshalInternal(rawMsg)
25136}
25137
25138// ResponsysLinkedServiceTypeProperties - Responsys linked service properties.
25139type ResponsysLinkedServiceTypeProperties struct {
25140	// REQUIRED; The client ID associated with the Responsys application. Type: string (or Expression with resultType string).
25141	ClientID interface{} `json:"clientId,omitempty"`
25142
25143	// REQUIRED; The endpoint of the Responsys server.
25144	Endpoint interface{} `json:"endpoint,omitempty"`
25145
25146	// The client secret associated with the Responsys application. Type: string (or Expression with resultType string).
25147	ClientSecret SecretBaseClassification `json:"clientSecret,omitempty"`
25148
25149	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
25150	// with resultType string).
25151	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
25152
25153	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true. Type: boolean (or Expression with resultType boolean).
25154	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
25155
25156	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
25157	// is true. Type: boolean (or Expression with
25158	// resultType boolean).
25159	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
25160
25161	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true. Type: boolean (or Expression with resultType
25162	// boolean).
25163	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
25164}
25165
25166// MarshalJSON implements the json.Marshaller interface for type ResponsysLinkedServiceTypeProperties.
25167func (r ResponsysLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
25168	objectMap := make(map[string]interface{})
25169	populate(objectMap, "clientId", r.ClientID)
25170	populate(objectMap, "clientSecret", r.ClientSecret)
25171	populate(objectMap, "encryptedCredential", r.EncryptedCredential)
25172	populate(objectMap, "endpoint", r.Endpoint)
25173	populate(objectMap, "useEncryptedEndpoints", r.UseEncryptedEndpoints)
25174	populate(objectMap, "useHostVerification", r.UseHostVerification)
25175	populate(objectMap, "usePeerVerification", r.UsePeerVerification)
25176	return json.Marshal(objectMap)
25177}
25178
25179// UnmarshalJSON implements the json.Unmarshaller interface for type ResponsysLinkedServiceTypeProperties.
25180func (r *ResponsysLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
25181	var rawMsg map[string]json.RawMessage
25182	if err := json.Unmarshal(data, &rawMsg); err != nil {
25183		return err
25184	}
25185	for key, val := range rawMsg {
25186		var err error
25187		switch key {
25188		case "clientId":
25189			err = unpopulate(val, &r.ClientID)
25190			delete(rawMsg, key)
25191		case "clientSecret":
25192			r.ClientSecret, err = unmarshalSecretBaseClassification(val)
25193			delete(rawMsg, key)
25194		case "encryptedCredential":
25195			err = unpopulate(val, &r.EncryptedCredential)
25196			delete(rawMsg, key)
25197		case "endpoint":
25198			err = unpopulate(val, &r.Endpoint)
25199			delete(rawMsg, key)
25200		case "useEncryptedEndpoints":
25201			err = unpopulate(val, &r.UseEncryptedEndpoints)
25202			delete(rawMsg, key)
25203		case "useHostVerification":
25204			err = unpopulate(val, &r.UseHostVerification)
25205			delete(rawMsg, key)
25206		case "usePeerVerification":
25207			err = unpopulate(val, &r.UsePeerVerification)
25208			delete(rawMsg, key)
25209		}
25210		if err != nil {
25211			return err
25212		}
25213	}
25214	return nil
25215}
25216
25217// ResponsysObjectDataset - Responsys dataset.
25218type ResponsysObjectDataset struct {
25219	Dataset
25220	// Properties specific to this dataset type.
25221	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
25222}
25223
25224// MarshalJSON implements the json.Marshaller interface for type ResponsysObjectDataset.
25225func (r ResponsysObjectDataset) MarshalJSON() ([]byte, error) {
25226	objectMap := r.Dataset.marshalInternal("ResponsysObject")
25227	populate(objectMap, "typeProperties", r.TypeProperties)
25228	return json.Marshal(objectMap)
25229}
25230
25231// UnmarshalJSON implements the json.Unmarshaller interface for type ResponsysObjectDataset.
25232func (r *ResponsysObjectDataset) UnmarshalJSON(data []byte) error {
25233	var rawMsg map[string]json.RawMessage
25234	if err := json.Unmarshal(data, &rawMsg); err != nil {
25235		return err
25236	}
25237	for key, val := range rawMsg {
25238		var err error
25239		switch key {
25240		case "typeProperties":
25241			err = unpopulate(val, &r.TypeProperties)
25242			delete(rawMsg, key)
25243		}
25244		if err != nil {
25245			return err
25246		}
25247	}
25248	return r.Dataset.unmarshalInternal(rawMsg)
25249}
25250
25251// ResponsysSource - A copy activity Responsys source.
25252type ResponsysSource struct {
25253	TabularSource
25254	// A query to retrieve data from source. Type: string (or Expression with resultType string).
25255	Query interface{} `json:"query,omitempty"`
25256}
25257
25258// MarshalJSON implements the json.Marshaller interface for type ResponsysSource.
25259func (r ResponsysSource) MarshalJSON() ([]byte, error) {
25260	objectMap := r.TabularSource.marshalInternal("ResponsysSource")
25261	populate(objectMap, "query", r.Query)
25262	return json.Marshal(objectMap)
25263}
25264
25265// UnmarshalJSON implements the json.Unmarshaller interface for type ResponsysSource.
25266func (r *ResponsysSource) UnmarshalJSON(data []byte) error {
25267	var rawMsg map[string]json.RawMessage
25268	if err := json.Unmarshal(data, &rawMsg); err != nil {
25269		return err
25270	}
25271	for key, val := range rawMsg {
25272		var err error
25273		switch key {
25274		case "query":
25275			err = unpopulate(val, &r.Query)
25276			delete(rawMsg, key)
25277		}
25278		if err != nil {
25279			return err
25280		}
25281	}
25282	return r.TabularSource.unmarshalInternal(rawMsg)
25283}
25284
25285// RestResourceDataset - A Rest service dataset.
25286type RestResourceDataset struct {
25287	Dataset
25288	// Properties specific to this dataset type.
25289	TypeProperties *RestResourceDatasetTypeProperties `json:"typeProperties,omitempty"`
25290}
25291
25292// MarshalJSON implements the json.Marshaller interface for type RestResourceDataset.
25293func (r RestResourceDataset) MarshalJSON() ([]byte, error) {
25294	objectMap := r.Dataset.marshalInternal("RestResource")
25295	populate(objectMap, "typeProperties", r.TypeProperties)
25296	return json.Marshal(objectMap)
25297}
25298
25299// UnmarshalJSON implements the json.Unmarshaller interface for type RestResourceDataset.
25300func (r *RestResourceDataset) UnmarshalJSON(data []byte) error {
25301	var rawMsg map[string]json.RawMessage
25302	if err := json.Unmarshal(data, &rawMsg); err != nil {
25303		return err
25304	}
25305	for key, val := range rawMsg {
25306		var err error
25307		switch key {
25308		case "typeProperties":
25309			err = unpopulate(val, &r.TypeProperties)
25310			delete(rawMsg, key)
25311		}
25312		if err != nil {
25313			return err
25314		}
25315	}
25316	return r.Dataset.unmarshalInternal(rawMsg)
25317}
25318
25319// RestResourceDatasetTypeProperties - Properties specific to this dataset type.
25320type RestResourceDatasetTypeProperties struct {
25321	// The additional HTTP headers in the request to the RESTful API. Type: string (or Expression with resultType string).
25322	AdditionalHeaders interface{} `json:"additionalHeaders,omitempty"`
25323
25324	// The pagination rules to compose next page requests. Type: string (or Expression with resultType string).
25325	PaginationRules interface{} `json:"paginationRules,omitempty"`
25326
25327	// The relative URL to the resource that the RESTful API provides. Type: string (or Expression with resultType string).
25328	RelativeURL interface{} `json:"relativeUrl,omitempty"`
25329
25330	// The HTTP request body to the RESTful API if requestMethod is POST. Type: string (or Expression with resultType string).
25331	RequestBody interface{} `json:"requestBody,omitempty"`
25332
25333	// The HTTP method used to call the RESTful API. The default is GET. Type: string (or Expression with resultType string).
25334	RequestMethod interface{} `json:"requestMethod,omitempty"`
25335}
25336
25337// RestServiceLinkedService - Rest Service linked service.
25338type RestServiceLinkedService struct {
25339	LinkedService
25340	// REQUIRED; Rest Service linked service properties.
25341	TypeProperties *RestServiceLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
25342}
25343
25344// MarshalJSON implements the json.Marshaller interface for type RestServiceLinkedService.
25345func (r RestServiceLinkedService) MarshalJSON() ([]byte, error) {
25346	objectMap := r.LinkedService.marshalInternal("RestService")
25347	populate(objectMap, "typeProperties", r.TypeProperties)
25348	return json.Marshal(objectMap)
25349}
25350
25351// UnmarshalJSON implements the json.Unmarshaller interface for type RestServiceLinkedService.
25352func (r *RestServiceLinkedService) UnmarshalJSON(data []byte) error {
25353	var rawMsg map[string]json.RawMessage
25354	if err := json.Unmarshal(data, &rawMsg); err != nil {
25355		return err
25356	}
25357	for key, val := range rawMsg {
25358		var err error
25359		switch key {
25360		case "typeProperties":
25361			err = unpopulate(val, &r.TypeProperties)
25362			delete(rawMsg, key)
25363		}
25364		if err != nil {
25365			return err
25366		}
25367	}
25368	return r.LinkedService.unmarshalInternal(rawMsg)
25369}
25370
25371// RestServiceLinkedServiceTypeProperties - Rest Service linked service properties.
25372type RestServiceLinkedServiceTypeProperties struct {
25373	// REQUIRED; Type of authentication used to connect to the REST service.
25374	AuthenticationType *RestServiceAuthenticationType `json:"authenticationType,omitempty"`
25375
25376	// REQUIRED; The base URL of the REST service.
25377	URL interface{} `json:"url,omitempty"`
25378
25379	// The resource you are requesting authorization to use.
25380	AADResourceID interface{} `json:"aadResourceId,omitempty"`
25381
25382	// Indicates the azure cloud type of the service principle auth. Allowed values are AzurePublic, AzureChina, AzureUsGovernment, AzureGermany. Default value
25383	// is the data factory regions’ cloud type. Type:
25384	// string (or Expression with resultType string).
25385	AzureCloudType interface{} `json:"azureCloudType,omitempty"`
25386
25387	// Whether to validate server side SSL certificate when connecting to the endpoint.The default value is true. Type: boolean (or Expression with resultType
25388	// boolean).
25389	EnableServerCertificateValidation interface{} `json:"enableServerCertificateValidation,omitempty"`
25390
25391	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
25392	// with resultType string).
25393	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
25394
25395	// The password used in Basic authentication type.
25396	Password SecretBaseClassification `json:"password,omitempty"`
25397
25398	// The application's client ID used in AadServicePrincipal authentication type.
25399	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
25400
25401	// The application's key used in AadServicePrincipal authentication type.
25402	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
25403
25404	// The tenant information (domain name or tenant ID) used in AadServicePrincipal authentication type under which your application resides.
25405	Tenant interface{} `json:"tenant,omitempty"`
25406
25407	// The user name used in Basic authentication type.
25408	UserName interface{} `json:"userName,omitempty"`
25409}
25410
25411// MarshalJSON implements the json.Marshaller interface for type RestServiceLinkedServiceTypeProperties.
25412func (r RestServiceLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
25413	objectMap := make(map[string]interface{})
25414	populate(objectMap, "aadResourceId", r.AADResourceID)
25415	populate(objectMap, "authenticationType", r.AuthenticationType)
25416	populate(objectMap, "azureCloudType", r.AzureCloudType)
25417	populate(objectMap, "enableServerCertificateValidation", r.EnableServerCertificateValidation)
25418	populate(objectMap, "encryptedCredential", r.EncryptedCredential)
25419	populate(objectMap, "password", r.Password)
25420	populate(objectMap, "servicePrincipalId", r.ServicePrincipalID)
25421	populate(objectMap, "servicePrincipalKey", r.ServicePrincipalKey)
25422	populate(objectMap, "tenant", r.Tenant)
25423	populate(objectMap, "url", r.URL)
25424	populate(objectMap, "userName", r.UserName)
25425	return json.Marshal(objectMap)
25426}
25427
25428// UnmarshalJSON implements the json.Unmarshaller interface for type RestServiceLinkedServiceTypeProperties.
25429func (r *RestServiceLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
25430	var rawMsg map[string]json.RawMessage
25431	if err := json.Unmarshal(data, &rawMsg); err != nil {
25432		return err
25433	}
25434	for key, val := range rawMsg {
25435		var err error
25436		switch key {
25437		case "aadResourceId":
25438			err = unpopulate(val, &r.AADResourceID)
25439			delete(rawMsg, key)
25440		case "authenticationType":
25441			err = unpopulate(val, &r.AuthenticationType)
25442			delete(rawMsg, key)
25443		case "azureCloudType":
25444			err = unpopulate(val, &r.AzureCloudType)
25445			delete(rawMsg, key)
25446		case "enableServerCertificateValidation":
25447			err = unpopulate(val, &r.EnableServerCertificateValidation)
25448			delete(rawMsg, key)
25449		case "encryptedCredential":
25450			err = unpopulate(val, &r.EncryptedCredential)
25451			delete(rawMsg, key)
25452		case "password":
25453			r.Password, err = unmarshalSecretBaseClassification(val)
25454			delete(rawMsg, key)
25455		case "servicePrincipalId":
25456			err = unpopulate(val, &r.ServicePrincipalID)
25457			delete(rawMsg, key)
25458		case "servicePrincipalKey":
25459			r.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
25460			delete(rawMsg, key)
25461		case "tenant":
25462			err = unpopulate(val, &r.Tenant)
25463			delete(rawMsg, key)
25464		case "url":
25465			err = unpopulate(val, &r.URL)
25466			delete(rawMsg, key)
25467		case "userName":
25468			err = unpopulate(val, &r.UserName)
25469			delete(rawMsg, key)
25470		}
25471		if err != nil {
25472			return err
25473		}
25474	}
25475	return nil
25476}
25477
25478// RestSink - A copy activity Rest service Sink.
25479type RestSink struct {
25480	CopySink
25481	// The additional HTTP headers in the request to the RESTful API. Type: string (or Expression with resultType string).
25482	AdditionalHeaders interface{} `json:"additionalHeaders,omitempty"`
25483
25484	// Http Compression Type to Send data in compressed format with Optimal Compression Level, Default is None. And The Only Supported option is Gzip.
25485	HTTPCompressionType interface{} `json:"httpCompressionType,omitempty"`
25486
25487	// The timeout (TimeSpan) to get an HTTP response. It is the timeout to get a response, not the timeout to read response data. Default value: 00:01:40.
25488	// Type: string (or Expression with resultType
25489	// string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
25490	HTTPRequestTimeout interface{} `json:"httpRequestTimeout,omitempty"`
25491
25492	// The time to await before sending next request, in milliseconds
25493	RequestInterval interface{} `json:"requestInterval,omitempty"`
25494
25495	// The HTTP method used to call the RESTful API. The default is POST. Type: string (or Expression with resultType string).
25496	RequestMethod interface{} `json:"requestMethod,omitempty"`
25497}
25498
25499// MarshalJSON implements the json.Marshaller interface for type RestSink.
25500func (r RestSink) MarshalJSON() ([]byte, error) {
25501	objectMap := r.CopySink.marshalInternal("RestSink")
25502	populate(objectMap, "additionalHeaders", r.AdditionalHeaders)
25503	populate(objectMap, "httpCompressionType", r.HTTPCompressionType)
25504	populate(objectMap, "httpRequestTimeout", r.HTTPRequestTimeout)
25505	populate(objectMap, "requestInterval", r.RequestInterval)
25506	populate(objectMap, "requestMethod", r.RequestMethod)
25507	return json.Marshal(objectMap)
25508}
25509
25510// UnmarshalJSON implements the json.Unmarshaller interface for type RestSink.
25511func (r *RestSink) UnmarshalJSON(data []byte) error {
25512	var rawMsg map[string]json.RawMessage
25513	if err := json.Unmarshal(data, &rawMsg); err != nil {
25514		return err
25515	}
25516	for key, val := range rawMsg {
25517		var err error
25518		switch key {
25519		case "additionalHeaders":
25520			err = unpopulate(val, &r.AdditionalHeaders)
25521			delete(rawMsg, key)
25522		case "httpCompressionType":
25523			err = unpopulate(val, &r.HTTPCompressionType)
25524			delete(rawMsg, key)
25525		case "httpRequestTimeout":
25526			err = unpopulate(val, &r.HTTPRequestTimeout)
25527			delete(rawMsg, key)
25528		case "requestInterval":
25529			err = unpopulate(val, &r.RequestInterval)
25530			delete(rawMsg, key)
25531		case "requestMethod":
25532			err = unpopulate(val, &r.RequestMethod)
25533			delete(rawMsg, key)
25534		}
25535		if err != nil {
25536			return err
25537		}
25538	}
25539	return r.CopySink.unmarshalInternal(rawMsg)
25540}
25541
25542// RestSource - A copy activity Rest service source.
25543type RestSource struct {
25544	CopySource
25545	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
25546	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
25547
25548	// The additional HTTP headers in the request to the RESTful API. Type: string (or Expression with resultType string).
25549	AdditionalHeaders interface{} `json:"additionalHeaders,omitempty"`
25550
25551	// The timeout (TimeSpan) to get an HTTP response. It is the timeout to get a response, not the timeout to read response data. Default value: 00:01:40.
25552	// Type: string (or Expression with resultType
25553	// string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
25554	HTTPRequestTimeout interface{} `json:"httpRequestTimeout,omitempty"`
25555
25556	// The pagination rules to compose next page requests. Type: string (or Expression with resultType string).
25557	PaginationRules interface{} `json:"paginationRules,omitempty"`
25558
25559	// The HTTP request body to the RESTful API if requestMethod is POST. Type: string (or Expression with resultType string).
25560	RequestBody interface{} `json:"requestBody,omitempty"`
25561
25562	// The time to await before sending next page request.
25563	RequestInterval interface{} `json:"requestInterval,omitempty"`
25564
25565	// The HTTP method used to call the RESTful API. The default is GET. Type: string (or Expression with resultType string).
25566	RequestMethod interface{} `json:"requestMethod,omitempty"`
25567}
25568
25569// MarshalJSON implements the json.Marshaller interface for type RestSource.
25570func (r RestSource) MarshalJSON() ([]byte, error) {
25571	objectMap := r.CopySource.marshalInternal("RestSource")
25572	populate(objectMap, "additionalColumns", r.AdditionalColumns)
25573	populate(objectMap, "additionalHeaders", r.AdditionalHeaders)
25574	populate(objectMap, "httpRequestTimeout", r.HTTPRequestTimeout)
25575	populate(objectMap, "paginationRules", r.PaginationRules)
25576	populate(objectMap, "requestBody", r.RequestBody)
25577	populate(objectMap, "requestInterval", r.RequestInterval)
25578	populate(objectMap, "requestMethod", r.RequestMethod)
25579	return json.Marshal(objectMap)
25580}
25581
25582// UnmarshalJSON implements the json.Unmarshaller interface for type RestSource.
25583func (r *RestSource) UnmarshalJSON(data []byte) error {
25584	var rawMsg map[string]json.RawMessage
25585	if err := json.Unmarshal(data, &rawMsg); err != nil {
25586		return err
25587	}
25588	for key, val := range rawMsg {
25589		var err error
25590		switch key {
25591		case "additionalColumns":
25592			err = unpopulate(val, &r.AdditionalColumns)
25593			delete(rawMsg, key)
25594		case "additionalHeaders":
25595			err = unpopulate(val, &r.AdditionalHeaders)
25596			delete(rawMsg, key)
25597		case "httpRequestTimeout":
25598			err = unpopulate(val, &r.HTTPRequestTimeout)
25599			delete(rawMsg, key)
25600		case "paginationRules":
25601			err = unpopulate(val, &r.PaginationRules)
25602			delete(rawMsg, key)
25603		case "requestBody":
25604			err = unpopulate(val, &r.RequestBody)
25605			delete(rawMsg, key)
25606		case "requestInterval":
25607			err = unpopulate(val, &r.RequestInterval)
25608			delete(rawMsg, key)
25609		case "requestMethod":
25610			err = unpopulate(val, &r.RequestMethod)
25611			delete(rawMsg, key)
25612		}
25613		if err != nil {
25614			return err
25615		}
25616	}
25617	return r.CopySource.unmarshalInternal(rawMsg)
25618}
25619
25620// RetryPolicy - Execution policy for an activity.
25621type RetryPolicy struct {
25622	// Maximum ordinary retry attempts. Default is 0. Type: integer (or Expression with resultType integer), minimum: 0.
25623	Count interface{} `json:"count,omitempty"`
25624
25625	// Interval between retries in seconds. Default is 30.
25626	IntervalInSeconds *int32 `json:"intervalInSeconds,omitempty"`
25627}
25628
25629// RunFilterParameters - Query parameters for listing runs.
25630type RunFilterParameters struct {
25631	// REQUIRED; The time at or after which the run event was updated in 'ISO 8601' format.
25632	LastUpdatedAfter *time.Time `json:"lastUpdatedAfter,omitempty"`
25633
25634	// REQUIRED; The time at or before which the run event was updated in 'ISO 8601' format.
25635	LastUpdatedBefore *time.Time `json:"lastUpdatedBefore,omitempty"`
25636
25637	// The continuation token for getting the next page of results. Null for first page.
25638	ContinuationToken *string `json:"continuationToken,omitempty"`
25639
25640	// List of filters.
25641	Filters []*RunQueryFilter `json:"filters,omitempty"`
25642
25643	// List of OrderBy option.
25644	OrderBy []*RunQueryOrderBy `json:"orderBy,omitempty"`
25645}
25646
25647// MarshalJSON implements the json.Marshaller interface for type RunFilterParameters.
25648func (r RunFilterParameters) MarshalJSON() ([]byte, error) {
25649	objectMap := make(map[string]interface{})
25650	populate(objectMap, "continuationToken", r.ContinuationToken)
25651	populate(objectMap, "filters", r.Filters)
25652	populate(objectMap, "lastUpdatedAfter", (*timeRFC3339)(r.LastUpdatedAfter))
25653	populate(objectMap, "lastUpdatedBefore", (*timeRFC3339)(r.LastUpdatedBefore))
25654	populate(objectMap, "orderBy", r.OrderBy)
25655	return json.Marshal(objectMap)
25656}
25657
25658// UnmarshalJSON implements the json.Unmarshaller interface for type RunFilterParameters.
25659func (r *RunFilterParameters) UnmarshalJSON(data []byte) error {
25660	var rawMsg map[string]json.RawMessage
25661	if err := json.Unmarshal(data, &rawMsg); err != nil {
25662		return err
25663	}
25664	for key, val := range rawMsg {
25665		var err error
25666		switch key {
25667		case "continuationToken":
25668			err = unpopulate(val, &r.ContinuationToken)
25669			delete(rawMsg, key)
25670		case "filters":
25671			err = unpopulate(val, &r.Filters)
25672			delete(rawMsg, key)
25673		case "lastUpdatedAfter":
25674			var aux timeRFC3339
25675			err = unpopulate(val, &aux)
25676			r.LastUpdatedAfter = (*time.Time)(&aux)
25677			delete(rawMsg, key)
25678		case "lastUpdatedBefore":
25679			var aux timeRFC3339
25680			err = unpopulate(val, &aux)
25681			r.LastUpdatedBefore = (*time.Time)(&aux)
25682			delete(rawMsg, key)
25683		case "orderBy":
25684			err = unpopulate(val, &r.OrderBy)
25685			delete(rawMsg, key)
25686		}
25687		if err != nil {
25688			return err
25689		}
25690	}
25691	return nil
25692}
25693
25694// RunQueryFilter - Query filter option for listing runs.
25695type RunQueryFilter struct {
25696	// REQUIRED; Parameter name to be used for filter. The allowed operands to query pipeline runs are PipelineName, RunStart, RunEnd and Status; to query activity
25697	// runs are ActivityName, ActivityRunStart,
25698	// ActivityRunEnd, ActivityType and Status, and to query trigger runs are TriggerName, TriggerRunTimestamp and Status.
25699	Operand *RunQueryFilterOperand `json:"operand,omitempty"`
25700
25701	// REQUIRED; Operator to be used for filter.
25702	Operator *RunQueryFilterOperator `json:"operator,omitempty"`
25703
25704	// REQUIRED; List of filter values.
25705	Values []*string `json:"values,omitempty"`
25706}
25707
25708// MarshalJSON implements the json.Marshaller interface for type RunQueryFilter.
25709func (r RunQueryFilter) MarshalJSON() ([]byte, error) {
25710	objectMap := make(map[string]interface{})
25711	populate(objectMap, "operand", r.Operand)
25712	populate(objectMap, "operator", r.Operator)
25713	populate(objectMap, "values", r.Values)
25714	return json.Marshal(objectMap)
25715}
25716
25717// RunQueryOrderBy - An object to provide order by options for listing runs.
25718type RunQueryOrderBy struct {
25719	// REQUIRED; Sorting order of the parameter.
25720	Order *RunQueryOrder `json:"order,omitempty"`
25721
25722	// REQUIRED; Parameter name to be used for order by. The allowed parameters to order by for pipeline runs are PipelineName, RunStart, RunEnd and Status;
25723	// for activity runs are ActivityName, ActivityRunStart,
25724	// ActivityRunEnd and Status; for trigger runs are TriggerName, TriggerRunTimestamp and Status.
25725	OrderBy *RunQueryOrderByField `json:"orderBy,omitempty"`
25726}
25727
25728// SKU - SQL pool SKU
25729type SKU struct {
25730	// 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.
25731	Capacity *int32 `json:"capacity,omitempty"`
25732
25733	// The SKU name
25734	Name *string `json:"name,omitempty"`
25735
25736	// The service tier
25737	Tier *string `json:"tier,omitempty"`
25738}
25739
25740// SQLConnection - The connection used to execute the SQL script.
25741type SQLConnection struct {
25742	// REQUIRED; The identifier of the connection.
25743	Name *string `json:"name,omitempty"`
25744
25745	// REQUIRED; The type of the connection.
25746	Type *SQLConnectionType `json:"type,omitempty"`
25747
25748	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
25749	AdditionalProperties map[string]interface{}
25750}
25751
25752// MarshalJSON implements the json.Marshaller interface for type SQLConnection.
25753func (s SQLConnection) MarshalJSON() ([]byte, error) {
25754	objectMap := make(map[string]interface{})
25755	populate(objectMap, "name", s.Name)
25756	populate(objectMap, "type", s.Type)
25757	if s.AdditionalProperties != nil {
25758		for key, val := range s.AdditionalProperties {
25759			objectMap[key] = val
25760		}
25761	}
25762	return json.Marshal(objectMap)
25763}
25764
25765// UnmarshalJSON implements the json.Unmarshaller interface for type SQLConnection.
25766func (s *SQLConnection) UnmarshalJSON(data []byte) error {
25767	var rawMsg map[string]json.RawMessage
25768	if err := json.Unmarshal(data, &rawMsg); err != nil {
25769		return err
25770	}
25771	for key, val := range rawMsg {
25772		var err error
25773		switch key {
25774		case "name":
25775			err = unpopulate(val, &s.Name)
25776			delete(rawMsg, key)
25777		case "type":
25778			err = unpopulate(val, &s.Type)
25779			delete(rawMsg, key)
25780		default:
25781			if s.AdditionalProperties == nil {
25782				s.AdditionalProperties = map[string]interface{}{}
25783			}
25784			if val != nil {
25785				var aux interface{}
25786				err = json.Unmarshal(val, &aux)
25787				s.AdditionalProperties[key] = aux
25788			}
25789			delete(rawMsg, key)
25790		}
25791		if err != nil {
25792			return err
25793		}
25794	}
25795	return nil
25796}
25797
25798// SQLDWSink - A copy activity SQL Data Warehouse sink.
25799type SQLDWSink struct {
25800	CopySink
25801	// Indicates to use Copy Command to copy data into SQL Data Warehouse. Type: boolean (or Expression with resultType boolean).
25802	AllowCopyCommand interface{} `json:"allowCopyCommand,omitempty"`
25803
25804	// Indicates to use PolyBase to copy data into SQL Data Warehouse when applicable. Type: boolean (or Expression with resultType boolean).
25805	AllowPolyBase interface{} `json:"allowPolyBase,omitempty"`
25806
25807	// Specifies Copy Command related settings when allowCopyCommand is true.
25808	CopyCommandSettings *DWCopyCommandSettings `json:"copyCommandSettings,omitempty"`
25809
25810	// Specifies PolyBase-related settings when allowPolyBase is true.
25811	PolyBaseSettings *PolybaseSettings `json:"polyBaseSettings,omitempty"`
25812
25813	// SQL pre-copy script. Type: string (or Expression with resultType string).
25814	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
25815
25816	// The option to handle sink table, such as autoCreate. For now only 'autoCreate' value is supported. Type: string (or Expression with resultType string).
25817	TableOption interface{} `json:"tableOption,omitempty"`
25818}
25819
25820// MarshalJSON implements the json.Marshaller interface for type SQLDWSink.
25821func (s SQLDWSink) MarshalJSON() ([]byte, error) {
25822	objectMap := s.CopySink.marshalInternal("SqlDWSink")
25823	populate(objectMap, "allowCopyCommand", s.AllowCopyCommand)
25824	populate(objectMap, "allowPolyBase", s.AllowPolyBase)
25825	populate(objectMap, "copyCommandSettings", s.CopyCommandSettings)
25826	populate(objectMap, "polyBaseSettings", s.PolyBaseSettings)
25827	populate(objectMap, "preCopyScript", s.PreCopyScript)
25828	populate(objectMap, "tableOption", s.TableOption)
25829	return json.Marshal(objectMap)
25830}
25831
25832// UnmarshalJSON implements the json.Unmarshaller interface for type SQLDWSink.
25833func (s *SQLDWSink) UnmarshalJSON(data []byte) error {
25834	var rawMsg map[string]json.RawMessage
25835	if err := json.Unmarshal(data, &rawMsg); err != nil {
25836		return err
25837	}
25838	for key, val := range rawMsg {
25839		var err error
25840		switch key {
25841		case "allowCopyCommand":
25842			err = unpopulate(val, &s.AllowCopyCommand)
25843			delete(rawMsg, key)
25844		case "allowPolyBase":
25845			err = unpopulate(val, &s.AllowPolyBase)
25846			delete(rawMsg, key)
25847		case "copyCommandSettings":
25848			err = unpopulate(val, &s.CopyCommandSettings)
25849			delete(rawMsg, key)
25850		case "polyBaseSettings":
25851			err = unpopulate(val, &s.PolyBaseSettings)
25852			delete(rawMsg, key)
25853		case "preCopyScript":
25854			err = unpopulate(val, &s.PreCopyScript)
25855			delete(rawMsg, key)
25856		case "tableOption":
25857			err = unpopulate(val, &s.TableOption)
25858			delete(rawMsg, key)
25859		}
25860		if err != nil {
25861			return err
25862		}
25863	}
25864	return s.CopySink.unmarshalInternal(rawMsg)
25865}
25866
25867// SQLDWSource - A copy activity SQL Data Warehouse source.
25868type SQLDWSource struct {
25869	TabularSource
25870	// The partition mechanism that will be used for Sql read in parallel. Possible values include: "None", "PhysicalPartitionsOfTable", "DynamicRange".
25871	PartitionOption interface{} `json:"partitionOption,omitempty"`
25872
25873	// The settings that will be leveraged for Sql source partitioning.
25874	PartitionSettings *SQLPartitionSettings `json:"partitionSettings,omitempty"`
25875
25876	// SQL Data Warehouse reader query. Type: string (or Expression with resultType string).
25877	SQLReaderQuery interface{} `json:"sqlReaderQuery,omitempty"`
25878
25879	// Name of the stored procedure for a SQL Data Warehouse source. This cannot be used at the same time as SqlReaderQuery. Type: string (or Expression with
25880	// resultType string).
25881	SQLReaderStoredProcedureName interface{} `json:"sqlReaderStoredProcedureName,omitempty"`
25882
25883	// Value and type setting for stored procedure parameters. Example: "{Parameter1: {value: "1", type: "int"}}". Type: object (or Expression with resultType
25884	// object), itemType: StoredProcedureParameter.
25885	StoredProcedureParameters interface{} `json:"storedProcedureParameters,omitempty"`
25886}
25887
25888// MarshalJSON implements the json.Marshaller interface for type SQLDWSource.
25889func (s SQLDWSource) MarshalJSON() ([]byte, error) {
25890	objectMap := s.TabularSource.marshalInternal("SqlDWSource")
25891	populate(objectMap, "partitionOption", s.PartitionOption)
25892	populate(objectMap, "partitionSettings", s.PartitionSettings)
25893	populate(objectMap, "sqlReaderQuery", s.SQLReaderQuery)
25894	populate(objectMap, "sqlReaderStoredProcedureName", s.SQLReaderStoredProcedureName)
25895	populate(objectMap, "storedProcedureParameters", s.StoredProcedureParameters)
25896	return json.Marshal(objectMap)
25897}
25898
25899// UnmarshalJSON implements the json.Unmarshaller interface for type SQLDWSource.
25900func (s *SQLDWSource) UnmarshalJSON(data []byte) error {
25901	var rawMsg map[string]json.RawMessage
25902	if err := json.Unmarshal(data, &rawMsg); err != nil {
25903		return err
25904	}
25905	for key, val := range rawMsg {
25906		var err error
25907		switch key {
25908		case "partitionOption":
25909			err = unpopulate(val, &s.PartitionOption)
25910			delete(rawMsg, key)
25911		case "partitionSettings":
25912			err = unpopulate(val, &s.PartitionSettings)
25913			delete(rawMsg, key)
25914		case "sqlReaderQuery":
25915			err = unpopulate(val, &s.SQLReaderQuery)
25916			delete(rawMsg, key)
25917		case "sqlReaderStoredProcedureName":
25918			err = unpopulate(val, &s.SQLReaderStoredProcedureName)
25919			delete(rawMsg, key)
25920		case "storedProcedureParameters":
25921			err = unpopulate(val, &s.StoredProcedureParameters)
25922			delete(rawMsg, key)
25923		}
25924		if err != nil {
25925			return err
25926		}
25927	}
25928	return s.TabularSource.unmarshalInternal(rawMsg)
25929}
25930
25931// SQLMISink - A copy activity Azure SQL Managed Instance sink.
25932type SQLMISink struct {
25933	CopySink
25934	// SQL pre-copy script. Type: string (or Expression with resultType string).
25935	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
25936
25937	// SQL writer stored procedure name. Type: string (or Expression with resultType string).
25938	SQLWriterStoredProcedureName interface{} `json:"sqlWriterStoredProcedureName,omitempty"`
25939
25940	// SQL writer table type. Type: string (or Expression with resultType string).
25941	SQLWriterTableType interface{} `json:"sqlWriterTableType,omitempty"`
25942
25943	// SQL stored procedure parameters.
25944	StoredProcedureParameters map[string]*StoredProcedureParameter `json:"storedProcedureParameters,omitempty"`
25945
25946	// The stored procedure parameter name of the table type. Type: string (or Expression with resultType string).
25947	StoredProcedureTableTypeParameterName interface{} `json:"storedProcedureTableTypeParameterName,omitempty"`
25948
25949	// The option to handle sink table, such as autoCreate. For now only 'autoCreate' value is supported. Type: string (or Expression with resultType string).
25950	TableOption interface{} `json:"tableOption,omitempty"`
25951}
25952
25953// MarshalJSON implements the json.Marshaller interface for type SQLMISink.
25954func (s SQLMISink) MarshalJSON() ([]byte, error) {
25955	objectMap := s.CopySink.marshalInternal("SqlMISink")
25956	populate(objectMap, "preCopyScript", s.PreCopyScript)
25957	populate(objectMap, "sqlWriterStoredProcedureName", s.SQLWriterStoredProcedureName)
25958	populate(objectMap, "sqlWriterTableType", s.SQLWriterTableType)
25959	populate(objectMap, "storedProcedureParameters", s.StoredProcedureParameters)
25960	populate(objectMap, "storedProcedureTableTypeParameterName", s.StoredProcedureTableTypeParameterName)
25961	populate(objectMap, "tableOption", s.TableOption)
25962	return json.Marshal(objectMap)
25963}
25964
25965// UnmarshalJSON implements the json.Unmarshaller interface for type SQLMISink.
25966func (s *SQLMISink) UnmarshalJSON(data []byte) error {
25967	var rawMsg map[string]json.RawMessage
25968	if err := json.Unmarshal(data, &rawMsg); err != nil {
25969		return err
25970	}
25971	for key, val := range rawMsg {
25972		var err error
25973		switch key {
25974		case "preCopyScript":
25975			err = unpopulate(val, &s.PreCopyScript)
25976			delete(rawMsg, key)
25977		case "sqlWriterStoredProcedureName":
25978			err = unpopulate(val, &s.SQLWriterStoredProcedureName)
25979			delete(rawMsg, key)
25980		case "sqlWriterTableType":
25981			err = unpopulate(val, &s.SQLWriterTableType)
25982			delete(rawMsg, key)
25983		case "storedProcedureParameters":
25984			err = unpopulate(val, &s.StoredProcedureParameters)
25985			delete(rawMsg, key)
25986		case "storedProcedureTableTypeParameterName":
25987			err = unpopulate(val, &s.StoredProcedureTableTypeParameterName)
25988			delete(rawMsg, key)
25989		case "tableOption":
25990			err = unpopulate(val, &s.TableOption)
25991			delete(rawMsg, key)
25992		}
25993		if err != nil {
25994			return err
25995		}
25996	}
25997	return s.CopySink.unmarshalInternal(rawMsg)
25998}
25999
26000// SQLMISource - A copy activity Azure SQL Managed Instance source.
26001type SQLMISource struct {
26002	TabularSource
26003	// The partition mechanism that will be used for Sql read in parallel. Possible values include: "None", "PhysicalPartitionsOfTable", "DynamicRange".
26004	PartitionOption interface{} `json:"partitionOption,omitempty"`
26005
26006	// The settings that will be leveraged for Sql source partitioning.
26007	PartitionSettings *SQLPartitionSettings `json:"partitionSettings,omitempty"`
26008
26009	// Which additional types to produce.
26010	ProduceAdditionalTypes interface{} `json:"produceAdditionalTypes,omitempty"`
26011
26012	// SQL reader query. Type: string (or Expression with resultType string).
26013	SQLReaderQuery interface{} `json:"sqlReaderQuery,omitempty"`
26014
26015	// Name of the stored procedure for a Azure SQL Managed Instance source. This cannot be used at the same time as SqlReaderQuery. Type: string (or Expression
26016	// with resultType string).
26017	SQLReaderStoredProcedureName interface{} `json:"sqlReaderStoredProcedureName,omitempty"`
26018
26019	// Value and type setting for stored procedure parameters. Example: "{Parameter1: {value: "1", type: "int"}}".
26020	StoredProcedureParameters map[string]*StoredProcedureParameter `json:"storedProcedureParameters,omitempty"`
26021}
26022
26023// MarshalJSON implements the json.Marshaller interface for type SQLMISource.
26024func (s SQLMISource) MarshalJSON() ([]byte, error) {
26025	objectMap := s.TabularSource.marshalInternal("SqlMISource")
26026	populate(objectMap, "partitionOption", s.PartitionOption)
26027	populate(objectMap, "partitionSettings", s.PartitionSettings)
26028	populate(objectMap, "produceAdditionalTypes", s.ProduceAdditionalTypes)
26029	populate(objectMap, "sqlReaderQuery", s.SQLReaderQuery)
26030	populate(objectMap, "sqlReaderStoredProcedureName", s.SQLReaderStoredProcedureName)
26031	populate(objectMap, "storedProcedureParameters", s.StoredProcedureParameters)
26032	return json.Marshal(objectMap)
26033}
26034
26035// UnmarshalJSON implements the json.Unmarshaller interface for type SQLMISource.
26036func (s *SQLMISource) UnmarshalJSON(data []byte) error {
26037	var rawMsg map[string]json.RawMessage
26038	if err := json.Unmarshal(data, &rawMsg); err != nil {
26039		return err
26040	}
26041	for key, val := range rawMsg {
26042		var err error
26043		switch key {
26044		case "partitionOption":
26045			err = unpopulate(val, &s.PartitionOption)
26046			delete(rawMsg, key)
26047		case "partitionSettings":
26048			err = unpopulate(val, &s.PartitionSettings)
26049			delete(rawMsg, key)
26050		case "produceAdditionalTypes":
26051			err = unpopulate(val, &s.ProduceAdditionalTypes)
26052			delete(rawMsg, key)
26053		case "sqlReaderQuery":
26054			err = unpopulate(val, &s.SQLReaderQuery)
26055			delete(rawMsg, key)
26056		case "sqlReaderStoredProcedureName":
26057			err = unpopulate(val, &s.SQLReaderStoredProcedureName)
26058			delete(rawMsg, key)
26059		case "storedProcedureParameters":
26060			err = unpopulate(val, &s.StoredProcedureParameters)
26061			delete(rawMsg, key)
26062		}
26063		if err != nil {
26064			return err
26065		}
26066	}
26067	return s.TabularSource.unmarshalInternal(rawMsg)
26068}
26069
26070// SQLPartitionSettings - The settings that will be leveraged for Sql source partitioning.
26071type SQLPartitionSettings struct {
26072	// The name of the column in integer or datetime type that will be used for proceeding partitioning. If not specified, the primary key of the table is auto-detected
26073	// and used as the partition column.
26074	// Type: string (or Expression with resultType string).
26075	PartitionColumnName interface{} `json:"partitionColumnName,omitempty"`
26076
26077	// The minimum value of the partition column for partition range splitting. This value is used to decide the partition stride, not for filtering the rows
26078	// in table. All rows in the table or query result
26079	// will be partitioned and copied. Type: string (or Expression with resultType string).
26080	PartitionLowerBound interface{} `json:"partitionLowerBound,omitempty"`
26081
26082	// The maximum value of the partition column for partition range splitting. This value is used to decide the partition stride, not for filtering the rows
26083	// in table. All rows in the table or query result
26084	// will be partitioned and copied. Type: string (or Expression with resultType string).
26085	PartitionUpperBound interface{} `json:"partitionUpperBound,omitempty"`
26086}
26087
26088// SQLPool - A SQL Analytics pool
26089type SQLPool struct {
26090	TrackedResource
26091	// SQL pool properties
26092	Properties *SQLPoolResourceProperties `json:"properties,omitempty"`
26093
26094	// SQL pool SKU
26095	SKU *SKU `json:"sku,omitempty"`
26096}
26097
26098// MarshalJSON implements the json.Marshaller interface for type SQLPool.
26099func (s SQLPool) MarshalJSON() ([]byte, error) {
26100	objectMap := s.TrackedResource.marshalInternal()
26101	populate(objectMap, "properties", s.Properties)
26102	populate(objectMap, "sku", s.SKU)
26103	return json.Marshal(objectMap)
26104}
26105
26106// SQLPoolInfoListResult - List of SQL pools
26107type SQLPoolInfoListResult struct {
26108	// Link to the next page of results
26109	NextLink *string `json:"nextLink,omitempty"`
26110
26111	// List of SQL pools
26112	Value []*SQLPool `json:"value,omitempty"`
26113}
26114
26115// MarshalJSON implements the json.Marshaller interface for type SQLPoolInfoListResult.
26116func (s SQLPoolInfoListResult) MarshalJSON() ([]byte, error) {
26117	objectMap := make(map[string]interface{})
26118	populate(objectMap, "nextLink", s.NextLink)
26119	populate(objectMap, "value", s.Value)
26120	return json.Marshal(objectMap)
26121}
26122
26123// SQLPoolReference - SQL pool reference type.
26124type SQLPoolReference struct {
26125	// REQUIRED; Reference SQL pool name.
26126	ReferenceName *string `json:"referenceName,omitempty"`
26127
26128	// REQUIRED; SQL pool reference type.
26129	Type *SQLPoolReferenceType `json:"type,omitempty"`
26130}
26131
26132// SQLPoolResourceProperties - Properties of a SQL Analytics pool
26133type SQLPoolResourceProperties struct {
26134	// Collation mode
26135	Collation *string `json:"collation,omitempty"`
26136
26137	// What is this?
26138	CreateMode *string `json:"createMode,omitempty"`
26139
26140	// Date the SQL pool was created
26141	CreationDate *time.Time `json:"creationDate,omitempty"`
26142
26143	// Maximum size in bytes
26144	MaxSizeBytes *int64 `json:"maxSizeBytes,omitempty"`
26145
26146	// Resource state
26147	ProvisioningState *string `json:"provisioningState,omitempty"`
26148
26149	// Backup database to restore from
26150	RecoverableDatabaseID *string `json:"recoverableDatabaseId,omitempty"`
26151
26152	// Snapshot time to restore
26153	RestorePointInTime *string `json:"restorePointInTime,omitempty"`
26154
26155	// Source database to create from
26156	SourceDatabaseID *string `json:"sourceDatabaseId,omitempty"`
26157
26158	// Resource status
26159	Status *string `json:"status,omitempty"`
26160}
26161
26162// MarshalJSON implements the json.Marshaller interface for type SQLPoolResourceProperties.
26163func (s SQLPoolResourceProperties) MarshalJSON() ([]byte, error) {
26164	objectMap := make(map[string]interface{})
26165	populate(objectMap, "collation", s.Collation)
26166	populate(objectMap, "createMode", s.CreateMode)
26167	populate(objectMap, "creationDate", (*timeRFC3339)(s.CreationDate))
26168	populate(objectMap, "maxSizeBytes", s.MaxSizeBytes)
26169	populate(objectMap, "provisioningState", s.ProvisioningState)
26170	populate(objectMap, "recoverableDatabaseId", s.RecoverableDatabaseID)
26171	populate(objectMap, "restorePointInTime", s.RestorePointInTime)
26172	populate(objectMap, "sourceDatabaseId", s.SourceDatabaseID)
26173	populate(objectMap, "status", s.Status)
26174	return json.Marshal(objectMap)
26175}
26176
26177// UnmarshalJSON implements the json.Unmarshaller interface for type SQLPoolResourceProperties.
26178func (s *SQLPoolResourceProperties) UnmarshalJSON(data []byte) error {
26179	var rawMsg map[string]json.RawMessage
26180	if err := json.Unmarshal(data, &rawMsg); err != nil {
26181		return err
26182	}
26183	for key, val := range rawMsg {
26184		var err error
26185		switch key {
26186		case "collation":
26187			err = unpopulate(val, &s.Collation)
26188			delete(rawMsg, key)
26189		case "createMode":
26190			err = unpopulate(val, &s.CreateMode)
26191			delete(rawMsg, key)
26192		case "creationDate":
26193			var aux timeRFC3339
26194			err = unpopulate(val, &aux)
26195			s.CreationDate = (*time.Time)(&aux)
26196			delete(rawMsg, key)
26197		case "maxSizeBytes":
26198			err = unpopulate(val, &s.MaxSizeBytes)
26199			delete(rawMsg, key)
26200		case "provisioningState":
26201			err = unpopulate(val, &s.ProvisioningState)
26202			delete(rawMsg, key)
26203		case "recoverableDatabaseId":
26204			err = unpopulate(val, &s.RecoverableDatabaseID)
26205			delete(rawMsg, key)
26206		case "restorePointInTime":
26207			err = unpopulate(val, &s.RestorePointInTime)
26208			delete(rawMsg, key)
26209		case "sourceDatabaseId":
26210			err = unpopulate(val, &s.SourceDatabaseID)
26211			delete(rawMsg, key)
26212		case "status":
26213			err = unpopulate(val, &s.Status)
26214			delete(rawMsg, key)
26215		}
26216		if err != nil {
26217			return err
26218		}
26219	}
26220	return nil
26221}
26222
26223// SQLPoolStoredProcedureActivity - Execute SQL pool stored procedure activity.
26224type SQLPoolStoredProcedureActivity struct {
26225	Activity
26226	// REQUIRED; SQL pool stored procedure reference.
26227	SQLPool *SQLPoolReference `json:"sqlPool,omitempty"`
26228
26229	// REQUIRED; Execute SQL pool stored procedure activity properties.
26230	TypeProperties *SQLPoolStoredProcedureActivityTypeProperties `json:"typeProperties,omitempty"`
26231}
26232
26233// MarshalJSON implements the json.Marshaller interface for type SQLPoolStoredProcedureActivity.
26234func (s SQLPoolStoredProcedureActivity) MarshalJSON() ([]byte, error) {
26235	objectMap := s.Activity.marshalInternal("SqlPoolStoredProcedure")
26236	populate(objectMap, "sqlPool", s.SQLPool)
26237	populate(objectMap, "typeProperties", s.TypeProperties)
26238	return json.Marshal(objectMap)
26239}
26240
26241// UnmarshalJSON implements the json.Unmarshaller interface for type SQLPoolStoredProcedureActivity.
26242func (s *SQLPoolStoredProcedureActivity) UnmarshalJSON(data []byte) error {
26243	var rawMsg map[string]json.RawMessage
26244	if err := json.Unmarshal(data, &rawMsg); err != nil {
26245		return err
26246	}
26247	for key, val := range rawMsg {
26248		var err error
26249		switch key {
26250		case "sqlPool":
26251			err = unpopulate(val, &s.SQLPool)
26252			delete(rawMsg, key)
26253		case "typeProperties":
26254			err = unpopulate(val, &s.TypeProperties)
26255			delete(rawMsg, key)
26256		}
26257		if err != nil {
26258			return err
26259		}
26260	}
26261	return s.Activity.unmarshalInternal(rawMsg)
26262}
26263
26264// SQLPoolStoredProcedureActivityTypeProperties - SQL stored procedure activity properties.
26265type SQLPoolStoredProcedureActivityTypeProperties struct {
26266	// REQUIRED; Stored procedure name. Type: string (or Expression with resultType string).
26267	StoredProcedureName interface{} `json:"storedProcedureName,omitempty"`
26268
26269	// Value and type setting for stored procedure parameters. Example: "{Parameter1: {value: "1", type: "int"}}".
26270	StoredProcedureParameters map[string]*StoredProcedureParameter `json:"storedProcedureParameters,omitempty"`
26271}
26272
26273// MarshalJSON implements the json.Marshaller interface for type SQLPoolStoredProcedureActivityTypeProperties.
26274func (s SQLPoolStoredProcedureActivityTypeProperties) MarshalJSON() ([]byte, error) {
26275	objectMap := make(map[string]interface{})
26276	populate(objectMap, "storedProcedureName", s.StoredProcedureName)
26277	populate(objectMap, "storedProcedureParameters", s.StoredProcedureParameters)
26278	return json.Marshal(objectMap)
26279}
26280
26281// SQLPoolsGetOptions contains the optional parameters for the SQLPools.Get method.
26282type SQLPoolsGetOptions struct {
26283	// placeholder for future optional parameters
26284}
26285
26286// SQLPoolsListOptions contains the optional parameters for the SQLPools.List method.
26287type SQLPoolsListOptions struct {
26288	// placeholder for future optional parameters
26289}
26290
26291// SQLScript - SQL script.
26292type SQLScript struct {
26293	// REQUIRED; The content of the SQL script.
26294	Content *SQLScriptContent `json:"content,omitempty"`
26295
26296	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
26297	AdditionalProperties map[string]interface{}
26298
26299	// The description of the SQL script.
26300	Description *string `json:"description,omitempty"`
26301
26302	// The type of the SQL script.
26303	Type *SQLScriptType `json:"type,omitempty"`
26304}
26305
26306// MarshalJSON implements the json.Marshaller interface for type SQLScript.
26307func (s SQLScript) MarshalJSON() ([]byte, error) {
26308	objectMap := make(map[string]interface{})
26309	populate(objectMap, "content", s.Content)
26310	populate(objectMap, "description", s.Description)
26311	populate(objectMap, "type", s.Type)
26312	if s.AdditionalProperties != nil {
26313		for key, val := range s.AdditionalProperties {
26314			objectMap[key] = val
26315		}
26316	}
26317	return json.Marshal(objectMap)
26318}
26319
26320// UnmarshalJSON implements the json.Unmarshaller interface for type SQLScript.
26321func (s *SQLScript) UnmarshalJSON(data []byte) error {
26322	var rawMsg map[string]json.RawMessage
26323	if err := json.Unmarshal(data, &rawMsg); err != nil {
26324		return err
26325	}
26326	for key, val := range rawMsg {
26327		var err error
26328		switch key {
26329		case "content":
26330			err = unpopulate(val, &s.Content)
26331			delete(rawMsg, key)
26332		case "description":
26333			err = unpopulate(val, &s.Description)
26334			delete(rawMsg, key)
26335		case "type":
26336			err = unpopulate(val, &s.Type)
26337			delete(rawMsg, key)
26338		default:
26339			if s.AdditionalProperties == nil {
26340				s.AdditionalProperties = map[string]interface{}{}
26341			}
26342			if val != nil {
26343				var aux interface{}
26344				err = json.Unmarshal(val, &aux)
26345				s.AdditionalProperties[key] = aux
26346			}
26347			delete(rawMsg, key)
26348		}
26349		if err != nil {
26350			return err
26351		}
26352	}
26353	return nil
26354}
26355
26356// SQLScriptBeginCreateOrUpdateSQLScriptOptions contains the optional parameters for the SQLScript.BeginCreateOrUpdateSQLScript method.
26357type SQLScriptBeginCreateOrUpdateSQLScriptOptions struct {
26358	// ETag of the SQL script entity. Should only be specified for update, for which it should match existing entity or can be * for unconditional update.
26359	IfMatch *string
26360}
26361
26362// SQLScriptBeginDeleteSQLScriptOptions contains the optional parameters for the SQLScript.BeginDeleteSQLScript method.
26363type SQLScriptBeginDeleteSQLScriptOptions struct {
26364	// placeholder for future optional parameters
26365}
26366
26367// SQLScriptBeginRenameSQLScriptOptions contains the optional parameters for the SQLScript.BeginRenameSQLScript method.
26368type SQLScriptBeginRenameSQLScriptOptions struct {
26369	// placeholder for future optional parameters
26370}
26371
26372// SQLScriptContent - The content of the SQL script.
26373type SQLScriptContent struct {
26374	// REQUIRED; The connection used to execute the SQL script.
26375	CurrentConnection *SQLConnection `json:"currentConnection,omitempty"`
26376
26377	// REQUIRED; SQL query to execute.
26378	Query *string `json:"query,omitempty"`
26379
26380	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
26381	AdditionalProperties map[string]interface{}
26382
26383	// The metadata of the SQL script.
26384	Metadata *SQLScriptMetadata `json:"metadata,omitempty"`
26385}
26386
26387// MarshalJSON implements the json.Marshaller interface for type SQLScriptContent.
26388func (s SQLScriptContent) MarshalJSON() ([]byte, error) {
26389	objectMap := make(map[string]interface{})
26390	populate(objectMap, "currentConnection", s.CurrentConnection)
26391	populate(objectMap, "metadata", s.Metadata)
26392	populate(objectMap, "query", s.Query)
26393	if s.AdditionalProperties != nil {
26394		for key, val := range s.AdditionalProperties {
26395			objectMap[key] = val
26396		}
26397	}
26398	return json.Marshal(objectMap)
26399}
26400
26401// UnmarshalJSON implements the json.Unmarshaller interface for type SQLScriptContent.
26402func (s *SQLScriptContent) UnmarshalJSON(data []byte) error {
26403	var rawMsg map[string]json.RawMessage
26404	if err := json.Unmarshal(data, &rawMsg); err != nil {
26405		return err
26406	}
26407	for key, val := range rawMsg {
26408		var err error
26409		switch key {
26410		case "currentConnection":
26411			err = unpopulate(val, &s.CurrentConnection)
26412			delete(rawMsg, key)
26413		case "metadata":
26414			err = unpopulate(val, &s.Metadata)
26415			delete(rawMsg, key)
26416		case "query":
26417			err = unpopulate(val, &s.Query)
26418			delete(rawMsg, key)
26419		default:
26420			if s.AdditionalProperties == nil {
26421				s.AdditionalProperties = map[string]interface{}{}
26422			}
26423			if val != nil {
26424				var aux interface{}
26425				err = json.Unmarshal(val, &aux)
26426				s.AdditionalProperties[key] = aux
26427			}
26428			delete(rawMsg, key)
26429		}
26430		if err != nil {
26431			return err
26432		}
26433	}
26434	return nil
26435}
26436
26437// SQLScriptGetSQLScriptOptions contains the optional parameters for the SQLScript.GetSQLScript method.
26438type SQLScriptGetSQLScriptOptions struct {
26439	// ETag of the sql compute entity. Should only be specified for get. If the ETag matches the existing entity tag, or if * was provided, then no content
26440	// will be returned.
26441	IfNoneMatch *string
26442}
26443
26444// SQLScriptGetSQLScriptsByWorkspaceOptions contains the optional parameters for the SQLScript.GetSQLScriptsByWorkspace method.
26445type SQLScriptGetSQLScriptsByWorkspaceOptions struct {
26446	// placeholder for future optional parameters
26447}
26448
26449// SQLScriptMetadata - The metadata of the SQL script.
26450type SQLScriptMetadata struct {
26451	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
26452	AdditionalProperties map[string]interface{}
26453
26454	// The language of the SQL script.
26455	Language *string `json:"language,omitempty"`
26456}
26457
26458// MarshalJSON implements the json.Marshaller interface for type SQLScriptMetadata.
26459func (s SQLScriptMetadata) MarshalJSON() ([]byte, error) {
26460	objectMap := make(map[string]interface{})
26461	populate(objectMap, "language", s.Language)
26462	if s.AdditionalProperties != nil {
26463		for key, val := range s.AdditionalProperties {
26464			objectMap[key] = val
26465		}
26466	}
26467	return json.Marshal(objectMap)
26468}
26469
26470// UnmarshalJSON implements the json.Unmarshaller interface for type SQLScriptMetadata.
26471func (s *SQLScriptMetadata) UnmarshalJSON(data []byte) error {
26472	var rawMsg map[string]json.RawMessage
26473	if err := json.Unmarshal(data, &rawMsg); err != nil {
26474		return err
26475	}
26476	for key, val := range rawMsg {
26477		var err error
26478		switch key {
26479		case "language":
26480			err = unpopulate(val, &s.Language)
26481			delete(rawMsg, key)
26482		default:
26483			if s.AdditionalProperties == nil {
26484				s.AdditionalProperties = map[string]interface{}{}
26485			}
26486			if val != nil {
26487				var aux interface{}
26488				err = json.Unmarshal(val, &aux)
26489				s.AdditionalProperties[key] = aux
26490			}
26491			delete(rawMsg, key)
26492		}
26493		if err != nil {
26494			return err
26495		}
26496	}
26497	return nil
26498}
26499
26500// SQLScriptResource - Sql Script resource type.
26501type SQLScriptResource struct {
26502	// REQUIRED; The name of the resource
26503	Name *string `json:"name,omitempty"`
26504
26505	// REQUIRED; Properties of sql script.
26506	Properties *SQLScript `json:"properties,omitempty"`
26507
26508	// READ-ONLY; Resource Etag.
26509	Etag *string `json:"etag,omitempty" azure:"ro"`
26510
26511	// READ-ONLY; Fully qualified resource Id for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
26512	ID *string `json:"id,omitempty" azure:"ro"`
26513
26514	// READ-ONLY; The type of the resource. Ex- Microsoft.Compute/virtualMachines or Microsoft.Storage/storageAccounts.
26515	Type *string `json:"type,omitempty" azure:"ro"`
26516}
26517
26518// SQLScriptsListResponse - A list of sql scripts resources.
26519type SQLScriptsListResponse struct {
26520	// REQUIRED; List of sql scripts.
26521	Value []*SQLScriptResource `json:"value,omitempty"`
26522
26523	// The link to the next page of results, if any remaining results exist.
26524	NextLink *string `json:"nextLink,omitempty"`
26525}
26526
26527// MarshalJSON implements the json.Marshaller interface for type SQLScriptsListResponse.
26528func (s SQLScriptsListResponse) MarshalJSON() ([]byte, error) {
26529	objectMap := make(map[string]interface{})
26530	populate(objectMap, "nextLink", s.NextLink)
26531	populate(objectMap, "value", s.Value)
26532	return json.Marshal(objectMap)
26533}
26534
26535// SQLServerLinkedService - SQL Server linked service.
26536type SQLServerLinkedService struct {
26537	LinkedService
26538	// REQUIRED; SQL Server linked service properties.
26539	TypeProperties *SQLServerLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
26540}
26541
26542// MarshalJSON implements the json.Marshaller interface for type SQLServerLinkedService.
26543func (s SQLServerLinkedService) MarshalJSON() ([]byte, error) {
26544	objectMap := s.LinkedService.marshalInternal("SqlServer")
26545	populate(objectMap, "typeProperties", s.TypeProperties)
26546	return json.Marshal(objectMap)
26547}
26548
26549// UnmarshalJSON implements the json.Unmarshaller interface for type SQLServerLinkedService.
26550func (s *SQLServerLinkedService) UnmarshalJSON(data []byte) error {
26551	var rawMsg map[string]json.RawMessage
26552	if err := json.Unmarshal(data, &rawMsg); err != nil {
26553		return err
26554	}
26555	for key, val := range rawMsg {
26556		var err error
26557		switch key {
26558		case "typeProperties":
26559			err = unpopulate(val, &s.TypeProperties)
26560			delete(rawMsg, key)
26561		}
26562		if err != nil {
26563			return err
26564		}
26565	}
26566	return s.LinkedService.unmarshalInternal(rawMsg)
26567}
26568
26569// SQLServerLinkedServiceTypeProperties - SQL Server linked service properties.
26570type SQLServerLinkedServiceTypeProperties struct {
26571	// REQUIRED; The connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
26572	ConnectionString interface{} `json:"connectionString,omitempty"`
26573
26574	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
26575	// with resultType string).
26576	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
26577
26578	// The on-premises Windows authentication password.
26579	Password SecretBaseClassification `json:"password,omitempty"`
26580
26581	// The on-premises Windows authentication user name. Type: string (or Expression with resultType string).
26582	UserName interface{} `json:"userName,omitempty"`
26583}
26584
26585// MarshalJSON implements the json.Marshaller interface for type SQLServerLinkedServiceTypeProperties.
26586func (s SQLServerLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
26587	objectMap := make(map[string]interface{})
26588	populate(objectMap, "connectionString", s.ConnectionString)
26589	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
26590	populate(objectMap, "password", s.Password)
26591	populate(objectMap, "userName", s.UserName)
26592	return json.Marshal(objectMap)
26593}
26594
26595// UnmarshalJSON implements the json.Unmarshaller interface for type SQLServerLinkedServiceTypeProperties.
26596func (s *SQLServerLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
26597	var rawMsg map[string]json.RawMessage
26598	if err := json.Unmarshal(data, &rawMsg); err != nil {
26599		return err
26600	}
26601	for key, val := range rawMsg {
26602		var err error
26603		switch key {
26604		case "connectionString":
26605			err = unpopulate(val, &s.ConnectionString)
26606			delete(rawMsg, key)
26607		case "encryptedCredential":
26608			err = unpopulate(val, &s.EncryptedCredential)
26609			delete(rawMsg, key)
26610		case "password":
26611			s.Password, err = unmarshalSecretBaseClassification(val)
26612			delete(rawMsg, key)
26613		case "userName":
26614			err = unpopulate(val, &s.UserName)
26615			delete(rawMsg, key)
26616		}
26617		if err != nil {
26618			return err
26619		}
26620	}
26621	return nil
26622}
26623
26624// SQLServerSink - A copy activity SQL server sink.
26625type SQLServerSink struct {
26626	CopySink
26627	// SQL pre-copy script. Type: string (or Expression with resultType string).
26628	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
26629
26630	// SQL writer stored procedure name. Type: string (or Expression with resultType string).
26631	SQLWriterStoredProcedureName interface{} `json:"sqlWriterStoredProcedureName,omitempty"`
26632
26633	// SQL writer table type. Type: string (or Expression with resultType string).
26634	SQLWriterTableType interface{} `json:"sqlWriterTableType,omitempty"`
26635
26636	// SQL stored procedure parameters.
26637	StoredProcedureParameters map[string]*StoredProcedureParameter `json:"storedProcedureParameters,omitempty"`
26638
26639	// The stored procedure parameter name of the table type. Type: string (or Expression with resultType string).
26640	StoredProcedureTableTypeParameterName interface{} `json:"storedProcedureTableTypeParameterName,omitempty"`
26641
26642	// The option to handle sink table, such as autoCreate. For now only 'autoCreate' value is supported. Type: string (or Expression with resultType string).
26643	TableOption interface{} `json:"tableOption,omitempty"`
26644}
26645
26646// MarshalJSON implements the json.Marshaller interface for type SQLServerSink.
26647func (s SQLServerSink) MarshalJSON() ([]byte, error) {
26648	objectMap := s.CopySink.marshalInternal("SqlServerSink")
26649	populate(objectMap, "preCopyScript", s.PreCopyScript)
26650	populate(objectMap, "sqlWriterStoredProcedureName", s.SQLWriterStoredProcedureName)
26651	populate(objectMap, "sqlWriterTableType", s.SQLWriterTableType)
26652	populate(objectMap, "storedProcedureParameters", s.StoredProcedureParameters)
26653	populate(objectMap, "storedProcedureTableTypeParameterName", s.StoredProcedureTableTypeParameterName)
26654	populate(objectMap, "tableOption", s.TableOption)
26655	return json.Marshal(objectMap)
26656}
26657
26658// UnmarshalJSON implements the json.Unmarshaller interface for type SQLServerSink.
26659func (s *SQLServerSink) UnmarshalJSON(data []byte) error {
26660	var rawMsg map[string]json.RawMessage
26661	if err := json.Unmarshal(data, &rawMsg); err != nil {
26662		return err
26663	}
26664	for key, val := range rawMsg {
26665		var err error
26666		switch key {
26667		case "preCopyScript":
26668			err = unpopulate(val, &s.PreCopyScript)
26669			delete(rawMsg, key)
26670		case "sqlWriterStoredProcedureName":
26671			err = unpopulate(val, &s.SQLWriterStoredProcedureName)
26672			delete(rawMsg, key)
26673		case "sqlWriterTableType":
26674			err = unpopulate(val, &s.SQLWriterTableType)
26675			delete(rawMsg, key)
26676		case "storedProcedureParameters":
26677			err = unpopulate(val, &s.StoredProcedureParameters)
26678			delete(rawMsg, key)
26679		case "storedProcedureTableTypeParameterName":
26680			err = unpopulate(val, &s.StoredProcedureTableTypeParameterName)
26681			delete(rawMsg, key)
26682		case "tableOption":
26683			err = unpopulate(val, &s.TableOption)
26684			delete(rawMsg, key)
26685		}
26686		if err != nil {
26687			return err
26688		}
26689	}
26690	return s.CopySink.unmarshalInternal(rawMsg)
26691}
26692
26693// SQLServerSource - A copy activity SQL server source.
26694type SQLServerSource struct {
26695	TabularSource
26696	// The partition mechanism that will be used for Sql read in parallel. Possible values include: "None", "PhysicalPartitionsOfTable", "DynamicRange".
26697	PartitionOption interface{} `json:"partitionOption,omitempty"`
26698
26699	// The settings that will be leveraged for Sql source partitioning.
26700	PartitionSettings *SQLPartitionSettings `json:"partitionSettings,omitempty"`
26701
26702	// Which additional types to produce.
26703	ProduceAdditionalTypes interface{} `json:"produceAdditionalTypes,omitempty"`
26704
26705	// SQL reader query. Type: string (or Expression with resultType string).
26706	SQLReaderQuery interface{} `json:"sqlReaderQuery,omitempty"`
26707
26708	// Name of the stored procedure for a SQL Database source. This cannot be used at the same time as SqlReaderQuery. Type: string (or Expression with resultType
26709	// string).
26710	SQLReaderStoredProcedureName interface{} `json:"sqlReaderStoredProcedureName,omitempty"`
26711
26712	// Value and type setting for stored procedure parameters. Example: "{Parameter1: {value: "1", type: "int"}}".
26713	StoredProcedureParameters map[string]*StoredProcedureParameter `json:"storedProcedureParameters,omitempty"`
26714}
26715
26716// MarshalJSON implements the json.Marshaller interface for type SQLServerSource.
26717func (s SQLServerSource) MarshalJSON() ([]byte, error) {
26718	objectMap := s.TabularSource.marshalInternal("SqlServerSource")
26719	populate(objectMap, "partitionOption", s.PartitionOption)
26720	populate(objectMap, "partitionSettings", s.PartitionSettings)
26721	populate(objectMap, "produceAdditionalTypes", s.ProduceAdditionalTypes)
26722	populate(objectMap, "sqlReaderQuery", s.SQLReaderQuery)
26723	populate(objectMap, "sqlReaderStoredProcedureName", s.SQLReaderStoredProcedureName)
26724	populate(objectMap, "storedProcedureParameters", s.StoredProcedureParameters)
26725	return json.Marshal(objectMap)
26726}
26727
26728// UnmarshalJSON implements the json.Unmarshaller interface for type SQLServerSource.
26729func (s *SQLServerSource) UnmarshalJSON(data []byte) error {
26730	var rawMsg map[string]json.RawMessage
26731	if err := json.Unmarshal(data, &rawMsg); err != nil {
26732		return err
26733	}
26734	for key, val := range rawMsg {
26735		var err error
26736		switch key {
26737		case "partitionOption":
26738			err = unpopulate(val, &s.PartitionOption)
26739			delete(rawMsg, key)
26740		case "partitionSettings":
26741			err = unpopulate(val, &s.PartitionSettings)
26742			delete(rawMsg, key)
26743		case "produceAdditionalTypes":
26744			err = unpopulate(val, &s.ProduceAdditionalTypes)
26745			delete(rawMsg, key)
26746		case "sqlReaderQuery":
26747			err = unpopulate(val, &s.SQLReaderQuery)
26748			delete(rawMsg, key)
26749		case "sqlReaderStoredProcedureName":
26750			err = unpopulate(val, &s.SQLReaderStoredProcedureName)
26751			delete(rawMsg, key)
26752		case "storedProcedureParameters":
26753			err = unpopulate(val, &s.StoredProcedureParameters)
26754			delete(rawMsg, key)
26755		}
26756		if err != nil {
26757			return err
26758		}
26759	}
26760	return s.TabularSource.unmarshalInternal(rawMsg)
26761}
26762
26763// SQLServerStoredProcedureActivity - SQL stored procedure activity type.
26764type SQLServerStoredProcedureActivity struct {
26765	ExecutionActivity
26766	// REQUIRED; SQL stored procedure activity properties.
26767	TypeProperties *SQLServerStoredProcedureActivityTypeProperties `json:"typeProperties,omitempty"`
26768}
26769
26770// MarshalJSON implements the json.Marshaller interface for type SQLServerStoredProcedureActivity.
26771func (s SQLServerStoredProcedureActivity) MarshalJSON() ([]byte, error) {
26772	objectMap := s.ExecutionActivity.marshalInternal("SqlServerStoredProcedure")
26773	populate(objectMap, "typeProperties", s.TypeProperties)
26774	return json.Marshal(objectMap)
26775}
26776
26777// UnmarshalJSON implements the json.Unmarshaller interface for type SQLServerStoredProcedureActivity.
26778func (s *SQLServerStoredProcedureActivity) UnmarshalJSON(data []byte) error {
26779	var rawMsg map[string]json.RawMessage
26780	if err := json.Unmarshal(data, &rawMsg); err != nil {
26781		return err
26782	}
26783	for key, val := range rawMsg {
26784		var err error
26785		switch key {
26786		case "typeProperties":
26787			err = unpopulate(val, &s.TypeProperties)
26788			delete(rawMsg, key)
26789		}
26790		if err != nil {
26791			return err
26792		}
26793	}
26794	return s.ExecutionActivity.unmarshalInternal(rawMsg)
26795}
26796
26797// SQLServerStoredProcedureActivityTypeProperties - SQL stored procedure activity properties.
26798type SQLServerStoredProcedureActivityTypeProperties struct {
26799	// REQUIRED; Stored procedure name. Type: string (or Expression with resultType string).
26800	StoredProcedureName interface{} `json:"storedProcedureName,omitempty"`
26801
26802	// Value and type setting for stored procedure parameters. Example: "{Parameter1: {value: "1", type: "int"}}".
26803	StoredProcedureParameters map[string]*StoredProcedureParameter `json:"storedProcedureParameters,omitempty"`
26804}
26805
26806// MarshalJSON implements the json.Marshaller interface for type SQLServerStoredProcedureActivityTypeProperties.
26807func (s SQLServerStoredProcedureActivityTypeProperties) MarshalJSON() ([]byte, error) {
26808	objectMap := make(map[string]interface{})
26809	populate(objectMap, "storedProcedureName", s.StoredProcedureName)
26810	populate(objectMap, "storedProcedureParameters", s.StoredProcedureParameters)
26811	return json.Marshal(objectMap)
26812}
26813
26814// SQLServerTableDataset - The on-premises SQL Server dataset.
26815type SQLServerTableDataset struct {
26816	Dataset
26817	// On-premises SQL Server dataset properties.
26818	TypeProperties *SQLServerTableDatasetTypeProperties `json:"typeProperties,omitempty"`
26819}
26820
26821// MarshalJSON implements the json.Marshaller interface for type SQLServerTableDataset.
26822func (s SQLServerTableDataset) MarshalJSON() ([]byte, error) {
26823	objectMap := s.Dataset.marshalInternal("SqlServerTable")
26824	populate(objectMap, "typeProperties", s.TypeProperties)
26825	return json.Marshal(objectMap)
26826}
26827
26828// UnmarshalJSON implements the json.Unmarshaller interface for type SQLServerTableDataset.
26829func (s *SQLServerTableDataset) UnmarshalJSON(data []byte) error {
26830	var rawMsg map[string]json.RawMessage
26831	if err := json.Unmarshal(data, &rawMsg); err != nil {
26832		return err
26833	}
26834	for key, val := range rawMsg {
26835		var err error
26836		switch key {
26837		case "typeProperties":
26838			err = unpopulate(val, &s.TypeProperties)
26839			delete(rawMsg, key)
26840		}
26841		if err != nil {
26842			return err
26843		}
26844	}
26845	return s.Dataset.unmarshalInternal(rawMsg)
26846}
26847
26848// SQLServerTableDatasetTypeProperties - On-premises SQL Server dataset properties.
26849type SQLServerTableDatasetTypeProperties struct {
26850	// The schema name of the SQL Server dataset. Type: string (or Expression with resultType string).
26851	Schema interface{} `json:"schema,omitempty"`
26852
26853	// The table name of the SQL Server dataset. Type: string (or Expression with resultType string).
26854	Table interface{} `json:"table,omitempty"`
26855
26856	// This property will be retired. Please consider using schema + table properties instead.
26857	TableName interface{} `json:"tableName,omitempty"`
26858}
26859
26860// SQLSink - A copy activity SQL sink.
26861type SQLSink struct {
26862	CopySink
26863	// SQL pre-copy script. Type: string (or Expression with resultType string).
26864	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
26865
26866	// SQL writer stored procedure name. Type: string (or Expression with resultType string).
26867	SQLWriterStoredProcedureName interface{} `json:"sqlWriterStoredProcedureName,omitempty"`
26868
26869	// SQL writer table type. Type: string (or Expression with resultType string).
26870	SQLWriterTableType interface{} `json:"sqlWriterTableType,omitempty"`
26871
26872	// SQL stored procedure parameters.
26873	StoredProcedureParameters map[string]*StoredProcedureParameter `json:"storedProcedureParameters,omitempty"`
26874
26875	// The stored procedure parameter name of the table type. Type: string (or Expression with resultType string).
26876	StoredProcedureTableTypeParameterName interface{} `json:"storedProcedureTableTypeParameterName,omitempty"`
26877
26878	// The option to handle sink table, such as autoCreate. For now only 'autoCreate' value is supported. Type: string (or Expression with resultType string).
26879	TableOption interface{} `json:"tableOption,omitempty"`
26880}
26881
26882// MarshalJSON implements the json.Marshaller interface for type SQLSink.
26883func (s SQLSink) MarshalJSON() ([]byte, error) {
26884	objectMap := s.CopySink.marshalInternal("SqlSink")
26885	populate(objectMap, "preCopyScript", s.PreCopyScript)
26886	populate(objectMap, "sqlWriterStoredProcedureName", s.SQLWriterStoredProcedureName)
26887	populate(objectMap, "sqlWriterTableType", s.SQLWriterTableType)
26888	populate(objectMap, "storedProcedureParameters", s.StoredProcedureParameters)
26889	populate(objectMap, "storedProcedureTableTypeParameterName", s.StoredProcedureTableTypeParameterName)
26890	populate(objectMap, "tableOption", s.TableOption)
26891	return json.Marshal(objectMap)
26892}
26893
26894// UnmarshalJSON implements the json.Unmarshaller interface for type SQLSink.
26895func (s *SQLSink) UnmarshalJSON(data []byte) error {
26896	var rawMsg map[string]json.RawMessage
26897	if err := json.Unmarshal(data, &rawMsg); err != nil {
26898		return err
26899	}
26900	for key, val := range rawMsg {
26901		var err error
26902		switch key {
26903		case "preCopyScript":
26904			err = unpopulate(val, &s.PreCopyScript)
26905			delete(rawMsg, key)
26906		case "sqlWriterStoredProcedureName":
26907			err = unpopulate(val, &s.SQLWriterStoredProcedureName)
26908			delete(rawMsg, key)
26909		case "sqlWriterTableType":
26910			err = unpopulate(val, &s.SQLWriterTableType)
26911			delete(rawMsg, key)
26912		case "storedProcedureParameters":
26913			err = unpopulate(val, &s.StoredProcedureParameters)
26914			delete(rawMsg, key)
26915		case "storedProcedureTableTypeParameterName":
26916			err = unpopulate(val, &s.StoredProcedureTableTypeParameterName)
26917			delete(rawMsg, key)
26918		case "tableOption":
26919			err = unpopulate(val, &s.TableOption)
26920			delete(rawMsg, key)
26921		}
26922		if err != nil {
26923			return err
26924		}
26925	}
26926	return s.CopySink.unmarshalInternal(rawMsg)
26927}
26928
26929// SQLSource - A copy activity SQL source.
26930type SQLSource struct {
26931	TabularSource
26932	// Specifies the transaction locking behavior for the SQL source. Allowed values: ReadCommitted/ReadUncommitted/RepeatableRead/Serializable/Snapshot. The
26933	// default value is ReadCommitted. Type: string (or
26934	// Expression with resultType string).
26935	IsolationLevel interface{} `json:"isolationLevel,omitempty"`
26936
26937	// The partition mechanism that will be used for Sql read in parallel. Possible values include: "None", "PhysicalPartitionsOfTable", "DynamicRange".
26938	PartitionOption interface{} `json:"partitionOption,omitempty"`
26939
26940	// The settings that will be leveraged for Sql source partitioning.
26941	PartitionSettings *SQLPartitionSettings `json:"partitionSettings,omitempty"`
26942
26943	// SQL reader query. Type: string (or Expression with resultType string).
26944	SQLReaderQuery interface{} `json:"sqlReaderQuery,omitempty"`
26945
26946	// Name of the stored procedure for a SQL Database source. This cannot be used at the same time as SqlReaderQuery. Type: string (or Expression with resultType
26947	// string).
26948	SQLReaderStoredProcedureName interface{} `json:"sqlReaderStoredProcedureName,omitempty"`
26949
26950	// Value and type setting for stored procedure parameters. Example: "{Parameter1: {value: "1", type: "int"}}".
26951	StoredProcedureParameters map[string]*StoredProcedureParameter `json:"storedProcedureParameters,omitempty"`
26952}
26953
26954// MarshalJSON implements the json.Marshaller interface for type SQLSource.
26955func (s SQLSource) MarshalJSON() ([]byte, error) {
26956	objectMap := s.TabularSource.marshalInternal("SqlSource")
26957	populate(objectMap, "isolationLevel", s.IsolationLevel)
26958	populate(objectMap, "partitionOption", s.PartitionOption)
26959	populate(objectMap, "partitionSettings", s.PartitionSettings)
26960	populate(objectMap, "sqlReaderQuery", s.SQLReaderQuery)
26961	populate(objectMap, "sqlReaderStoredProcedureName", s.SQLReaderStoredProcedureName)
26962	populate(objectMap, "storedProcedureParameters", s.StoredProcedureParameters)
26963	return json.Marshal(objectMap)
26964}
26965
26966// UnmarshalJSON implements the json.Unmarshaller interface for type SQLSource.
26967func (s *SQLSource) UnmarshalJSON(data []byte) error {
26968	var rawMsg map[string]json.RawMessage
26969	if err := json.Unmarshal(data, &rawMsg); err != nil {
26970		return err
26971	}
26972	for key, val := range rawMsg {
26973		var err error
26974		switch key {
26975		case "isolationLevel":
26976			err = unpopulate(val, &s.IsolationLevel)
26977			delete(rawMsg, key)
26978		case "partitionOption":
26979			err = unpopulate(val, &s.PartitionOption)
26980			delete(rawMsg, key)
26981		case "partitionSettings":
26982			err = unpopulate(val, &s.PartitionSettings)
26983			delete(rawMsg, key)
26984		case "sqlReaderQuery":
26985			err = unpopulate(val, &s.SQLReaderQuery)
26986			delete(rawMsg, key)
26987		case "sqlReaderStoredProcedureName":
26988			err = unpopulate(val, &s.SQLReaderStoredProcedureName)
26989			delete(rawMsg, key)
26990		case "storedProcedureParameters":
26991			err = unpopulate(val, &s.StoredProcedureParameters)
26992			delete(rawMsg, key)
26993		}
26994		if err != nil {
26995			return err
26996		}
26997	}
26998	return s.TabularSource.unmarshalInternal(rawMsg)
26999}
27000
27001// SSISAccessCredential - SSIS access credential.
27002type SSISAccessCredential struct {
27003	// REQUIRED; Domain for windows authentication.
27004	Domain interface{} `json:"domain,omitempty"`
27005
27006	// REQUIRED; Password for windows authentication.
27007	Password SecretBaseClassification `json:"password,omitempty"`
27008
27009	// REQUIRED; UseName for windows authentication.
27010	UserName interface{} `json:"userName,omitempty"`
27011}
27012
27013// MarshalJSON implements the json.Marshaller interface for type SSISAccessCredential.
27014func (s SSISAccessCredential) MarshalJSON() ([]byte, error) {
27015	objectMap := make(map[string]interface{})
27016	populate(objectMap, "domain", s.Domain)
27017	populate(objectMap, "password", s.Password)
27018	populate(objectMap, "userName", s.UserName)
27019	return json.Marshal(objectMap)
27020}
27021
27022// UnmarshalJSON implements the json.Unmarshaller interface for type SSISAccessCredential.
27023func (s *SSISAccessCredential) UnmarshalJSON(data []byte) error {
27024	var rawMsg map[string]json.RawMessage
27025	if err := json.Unmarshal(data, &rawMsg); err != nil {
27026		return err
27027	}
27028	for key, val := range rawMsg {
27029		var err error
27030		switch key {
27031		case "domain":
27032			err = unpopulate(val, &s.Domain)
27033			delete(rawMsg, key)
27034		case "password":
27035			s.Password, err = unmarshalSecretBaseClassification(val)
27036			delete(rawMsg, key)
27037		case "userName":
27038			err = unpopulate(val, &s.UserName)
27039			delete(rawMsg, key)
27040		}
27041		if err != nil {
27042			return err
27043		}
27044	}
27045	return nil
27046}
27047
27048// SSISChildPackage - SSIS embedded child package.
27049type SSISChildPackage struct {
27050	// REQUIRED; Content for embedded child package. Type: string (or Expression with resultType string).
27051	PackageContent interface{} `json:"packageContent,omitempty"`
27052
27053	// REQUIRED; Path for embedded child package. Type: string (or Expression with resultType string).
27054	PackagePath interface{} `json:"packagePath,omitempty"`
27055
27056	// Last modified date for embedded child package.
27057	PackageLastModifiedDate *string `json:"packageLastModifiedDate,omitempty"`
27058
27059	// Name for embedded child package.
27060	PackageName *string `json:"packageName,omitempty"`
27061}
27062
27063// SSISExecutionCredential - SSIS package execution credential.
27064type SSISExecutionCredential struct {
27065	// REQUIRED; Domain for windows authentication.
27066	Domain interface{} `json:"domain,omitempty"`
27067
27068	// REQUIRED; Password for windows authentication.
27069	Password *SecureString `json:"password,omitempty"`
27070
27071	// REQUIRED; UseName for windows authentication.
27072	UserName interface{} `json:"userName,omitempty"`
27073}
27074
27075// SSISExecutionParameter - SSIS execution parameter.
27076type SSISExecutionParameter struct {
27077	// REQUIRED; SSIS package execution parameter value. Type: string (or Expression with resultType string).
27078	Value interface{} `json:"value,omitempty"`
27079}
27080
27081// SSISLogLocation - SSIS package execution log location
27082type SSISLogLocation struct {
27083	// REQUIRED; The SSIS package execution log path. Type: string (or Expression with resultType string).
27084	LogPath interface{} `json:"logPath,omitempty"`
27085
27086	// REQUIRED; The type of SSIS log location.
27087	Type *SsisLogLocationType `json:"type,omitempty"`
27088
27089	// REQUIRED; SSIS package execution log location properties.
27090	TypeProperties *SSISLogLocationTypeProperties `json:"typeProperties,omitempty"`
27091}
27092
27093// SSISLogLocationTypeProperties - SSIS package execution log location properties.
27094type SSISLogLocationTypeProperties struct {
27095	// The package execution log access credential.
27096	AccessCredential *SSISAccessCredential `json:"accessCredential,omitempty"`
27097
27098	// Specifies the interval to refresh log. The default interval is 5 minutes. Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
27099	LogRefreshInterval interface{} `json:"logRefreshInterval,omitempty"`
27100}
27101
27102// SSISPackageLocation - SSIS package location.
27103type SSISPackageLocation struct {
27104	// The SSIS package path. Type: string (or Expression with resultType string).
27105	PackagePath interface{} `json:"packagePath,omitempty"`
27106
27107	// The type of SSIS package location.
27108	Type *SsisPackageLocationType `json:"type,omitempty"`
27109
27110	// SSIS package location properties.
27111	TypeProperties *SSISPackageLocationTypeProperties `json:"typeProperties,omitempty"`
27112}
27113
27114// SSISPackageLocationTypeProperties - SSIS package location properties.
27115type SSISPackageLocationTypeProperties struct {
27116	// The package access credential.
27117	AccessCredential *SSISAccessCredential `json:"accessCredential,omitempty"`
27118
27119	// The embedded child package list.
27120	ChildPackages []*SSISChildPackage `json:"childPackages,omitempty"`
27121
27122	// The configuration file access credential.
27123	ConfigurationAccessCredential *SSISAccessCredential `json:"configurationAccessCredential,omitempty"`
27124
27125	// The configuration file of the package execution. Type: string (or Expression with resultType string).
27126	ConfigurationPath interface{} `json:"configurationPath,omitempty"`
27127
27128	// The embedded package content. Type: string (or Expression with resultType string).
27129	PackageContent interface{} `json:"packageContent,omitempty"`
27130
27131	// The embedded package last modified date.
27132	PackageLastModifiedDate *string `json:"packageLastModifiedDate,omitempty"`
27133
27134	// The package name.
27135	PackageName *string `json:"packageName,omitempty"`
27136
27137	// Password of the package.
27138	PackagePassword SecretBaseClassification `json:"packagePassword,omitempty"`
27139}
27140
27141// MarshalJSON implements the json.Marshaller interface for type SSISPackageLocationTypeProperties.
27142func (s SSISPackageLocationTypeProperties) MarshalJSON() ([]byte, error) {
27143	objectMap := make(map[string]interface{})
27144	populate(objectMap, "accessCredential", s.AccessCredential)
27145	populate(objectMap, "childPackages", s.ChildPackages)
27146	populate(objectMap, "configurationAccessCredential", s.ConfigurationAccessCredential)
27147	populate(objectMap, "configurationPath", s.ConfigurationPath)
27148	populate(objectMap, "packageContent", s.PackageContent)
27149	populate(objectMap, "packageLastModifiedDate", s.PackageLastModifiedDate)
27150	populate(objectMap, "packageName", s.PackageName)
27151	populate(objectMap, "packagePassword", s.PackagePassword)
27152	return json.Marshal(objectMap)
27153}
27154
27155// UnmarshalJSON implements the json.Unmarshaller interface for type SSISPackageLocationTypeProperties.
27156func (s *SSISPackageLocationTypeProperties) UnmarshalJSON(data []byte) error {
27157	var rawMsg map[string]json.RawMessage
27158	if err := json.Unmarshal(data, &rawMsg); err != nil {
27159		return err
27160	}
27161	for key, val := range rawMsg {
27162		var err error
27163		switch key {
27164		case "accessCredential":
27165			err = unpopulate(val, &s.AccessCredential)
27166			delete(rawMsg, key)
27167		case "childPackages":
27168			err = unpopulate(val, &s.ChildPackages)
27169			delete(rawMsg, key)
27170		case "configurationAccessCredential":
27171			err = unpopulate(val, &s.ConfigurationAccessCredential)
27172			delete(rawMsg, key)
27173		case "configurationPath":
27174			err = unpopulate(val, &s.ConfigurationPath)
27175			delete(rawMsg, key)
27176		case "packageContent":
27177			err = unpopulate(val, &s.PackageContent)
27178			delete(rawMsg, key)
27179		case "packageLastModifiedDate":
27180			err = unpopulate(val, &s.PackageLastModifiedDate)
27181			delete(rawMsg, key)
27182		case "packageName":
27183			err = unpopulate(val, &s.PackageName)
27184			delete(rawMsg, key)
27185		case "packagePassword":
27186			s.PackagePassword, err = unmarshalSecretBaseClassification(val)
27187			delete(rawMsg, key)
27188		}
27189		if err != nil {
27190			return err
27191		}
27192	}
27193	return nil
27194}
27195
27196// SSISPropertyOverride - SSIS property override.
27197type SSISPropertyOverride struct {
27198	// REQUIRED; SSIS package property override value. Type: string (or Expression with resultType string).
27199	Value interface{} `json:"value,omitempty"`
27200
27201	// Whether SSIS package property override value is sensitive data. Value will be encrypted in SSISDB if it is true
27202	IsSensitive *bool `json:"isSensitive,omitempty"`
27203}
27204
27205// SalesforceLinkedService - Linked service for Salesforce.
27206type SalesforceLinkedService struct {
27207	LinkedService
27208	// REQUIRED; Salesforce linked service properties.
27209	TypeProperties *SalesforceLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
27210}
27211
27212// MarshalJSON implements the json.Marshaller interface for type SalesforceLinkedService.
27213func (s SalesforceLinkedService) MarshalJSON() ([]byte, error) {
27214	objectMap := s.LinkedService.marshalInternal("Salesforce")
27215	populate(objectMap, "typeProperties", s.TypeProperties)
27216	return json.Marshal(objectMap)
27217}
27218
27219// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceLinkedService.
27220func (s *SalesforceLinkedService) UnmarshalJSON(data []byte) error {
27221	var rawMsg map[string]json.RawMessage
27222	if err := json.Unmarshal(data, &rawMsg); err != nil {
27223		return err
27224	}
27225	for key, val := range rawMsg {
27226		var err error
27227		switch key {
27228		case "typeProperties":
27229			err = unpopulate(val, &s.TypeProperties)
27230			delete(rawMsg, key)
27231		}
27232		if err != nil {
27233			return err
27234		}
27235	}
27236	return s.LinkedService.unmarshalInternal(rawMsg)
27237}
27238
27239// SalesforceLinkedServiceTypeProperties - Salesforce linked service properties.
27240type SalesforceLinkedServiceTypeProperties struct {
27241	// The Salesforce API version used in ADF. Type: string (or Expression with resultType string).
27242	APIVersion interface{} `json:"apiVersion,omitempty"`
27243
27244	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
27245	// with resultType string).
27246	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
27247
27248	// The URL of Salesforce instance. Default is 'https://login.salesforce.com'. To copy data from sandbox, specify 'https://test.salesforce.com'. To copy
27249	// data from custom domain, specify, for example,
27250	// 'https://[domain].my.salesforce.com'. Type: string (or Expression with resultType string).
27251	EnvironmentURL interface{} `json:"environmentUrl,omitempty"`
27252
27253	// The password for Basic authentication of the Salesforce instance.
27254	Password SecretBaseClassification `json:"password,omitempty"`
27255
27256	// The security token is optional to remotely access Salesforce instance.
27257	SecurityToken SecretBaseClassification `json:"securityToken,omitempty"`
27258
27259	// The username for Basic authentication of the Salesforce instance. Type: string (or Expression with resultType string).
27260	Username interface{} `json:"username,omitempty"`
27261}
27262
27263// MarshalJSON implements the json.Marshaller interface for type SalesforceLinkedServiceTypeProperties.
27264func (s SalesforceLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
27265	objectMap := make(map[string]interface{})
27266	populate(objectMap, "apiVersion", s.APIVersion)
27267	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
27268	populate(objectMap, "environmentUrl", s.EnvironmentURL)
27269	populate(objectMap, "password", s.Password)
27270	populate(objectMap, "securityToken", s.SecurityToken)
27271	populate(objectMap, "username", s.Username)
27272	return json.Marshal(objectMap)
27273}
27274
27275// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceLinkedServiceTypeProperties.
27276func (s *SalesforceLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
27277	var rawMsg map[string]json.RawMessage
27278	if err := json.Unmarshal(data, &rawMsg); err != nil {
27279		return err
27280	}
27281	for key, val := range rawMsg {
27282		var err error
27283		switch key {
27284		case "apiVersion":
27285			err = unpopulate(val, &s.APIVersion)
27286			delete(rawMsg, key)
27287		case "encryptedCredential":
27288			err = unpopulate(val, &s.EncryptedCredential)
27289			delete(rawMsg, key)
27290		case "environmentUrl":
27291			err = unpopulate(val, &s.EnvironmentURL)
27292			delete(rawMsg, key)
27293		case "password":
27294			s.Password, err = unmarshalSecretBaseClassification(val)
27295			delete(rawMsg, key)
27296		case "securityToken":
27297			s.SecurityToken, err = unmarshalSecretBaseClassification(val)
27298			delete(rawMsg, key)
27299		case "username":
27300			err = unpopulate(val, &s.Username)
27301			delete(rawMsg, key)
27302		}
27303		if err != nil {
27304			return err
27305		}
27306	}
27307	return nil
27308}
27309
27310// SalesforceMarketingCloudLinkedService - Salesforce Marketing Cloud linked service.
27311type SalesforceMarketingCloudLinkedService struct {
27312	LinkedService
27313	// REQUIRED; Salesforce Marketing Cloud linked service properties.
27314	TypeProperties *SalesforceMarketingCloudLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
27315}
27316
27317// MarshalJSON implements the json.Marshaller interface for type SalesforceMarketingCloudLinkedService.
27318func (s SalesforceMarketingCloudLinkedService) MarshalJSON() ([]byte, error) {
27319	objectMap := s.LinkedService.marshalInternal("SalesforceMarketingCloud")
27320	populate(objectMap, "typeProperties", s.TypeProperties)
27321	return json.Marshal(objectMap)
27322}
27323
27324// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceMarketingCloudLinkedService.
27325func (s *SalesforceMarketingCloudLinkedService) UnmarshalJSON(data []byte) error {
27326	var rawMsg map[string]json.RawMessage
27327	if err := json.Unmarshal(data, &rawMsg); err != nil {
27328		return err
27329	}
27330	for key, val := range rawMsg {
27331		var err error
27332		switch key {
27333		case "typeProperties":
27334			err = unpopulate(val, &s.TypeProperties)
27335			delete(rawMsg, key)
27336		}
27337		if err != nil {
27338			return err
27339		}
27340	}
27341	return s.LinkedService.unmarshalInternal(rawMsg)
27342}
27343
27344// SalesforceMarketingCloudLinkedServiceTypeProperties - Salesforce Marketing Cloud linked service properties.
27345type SalesforceMarketingCloudLinkedServiceTypeProperties struct {
27346	// REQUIRED; The client ID associated with the Salesforce Marketing Cloud application. Type: string (or Expression with resultType string).
27347	ClientID interface{} `json:"clientId,omitempty"`
27348
27349	// The client secret associated with the Salesforce Marketing Cloud application. Type: string (or Expression with resultType string).
27350	ClientSecret SecretBaseClassification `json:"clientSecret,omitempty"`
27351
27352	// Properties used to connect to Salesforce Marketing Cloud. It is mutually exclusive with any other properties in the linked service. Type: object.
27353	ConnectionProperties interface{} `json:"connectionProperties,omitempty"`
27354
27355	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
27356	// with resultType string).
27357	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
27358
27359	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true. Type: boolean (or Expression with resultType boolean).
27360	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
27361
27362	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
27363	// is true. Type: boolean (or Expression with
27364	// resultType boolean).
27365	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
27366
27367	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true. Type: boolean (or Expression with resultType
27368	// boolean).
27369	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
27370}
27371
27372// MarshalJSON implements the json.Marshaller interface for type SalesforceMarketingCloudLinkedServiceTypeProperties.
27373func (s SalesforceMarketingCloudLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
27374	objectMap := make(map[string]interface{})
27375	populate(objectMap, "clientId", s.ClientID)
27376	populate(objectMap, "clientSecret", s.ClientSecret)
27377	populate(objectMap, "connectionProperties", s.ConnectionProperties)
27378	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
27379	populate(objectMap, "useEncryptedEndpoints", s.UseEncryptedEndpoints)
27380	populate(objectMap, "useHostVerification", s.UseHostVerification)
27381	populate(objectMap, "usePeerVerification", s.UsePeerVerification)
27382	return json.Marshal(objectMap)
27383}
27384
27385// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceMarketingCloudLinkedServiceTypeProperties.
27386func (s *SalesforceMarketingCloudLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
27387	var rawMsg map[string]json.RawMessage
27388	if err := json.Unmarshal(data, &rawMsg); err != nil {
27389		return err
27390	}
27391	for key, val := range rawMsg {
27392		var err error
27393		switch key {
27394		case "clientId":
27395			err = unpopulate(val, &s.ClientID)
27396			delete(rawMsg, key)
27397		case "clientSecret":
27398			s.ClientSecret, err = unmarshalSecretBaseClassification(val)
27399			delete(rawMsg, key)
27400		case "connectionProperties":
27401			err = unpopulate(val, &s.ConnectionProperties)
27402			delete(rawMsg, key)
27403		case "encryptedCredential":
27404			err = unpopulate(val, &s.EncryptedCredential)
27405			delete(rawMsg, key)
27406		case "useEncryptedEndpoints":
27407			err = unpopulate(val, &s.UseEncryptedEndpoints)
27408			delete(rawMsg, key)
27409		case "useHostVerification":
27410			err = unpopulate(val, &s.UseHostVerification)
27411			delete(rawMsg, key)
27412		case "usePeerVerification":
27413			err = unpopulate(val, &s.UsePeerVerification)
27414			delete(rawMsg, key)
27415		}
27416		if err != nil {
27417			return err
27418		}
27419	}
27420	return nil
27421}
27422
27423// SalesforceMarketingCloudObjectDataset - Salesforce Marketing Cloud dataset.
27424type SalesforceMarketingCloudObjectDataset struct {
27425	Dataset
27426	// Properties specific to this dataset type.
27427	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
27428}
27429
27430// MarshalJSON implements the json.Marshaller interface for type SalesforceMarketingCloudObjectDataset.
27431func (s SalesforceMarketingCloudObjectDataset) MarshalJSON() ([]byte, error) {
27432	objectMap := s.Dataset.marshalInternal("SalesforceMarketingCloudObject")
27433	populate(objectMap, "typeProperties", s.TypeProperties)
27434	return json.Marshal(objectMap)
27435}
27436
27437// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceMarketingCloudObjectDataset.
27438func (s *SalesforceMarketingCloudObjectDataset) UnmarshalJSON(data []byte) error {
27439	var rawMsg map[string]json.RawMessage
27440	if err := json.Unmarshal(data, &rawMsg); err != nil {
27441		return err
27442	}
27443	for key, val := range rawMsg {
27444		var err error
27445		switch key {
27446		case "typeProperties":
27447			err = unpopulate(val, &s.TypeProperties)
27448			delete(rawMsg, key)
27449		}
27450		if err != nil {
27451			return err
27452		}
27453	}
27454	return s.Dataset.unmarshalInternal(rawMsg)
27455}
27456
27457// SalesforceMarketingCloudSource - A copy activity Salesforce Marketing Cloud source.
27458type SalesforceMarketingCloudSource struct {
27459	TabularSource
27460	// A query to retrieve data from source. Type: string (or Expression with resultType string).
27461	Query interface{} `json:"query,omitempty"`
27462}
27463
27464// MarshalJSON implements the json.Marshaller interface for type SalesforceMarketingCloudSource.
27465func (s SalesforceMarketingCloudSource) MarshalJSON() ([]byte, error) {
27466	objectMap := s.TabularSource.marshalInternal("SalesforceMarketingCloudSource")
27467	populate(objectMap, "query", s.Query)
27468	return json.Marshal(objectMap)
27469}
27470
27471// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceMarketingCloudSource.
27472func (s *SalesforceMarketingCloudSource) UnmarshalJSON(data []byte) error {
27473	var rawMsg map[string]json.RawMessage
27474	if err := json.Unmarshal(data, &rawMsg); err != nil {
27475		return err
27476	}
27477	for key, val := range rawMsg {
27478		var err error
27479		switch key {
27480		case "query":
27481			err = unpopulate(val, &s.Query)
27482			delete(rawMsg, key)
27483		}
27484		if err != nil {
27485			return err
27486		}
27487	}
27488	return s.TabularSource.unmarshalInternal(rawMsg)
27489}
27490
27491// SalesforceObjectDataset - The Salesforce object dataset.
27492type SalesforceObjectDataset struct {
27493	Dataset
27494	// Salesforce object dataset properties.
27495	TypeProperties *SalesforceObjectDatasetTypeProperties `json:"typeProperties,omitempty"`
27496}
27497
27498// MarshalJSON implements the json.Marshaller interface for type SalesforceObjectDataset.
27499func (s SalesforceObjectDataset) MarshalJSON() ([]byte, error) {
27500	objectMap := s.Dataset.marshalInternal("SalesforceObject")
27501	populate(objectMap, "typeProperties", s.TypeProperties)
27502	return json.Marshal(objectMap)
27503}
27504
27505// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceObjectDataset.
27506func (s *SalesforceObjectDataset) UnmarshalJSON(data []byte) error {
27507	var rawMsg map[string]json.RawMessage
27508	if err := json.Unmarshal(data, &rawMsg); err != nil {
27509		return err
27510	}
27511	for key, val := range rawMsg {
27512		var err error
27513		switch key {
27514		case "typeProperties":
27515			err = unpopulate(val, &s.TypeProperties)
27516			delete(rawMsg, key)
27517		}
27518		if err != nil {
27519			return err
27520		}
27521	}
27522	return s.Dataset.unmarshalInternal(rawMsg)
27523}
27524
27525// SalesforceObjectDatasetTypeProperties - Salesforce object dataset properties.
27526type SalesforceObjectDatasetTypeProperties struct {
27527	// The Salesforce object API name. Type: string (or Expression with resultType string).
27528	ObjectAPIName interface{} `json:"objectApiName,omitempty"`
27529}
27530
27531// SalesforceServiceCloudLinkedService - Linked service for Salesforce Service Cloud.
27532type SalesforceServiceCloudLinkedService struct {
27533	LinkedService
27534	// REQUIRED; Salesforce Service Cloud linked service properties.
27535	TypeProperties *SalesforceServiceCloudLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
27536}
27537
27538// MarshalJSON implements the json.Marshaller interface for type SalesforceServiceCloudLinkedService.
27539func (s SalesforceServiceCloudLinkedService) MarshalJSON() ([]byte, error) {
27540	objectMap := s.LinkedService.marshalInternal("SalesforceServiceCloud")
27541	populate(objectMap, "typeProperties", s.TypeProperties)
27542	return json.Marshal(objectMap)
27543}
27544
27545// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceServiceCloudLinkedService.
27546func (s *SalesforceServiceCloudLinkedService) UnmarshalJSON(data []byte) error {
27547	var rawMsg map[string]json.RawMessage
27548	if err := json.Unmarshal(data, &rawMsg); err != nil {
27549		return err
27550	}
27551	for key, val := range rawMsg {
27552		var err error
27553		switch key {
27554		case "typeProperties":
27555			err = unpopulate(val, &s.TypeProperties)
27556			delete(rawMsg, key)
27557		}
27558		if err != nil {
27559			return err
27560		}
27561	}
27562	return s.LinkedService.unmarshalInternal(rawMsg)
27563}
27564
27565// SalesforceServiceCloudLinkedServiceTypeProperties - Salesforce Service Cloud linked service properties.
27566type SalesforceServiceCloudLinkedServiceTypeProperties struct {
27567	// The Salesforce API version used in ADF. Type: string (or Expression with resultType string).
27568	APIVersion interface{} `json:"apiVersion,omitempty"`
27569
27570	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
27571	// with resultType string).
27572	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
27573
27574	// The URL of Salesforce Service Cloud instance. Default is 'https://login.salesforce.com'. To copy data from sandbox, specify 'https://test.salesforce.com'.
27575	// To copy data from custom domain, specify, for
27576	// example, 'https://[domain].my.salesforce.com'. Type: string (or Expression with resultType string).
27577	EnvironmentURL interface{} `json:"environmentUrl,omitempty"`
27578
27579	// Extended properties appended to the connection string. Type: string (or Expression with resultType string).
27580	ExtendedProperties interface{} `json:"extendedProperties,omitempty"`
27581
27582	// The password for Basic authentication of the Salesforce instance.
27583	Password SecretBaseClassification `json:"password,omitempty"`
27584
27585	// The security token is optional to remotely access Salesforce instance.
27586	SecurityToken SecretBaseClassification `json:"securityToken,omitempty"`
27587
27588	// The username for Basic authentication of the Salesforce instance. Type: string (or Expression with resultType string).
27589	Username interface{} `json:"username,omitempty"`
27590}
27591
27592// MarshalJSON implements the json.Marshaller interface for type SalesforceServiceCloudLinkedServiceTypeProperties.
27593func (s SalesforceServiceCloudLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
27594	objectMap := make(map[string]interface{})
27595	populate(objectMap, "apiVersion", s.APIVersion)
27596	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
27597	populate(objectMap, "environmentUrl", s.EnvironmentURL)
27598	populate(objectMap, "extendedProperties", s.ExtendedProperties)
27599	populate(objectMap, "password", s.Password)
27600	populate(objectMap, "securityToken", s.SecurityToken)
27601	populate(objectMap, "username", s.Username)
27602	return json.Marshal(objectMap)
27603}
27604
27605// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceServiceCloudLinkedServiceTypeProperties.
27606func (s *SalesforceServiceCloudLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
27607	var rawMsg map[string]json.RawMessage
27608	if err := json.Unmarshal(data, &rawMsg); err != nil {
27609		return err
27610	}
27611	for key, val := range rawMsg {
27612		var err error
27613		switch key {
27614		case "apiVersion":
27615			err = unpopulate(val, &s.APIVersion)
27616			delete(rawMsg, key)
27617		case "encryptedCredential":
27618			err = unpopulate(val, &s.EncryptedCredential)
27619			delete(rawMsg, key)
27620		case "environmentUrl":
27621			err = unpopulate(val, &s.EnvironmentURL)
27622			delete(rawMsg, key)
27623		case "extendedProperties":
27624			err = unpopulate(val, &s.ExtendedProperties)
27625			delete(rawMsg, key)
27626		case "password":
27627			s.Password, err = unmarshalSecretBaseClassification(val)
27628			delete(rawMsg, key)
27629		case "securityToken":
27630			s.SecurityToken, err = unmarshalSecretBaseClassification(val)
27631			delete(rawMsg, key)
27632		case "username":
27633			err = unpopulate(val, &s.Username)
27634			delete(rawMsg, key)
27635		}
27636		if err != nil {
27637			return err
27638		}
27639	}
27640	return nil
27641}
27642
27643// SalesforceServiceCloudObjectDataset - The Salesforce Service Cloud object dataset.
27644type SalesforceServiceCloudObjectDataset struct {
27645	Dataset
27646	// Salesforce Service Cloud object dataset properties.
27647	TypeProperties *SalesforceServiceCloudObjectDatasetTypeProperties `json:"typeProperties,omitempty"`
27648}
27649
27650// MarshalJSON implements the json.Marshaller interface for type SalesforceServiceCloudObjectDataset.
27651func (s SalesforceServiceCloudObjectDataset) MarshalJSON() ([]byte, error) {
27652	objectMap := s.Dataset.marshalInternal("SalesforceServiceCloudObject")
27653	populate(objectMap, "typeProperties", s.TypeProperties)
27654	return json.Marshal(objectMap)
27655}
27656
27657// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceServiceCloudObjectDataset.
27658func (s *SalesforceServiceCloudObjectDataset) UnmarshalJSON(data []byte) error {
27659	var rawMsg map[string]json.RawMessage
27660	if err := json.Unmarshal(data, &rawMsg); err != nil {
27661		return err
27662	}
27663	for key, val := range rawMsg {
27664		var err error
27665		switch key {
27666		case "typeProperties":
27667			err = unpopulate(val, &s.TypeProperties)
27668			delete(rawMsg, key)
27669		}
27670		if err != nil {
27671			return err
27672		}
27673	}
27674	return s.Dataset.unmarshalInternal(rawMsg)
27675}
27676
27677// SalesforceServiceCloudObjectDatasetTypeProperties - Salesforce Service Cloud object dataset properties.
27678type SalesforceServiceCloudObjectDatasetTypeProperties struct {
27679	// The Salesforce Service Cloud object API name. Type: string (or Expression with resultType string).
27680	ObjectAPIName interface{} `json:"objectApiName,omitempty"`
27681}
27682
27683// SalesforceServiceCloudSink - A copy activity Salesforce Service Cloud sink.
27684type SalesforceServiceCloudSink struct {
27685	CopySink
27686	// The name of the external ID field for upsert operation. Default value is 'Id' column. Type: string (or Expression with resultType string).
27687	ExternalIDFieldName interface{} `json:"externalIdFieldName,omitempty"`
27688
27689	// The flag indicating whether or not to ignore null values from input dataset (except key fields) during write operation. Default value is false. If set
27690	// it to true, it means ADF will leave the data in
27691	// the destination object unchanged when doing upsert/update operation and insert defined default value when doing insert operation, versus ADF will update
27692	// the data in the destination object to NULL when
27693	// doing upsert/update operation and insert NULL value when doing insert operation. Type: boolean (or Expression with resultType boolean).
27694	IgnoreNullValues interface{} `json:"ignoreNullValues,omitempty"`
27695
27696	// The write behavior for the operation. Default is Insert.
27697	WriteBehavior *SalesforceSinkWriteBehavior `json:"writeBehavior,omitempty"`
27698}
27699
27700// MarshalJSON implements the json.Marshaller interface for type SalesforceServiceCloudSink.
27701func (s SalesforceServiceCloudSink) MarshalJSON() ([]byte, error) {
27702	objectMap := s.CopySink.marshalInternal("SalesforceServiceCloudSink")
27703	populate(objectMap, "externalIdFieldName", s.ExternalIDFieldName)
27704	populate(objectMap, "ignoreNullValues", s.IgnoreNullValues)
27705	populate(objectMap, "writeBehavior", s.WriteBehavior)
27706	return json.Marshal(objectMap)
27707}
27708
27709// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceServiceCloudSink.
27710func (s *SalesforceServiceCloudSink) UnmarshalJSON(data []byte) error {
27711	var rawMsg map[string]json.RawMessage
27712	if err := json.Unmarshal(data, &rawMsg); err != nil {
27713		return err
27714	}
27715	for key, val := range rawMsg {
27716		var err error
27717		switch key {
27718		case "externalIdFieldName":
27719			err = unpopulate(val, &s.ExternalIDFieldName)
27720			delete(rawMsg, key)
27721		case "ignoreNullValues":
27722			err = unpopulate(val, &s.IgnoreNullValues)
27723			delete(rawMsg, key)
27724		case "writeBehavior":
27725			err = unpopulate(val, &s.WriteBehavior)
27726			delete(rawMsg, key)
27727		}
27728		if err != nil {
27729			return err
27730		}
27731	}
27732	return s.CopySink.unmarshalInternal(rawMsg)
27733}
27734
27735// SalesforceServiceCloudSource - A copy activity Salesforce Service Cloud source.
27736type SalesforceServiceCloudSource struct {
27737	CopySource
27738	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
27739	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
27740
27741	// Database query. Type: string (or Expression with resultType string).
27742	Query interface{} `json:"query,omitempty"`
27743
27744	// The read behavior for the operation. Default is Query.
27745	ReadBehavior *SalesforceSourceReadBehavior `json:"readBehavior,omitempty"`
27746}
27747
27748// MarshalJSON implements the json.Marshaller interface for type SalesforceServiceCloudSource.
27749func (s SalesforceServiceCloudSource) MarshalJSON() ([]byte, error) {
27750	objectMap := s.CopySource.marshalInternal("SalesforceServiceCloudSource")
27751	populate(objectMap, "additionalColumns", s.AdditionalColumns)
27752	populate(objectMap, "query", s.Query)
27753	populate(objectMap, "readBehavior", s.ReadBehavior)
27754	return json.Marshal(objectMap)
27755}
27756
27757// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceServiceCloudSource.
27758func (s *SalesforceServiceCloudSource) UnmarshalJSON(data []byte) error {
27759	var rawMsg map[string]json.RawMessage
27760	if err := json.Unmarshal(data, &rawMsg); err != nil {
27761		return err
27762	}
27763	for key, val := range rawMsg {
27764		var err error
27765		switch key {
27766		case "additionalColumns":
27767			err = unpopulate(val, &s.AdditionalColumns)
27768			delete(rawMsg, key)
27769		case "query":
27770			err = unpopulate(val, &s.Query)
27771			delete(rawMsg, key)
27772		case "readBehavior":
27773			err = unpopulate(val, &s.ReadBehavior)
27774			delete(rawMsg, key)
27775		}
27776		if err != nil {
27777			return err
27778		}
27779	}
27780	return s.CopySource.unmarshalInternal(rawMsg)
27781}
27782
27783// SalesforceSink - A copy activity Salesforce sink.
27784type SalesforceSink struct {
27785	CopySink
27786	// The name of the external ID field for upsert operation. Default value is 'Id' column. Type: string (or Expression with resultType string).
27787	ExternalIDFieldName interface{} `json:"externalIdFieldName,omitempty"`
27788
27789	// The flag indicating whether or not to ignore null values from input dataset (except key fields) during write operation. Default value is false. If set
27790	// it to true, it means ADF will leave the data in
27791	// the destination object unchanged when doing upsert/update operation and insert defined default value when doing insert operation, versus ADF will update
27792	// the data in the destination object to NULL when
27793	// doing upsert/update operation and insert NULL value when doing insert operation. Type: boolean (or Expression with resultType boolean).
27794	IgnoreNullValues interface{} `json:"ignoreNullValues,omitempty"`
27795
27796	// The write behavior for the operation. Default is Insert.
27797	WriteBehavior *SalesforceSinkWriteBehavior `json:"writeBehavior,omitempty"`
27798}
27799
27800// MarshalJSON implements the json.Marshaller interface for type SalesforceSink.
27801func (s SalesforceSink) MarshalJSON() ([]byte, error) {
27802	objectMap := s.CopySink.marshalInternal("SalesforceSink")
27803	populate(objectMap, "externalIdFieldName", s.ExternalIDFieldName)
27804	populate(objectMap, "ignoreNullValues", s.IgnoreNullValues)
27805	populate(objectMap, "writeBehavior", s.WriteBehavior)
27806	return json.Marshal(objectMap)
27807}
27808
27809// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceSink.
27810func (s *SalesforceSink) UnmarshalJSON(data []byte) error {
27811	var rawMsg map[string]json.RawMessage
27812	if err := json.Unmarshal(data, &rawMsg); err != nil {
27813		return err
27814	}
27815	for key, val := range rawMsg {
27816		var err error
27817		switch key {
27818		case "externalIdFieldName":
27819			err = unpopulate(val, &s.ExternalIDFieldName)
27820			delete(rawMsg, key)
27821		case "ignoreNullValues":
27822			err = unpopulate(val, &s.IgnoreNullValues)
27823			delete(rawMsg, key)
27824		case "writeBehavior":
27825			err = unpopulate(val, &s.WriteBehavior)
27826			delete(rawMsg, key)
27827		}
27828		if err != nil {
27829			return err
27830		}
27831	}
27832	return s.CopySink.unmarshalInternal(rawMsg)
27833}
27834
27835// SalesforceSource - A copy activity Salesforce source.
27836type SalesforceSource struct {
27837	TabularSource
27838	// Database query. Type: string (or Expression with resultType string).
27839	Query interface{} `json:"query,omitempty"`
27840
27841	// The read behavior for the operation. Default is Query.
27842	ReadBehavior *SalesforceSourceReadBehavior `json:"readBehavior,omitempty"`
27843}
27844
27845// MarshalJSON implements the json.Marshaller interface for type SalesforceSource.
27846func (s SalesforceSource) MarshalJSON() ([]byte, error) {
27847	objectMap := s.TabularSource.marshalInternal("SalesforceSource")
27848	populate(objectMap, "query", s.Query)
27849	populate(objectMap, "readBehavior", s.ReadBehavior)
27850	return json.Marshal(objectMap)
27851}
27852
27853// UnmarshalJSON implements the json.Unmarshaller interface for type SalesforceSource.
27854func (s *SalesforceSource) UnmarshalJSON(data []byte) error {
27855	var rawMsg map[string]json.RawMessage
27856	if err := json.Unmarshal(data, &rawMsg); err != nil {
27857		return err
27858	}
27859	for key, val := range rawMsg {
27860		var err error
27861		switch key {
27862		case "query":
27863			err = unpopulate(val, &s.Query)
27864			delete(rawMsg, key)
27865		case "readBehavior":
27866			err = unpopulate(val, &s.ReadBehavior)
27867			delete(rawMsg, key)
27868		}
27869		if err != nil {
27870			return err
27871		}
27872	}
27873	return s.TabularSource.unmarshalInternal(rawMsg)
27874}
27875
27876// SapBWLinkedService - SAP Business Warehouse Linked Service.
27877type SapBWLinkedService struct {
27878	LinkedService
27879	// REQUIRED; Properties specific to this linked service type.
27880	TypeProperties *SapBWLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
27881}
27882
27883// MarshalJSON implements the json.Marshaller interface for type SapBWLinkedService.
27884func (s SapBWLinkedService) MarshalJSON() ([]byte, error) {
27885	objectMap := s.LinkedService.marshalInternal("SapBW")
27886	populate(objectMap, "typeProperties", s.TypeProperties)
27887	return json.Marshal(objectMap)
27888}
27889
27890// UnmarshalJSON implements the json.Unmarshaller interface for type SapBWLinkedService.
27891func (s *SapBWLinkedService) UnmarshalJSON(data []byte) error {
27892	var rawMsg map[string]json.RawMessage
27893	if err := json.Unmarshal(data, &rawMsg); err != nil {
27894		return err
27895	}
27896	for key, val := range rawMsg {
27897		var err error
27898		switch key {
27899		case "typeProperties":
27900			err = unpopulate(val, &s.TypeProperties)
27901			delete(rawMsg, key)
27902		}
27903		if err != nil {
27904			return err
27905		}
27906	}
27907	return s.LinkedService.unmarshalInternal(rawMsg)
27908}
27909
27910// SapBWLinkedServiceTypeProperties - Properties specific to this linked service type.
27911type SapBWLinkedServiceTypeProperties struct {
27912	// REQUIRED; Client ID of the client on the BW system. (Usually a three-digit decimal number represented as a string) Type: string (or Expression with resultType
27913	// string).
27914	ClientID interface{} `json:"clientId,omitempty"`
27915
27916	// REQUIRED; Host name of the SAP BW instance. Type: string (or Expression with resultType string).
27917	Server interface{} `json:"server,omitempty"`
27918
27919	// REQUIRED; System number of the BW system. (Usually a two-digit decimal number represented as a string.) Type: string (or Expression with resultType string).
27920	SystemNumber interface{} `json:"systemNumber,omitempty"`
27921
27922	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
27923	// with resultType string).
27924	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
27925
27926	// Password to access the SAP BW server.
27927	Password SecretBaseClassification `json:"password,omitempty"`
27928
27929	// Username to access the SAP BW server. Type: string (or Expression with resultType string).
27930	UserName interface{} `json:"userName,omitempty"`
27931}
27932
27933// MarshalJSON implements the json.Marshaller interface for type SapBWLinkedServiceTypeProperties.
27934func (s SapBWLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
27935	objectMap := make(map[string]interface{})
27936	populate(objectMap, "clientId", s.ClientID)
27937	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
27938	populate(objectMap, "password", s.Password)
27939	populate(objectMap, "server", s.Server)
27940	populate(objectMap, "systemNumber", s.SystemNumber)
27941	populate(objectMap, "userName", s.UserName)
27942	return json.Marshal(objectMap)
27943}
27944
27945// UnmarshalJSON implements the json.Unmarshaller interface for type SapBWLinkedServiceTypeProperties.
27946func (s *SapBWLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
27947	var rawMsg map[string]json.RawMessage
27948	if err := json.Unmarshal(data, &rawMsg); err != nil {
27949		return err
27950	}
27951	for key, val := range rawMsg {
27952		var err error
27953		switch key {
27954		case "clientId":
27955			err = unpopulate(val, &s.ClientID)
27956			delete(rawMsg, key)
27957		case "encryptedCredential":
27958			err = unpopulate(val, &s.EncryptedCredential)
27959			delete(rawMsg, key)
27960		case "password":
27961			s.Password, err = unmarshalSecretBaseClassification(val)
27962			delete(rawMsg, key)
27963		case "server":
27964			err = unpopulate(val, &s.Server)
27965			delete(rawMsg, key)
27966		case "systemNumber":
27967			err = unpopulate(val, &s.SystemNumber)
27968			delete(rawMsg, key)
27969		case "userName":
27970			err = unpopulate(val, &s.UserName)
27971			delete(rawMsg, key)
27972		}
27973		if err != nil {
27974			return err
27975		}
27976	}
27977	return nil
27978}
27979
27980// SapBwCubeDataset - The SAP BW cube dataset.
27981type SapBwCubeDataset struct {
27982	Dataset
27983}
27984
27985// MarshalJSON implements the json.Marshaller interface for type SapBwCubeDataset.
27986func (s SapBwCubeDataset) MarshalJSON() ([]byte, error) {
27987	objectMap := s.Dataset.marshalInternal("SapBwCube")
27988	return json.Marshal(objectMap)
27989}
27990
27991// SapBwSource - A copy activity source for SapBW server via MDX.
27992type SapBwSource struct {
27993	TabularSource
27994	// MDX query. Type: string (or Expression with resultType string).
27995	Query interface{} `json:"query,omitempty"`
27996}
27997
27998// MarshalJSON implements the json.Marshaller interface for type SapBwSource.
27999func (s SapBwSource) MarshalJSON() ([]byte, error) {
28000	objectMap := s.TabularSource.marshalInternal("SapBwSource")
28001	populate(objectMap, "query", s.Query)
28002	return json.Marshal(objectMap)
28003}
28004
28005// UnmarshalJSON implements the json.Unmarshaller interface for type SapBwSource.
28006func (s *SapBwSource) UnmarshalJSON(data []byte) error {
28007	var rawMsg map[string]json.RawMessage
28008	if err := json.Unmarshal(data, &rawMsg); err != nil {
28009		return err
28010	}
28011	for key, val := range rawMsg {
28012		var err error
28013		switch key {
28014		case "query":
28015			err = unpopulate(val, &s.Query)
28016			delete(rawMsg, key)
28017		}
28018		if err != nil {
28019			return err
28020		}
28021	}
28022	return s.TabularSource.unmarshalInternal(rawMsg)
28023}
28024
28025// SapCloudForCustomerLinkedService - Linked service for SAP Cloud for Customer.
28026type SapCloudForCustomerLinkedService struct {
28027	LinkedService
28028	// REQUIRED; SAP Cloud for Customer linked service properties.
28029	TypeProperties *SapCloudForCustomerLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
28030}
28031
28032// MarshalJSON implements the json.Marshaller interface for type SapCloudForCustomerLinkedService.
28033func (s SapCloudForCustomerLinkedService) MarshalJSON() ([]byte, error) {
28034	objectMap := s.LinkedService.marshalInternal("SapCloudForCustomer")
28035	populate(objectMap, "typeProperties", s.TypeProperties)
28036	return json.Marshal(objectMap)
28037}
28038
28039// UnmarshalJSON implements the json.Unmarshaller interface for type SapCloudForCustomerLinkedService.
28040func (s *SapCloudForCustomerLinkedService) UnmarshalJSON(data []byte) error {
28041	var rawMsg map[string]json.RawMessage
28042	if err := json.Unmarshal(data, &rawMsg); err != nil {
28043		return err
28044	}
28045	for key, val := range rawMsg {
28046		var err error
28047		switch key {
28048		case "typeProperties":
28049			err = unpopulate(val, &s.TypeProperties)
28050			delete(rawMsg, key)
28051		}
28052		if err != nil {
28053			return err
28054		}
28055	}
28056	return s.LinkedService.unmarshalInternal(rawMsg)
28057}
28058
28059// SapCloudForCustomerLinkedServiceTypeProperties - SAP Cloud for Customer linked service properties.
28060type SapCloudForCustomerLinkedServiceTypeProperties struct {
28061	// REQUIRED; The URL of SAP Cloud for Customer OData API. For example, '[https://[tenantname].crm.ondemand.com/sap/c4c/odata/v1]'. Type: string (or Expression
28062	// with resultType string).
28063	URL interface{} `json:"url,omitempty"`
28064
28065	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Either encryptedCredential
28066	// or username/password must be provided. Type:
28067	// string (or Expression with resultType string).
28068	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
28069
28070	// The password for Basic authentication.
28071	Password SecretBaseClassification `json:"password,omitempty"`
28072
28073	// The username for Basic authentication. Type: string (or Expression with resultType string).
28074	Username interface{} `json:"username,omitempty"`
28075}
28076
28077// MarshalJSON implements the json.Marshaller interface for type SapCloudForCustomerLinkedServiceTypeProperties.
28078func (s SapCloudForCustomerLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
28079	objectMap := make(map[string]interface{})
28080	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
28081	populate(objectMap, "password", s.Password)
28082	populate(objectMap, "url", s.URL)
28083	populate(objectMap, "username", s.Username)
28084	return json.Marshal(objectMap)
28085}
28086
28087// UnmarshalJSON implements the json.Unmarshaller interface for type SapCloudForCustomerLinkedServiceTypeProperties.
28088func (s *SapCloudForCustomerLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
28089	var rawMsg map[string]json.RawMessage
28090	if err := json.Unmarshal(data, &rawMsg); err != nil {
28091		return err
28092	}
28093	for key, val := range rawMsg {
28094		var err error
28095		switch key {
28096		case "encryptedCredential":
28097			err = unpopulate(val, &s.EncryptedCredential)
28098			delete(rawMsg, key)
28099		case "password":
28100			s.Password, err = unmarshalSecretBaseClassification(val)
28101			delete(rawMsg, key)
28102		case "url":
28103			err = unpopulate(val, &s.URL)
28104			delete(rawMsg, key)
28105		case "username":
28106			err = unpopulate(val, &s.Username)
28107			delete(rawMsg, key)
28108		}
28109		if err != nil {
28110			return err
28111		}
28112	}
28113	return nil
28114}
28115
28116// SapCloudForCustomerResourceDataset - The path of the SAP Cloud for Customer OData entity.
28117type SapCloudForCustomerResourceDataset struct {
28118	Dataset
28119	// REQUIRED; SAP Cloud For Customer OData resource dataset properties.
28120	TypeProperties *SapCloudForCustomerResourceDatasetTypeProperties `json:"typeProperties,omitempty"`
28121}
28122
28123// MarshalJSON implements the json.Marshaller interface for type SapCloudForCustomerResourceDataset.
28124func (s SapCloudForCustomerResourceDataset) MarshalJSON() ([]byte, error) {
28125	objectMap := s.Dataset.marshalInternal("SapCloudForCustomerResource")
28126	populate(objectMap, "typeProperties", s.TypeProperties)
28127	return json.Marshal(objectMap)
28128}
28129
28130// UnmarshalJSON implements the json.Unmarshaller interface for type SapCloudForCustomerResourceDataset.
28131func (s *SapCloudForCustomerResourceDataset) UnmarshalJSON(data []byte) error {
28132	var rawMsg map[string]json.RawMessage
28133	if err := json.Unmarshal(data, &rawMsg); err != nil {
28134		return err
28135	}
28136	for key, val := range rawMsg {
28137		var err error
28138		switch key {
28139		case "typeProperties":
28140			err = unpopulate(val, &s.TypeProperties)
28141			delete(rawMsg, key)
28142		}
28143		if err != nil {
28144			return err
28145		}
28146	}
28147	return s.Dataset.unmarshalInternal(rawMsg)
28148}
28149
28150// SapCloudForCustomerResourceDatasetTypeProperties - Sap Cloud For Customer OData resource dataset properties.
28151type SapCloudForCustomerResourceDatasetTypeProperties struct {
28152	// REQUIRED; The path of the SAP Cloud for Customer OData entity. Type: string (or Expression with resultType string).
28153	Path interface{} `json:"path,omitempty"`
28154}
28155
28156// SapCloudForCustomerSink - A copy activity SAP Cloud for Customer sink.
28157type SapCloudForCustomerSink struct {
28158	CopySink
28159	// The timeout (TimeSpan) to get an HTTP response. It is the timeout to get a response, not the timeout to read response data. Default value: 00:05:00.
28160	// Type: string (or Expression with resultType
28161	// string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
28162	HTTPRequestTimeout interface{} `json:"httpRequestTimeout,omitempty"`
28163
28164	// The write behavior for the operation. Default is 'Insert'.
28165	WriteBehavior *SapCloudForCustomerSinkWriteBehavior `json:"writeBehavior,omitempty"`
28166}
28167
28168// MarshalJSON implements the json.Marshaller interface for type SapCloudForCustomerSink.
28169func (s SapCloudForCustomerSink) MarshalJSON() ([]byte, error) {
28170	objectMap := s.CopySink.marshalInternal("SapCloudForCustomerSink")
28171	populate(objectMap, "httpRequestTimeout", s.HTTPRequestTimeout)
28172	populate(objectMap, "writeBehavior", s.WriteBehavior)
28173	return json.Marshal(objectMap)
28174}
28175
28176// UnmarshalJSON implements the json.Unmarshaller interface for type SapCloudForCustomerSink.
28177func (s *SapCloudForCustomerSink) UnmarshalJSON(data []byte) error {
28178	var rawMsg map[string]json.RawMessage
28179	if err := json.Unmarshal(data, &rawMsg); err != nil {
28180		return err
28181	}
28182	for key, val := range rawMsg {
28183		var err error
28184		switch key {
28185		case "httpRequestTimeout":
28186			err = unpopulate(val, &s.HTTPRequestTimeout)
28187			delete(rawMsg, key)
28188		case "writeBehavior":
28189			err = unpopulate(val, &s.WriteBehavior)
28190			delete(rawMsg, key)
28191		}
28192		if err != nil {
28193			return err
28194		}
28195	}
28196	return s.CopySink.unmarshalInternal(rawMsg)
28197}
28198
28199// SapCloudForCustomerSource - A copy activity source for SAP Cloud for Customer source.
28200type SapCloudForCustomerSource struct {
28201	TabularSource
28202	// The timeout (TimeSpan) to get an HTTP response. It is the timeout to get a response, not the timeout to read response data. Default value: 00:05:00.
28203	// Type: string (or Expression with resultType
28204	// string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
28205	HTTPRequestTimeout interface{} `json:"httpRequestTimeout,omitempty"`
28206
28207	// SAP Cloud for Customer OData query. For example, "$top=1". Type: string (or Expression with resultType string).
28208	Query interface{} `json:"query,omitempty"`
28209}
28210
28211// MarshalJSON implements the json.Marshaller interface for type SapCloudForCustomerSource.
28212func (s SapCloudForCustomerSource) MarshalJSON() ([]byte, error) {
28213	objectMap := s.TabularSource.marshalInternal("SapCloudForCustomerSource")
28214	populate(objectMap, "httpRequestTimeout", s.HTTPRequestTimeout)
28215	populate(objectMap, "query", s.Query)
28216	return json.Marshal(objectMap)
28217}
28218
28219// UnmarshalJSON implements the json.Unmarshaller interface for type SapCloudForCustomerSource.
28220func (s *SapCloudForCustomerSource) UnmarshalJSON(data []byte) error {
28221	var rawMsg map[string]json.RawMessage
28222	if err := json.Unmarshal(data, &rawMsg); err != nil {
28223		return err
28224	}
28225	for key, val := range rawMsg {
28226		var err error
28227		switch key {
28228		case "httpRequestTimeout":
28229			err = unpopulate(val, &s.HTTPRequestTimeout)
28230			delete(rawMsg, key)
28231		case "query":
28232			err = unpopulate(val, &s.Query)
28233			delete(rawMsg, key)
28234		}
28235		if err != nil {
28236			return err
28237		}
28238	}
28239	return s.TabularSource.unmarshalInternal(rawMsg)
28240}
28241
28242// SapEccLinkedService - Linked service for SAP ERP Central Component(SAP ECC).
28243type SapEccLinkedService struct {
28244	LinkedService
28245	// REQUIRED; SAP ECC linked service properties.
28246	TypeProperties *SapEccLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
28247}
28248
28249// MarshalJSON implements the json.Marshaller interface for type SapEccLinkedService.
28250func (s SapEccLinkedService) MarshalJSON() ([]byte, error) {
28251	objectMap := s.LinkedService.marshalInternal("SapEcc")
28252	populate(objectMap, "typeProperties", s.TypeProperties)
28253	return json.Marshal(objectMap)
28254}
28255
28256// UnmarshalJSON implements the json.Unmarshaller interface for type SapEccLinkedService.
28257func (s *SapEccLinkedService) UnmarshalJSON(data []byte) error {
28258	var rawMsg map[string]json.RawMessage
28259	if err := json.Unmarshal(data, &rawMsg); err != nil {
28260		return err
28261	}
28262	for key, val := range rawMsg {
28263		var err error
28264		switch key {
28265		case "typeProperties":
28266			err = unpopulate(val, &s.TypeProperties)
28267			delete(rawMsg, key)
28268		}
28269		if err != nil {
28270			return err
28271		}
28272	}
28273	return s.LinkedService.unmarshalInternal(rawMsg)
28274}
28275
28276// SapEccLinkedServiceTypeProperties - SAP ECC linked service properties.
28277type SapEccLinkedServiceTypeProperties struct {
28278	// REQUIRED; The URL of SAP ECC OData API. For example, '[https://hostname:port/sap/opu/odata/sap/servicename/]'. Type: string (or Expression with resultType
28279	// string).
28280	URL *string `json:"url,omitempty"`
28281
28282	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Either encryptedCredential
28283	// or username/password must be provided. Type:
28284	// string (or Expression with resultType string).
28285	EncryptedCredential *string `json:"encryptedCredential,omitempty"`
28286
28287	// The password for Basic authentication.
28288	Password SecretBaseClassification `json:"password,omitempty"`
28289
28290	// The username for Basic authentication. Type: string (or Expression with resultType string).
28291	Username *string `json:"username,omitempty"`
28292}
28293
28294// MarshalJSON implements the json.Marshaller interface for type SapEccLinkedServiceTypeProperties.
28295func (s SapEccLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
28296	objectMap := make(map[string]interface{})
28297	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
28298	populate(objectMap, "password", s.Password)
28299	populate(objectMap, "url", s.URL)
28300	populate(objectMap, "username", s.Username)
28301	return json.Marshal(objectMap)
28302}
28303
28304// UnmarshalJSON implements the json.Unmarshaller interface for type SapEccLinkedServiceTypeProperties.
28305func (s *SapEccLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
28306	var rawMsg map[string]json.RawMessage
28307	if err := json.Unmarshal(data, &rawMsg); err != nil {
28308		return err
28309	}
28310	for key, val := range rawMsg {
28311		var err error
28312		switch key {
28313		case "encryptedCredential":
28314			err = unpopulate(val, &s.EncryptedCredential)
28315			delete(rawMsg, key)
28316		case "password":
28317			s.Password, err = unmarshalSecretBaseClassification(val)
28318			delete(rawMsg, key)
28319		case "url":
28320			err = unpopulate(val, &s.URL)
28321			delete(rawMsg, key)
28322		case "username":
28323			err = unpopulate(val, &s.Username)
28324			delete(rawMsg, key)
28325		}
28326		if err != nil {
28327			return err
28328		}
28329	}
28330	return nil
28331}
28332
28333// SapEccResourceDataset - The path of the SAP ECC OData entity.
28334type SapEccResourceDataset struct {
28335	Dataset
28336	// REQUIRED; SAP ECC OData resource dataset properties.
28337	TypeProperties *SapEccResourceDatasetTypeProperties `json:"typeProperties,omitempty"`
28338}
28339
28340// MarshalJSON implements the json.Marshaller interface for type SapEccResourceDataset.
28341func (s SapEccResourceDataset) MarshalJSON() ([]byte, error) {
28342	objectMap := s.Dataset.marshalInternal("SapEccResource")
28343	populate(objectMap, "typeProperties", s.TypeProperties)
28344	return json.Marshal(objectMap)
28345}
28346
28347// UnmarshalJSON implements the json.Unmarshaller interface for type SapEccResourceDataset.
28348func (s *SapEccResourceDataset) UnmarshalJSON(data []byte) error {
28349	var rawMsg map[string]json.RawMessage
28350	if err := json.Unmarshal(data, &rawMsg); err != nil {
28351		return err
28352	}
28353	for key, val := range rawMsg {
28354		var err error
28355		switch key {
28356		case "typeProperties":
28357			err = unpopulate(val, &s.TypeProperties)
28358			delete(rawMsg, key)
28359		}
28360		if err != nil {
28361			return err
28362		}
28363	}
28364	return s.Dataset.unmarshalInternal(rawMsg)
28365}
28366
28367// SapEccResourceDatasetTypeProperties - Sap ECC OData resource dataset properties.
28368type SapEccResourceDatasetTypeProperties struct {
28369	// REQUIRED; The path of the SAP ECC OData entity. Type: string (or Expression with resultType string).
28370	Path interface{} `json:"path,omitempty"`
28371}
28372
28373// SapEccSource - A copy activity source for SAP ECC source.
28374type SapEccSource struct {
28375	TabularSource
28376	// The timeout (TimeSpan) to get an HTTP response. It is the timeout to get a response, not the timeout to read response data. Default value: 00:05:00.
28377	// Type: string (or Expression with resultType
28378	// string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
28379	HTTPRequestTimeout interface{} `json:"httpRequestTimeout,omitempty"`
28380
28381	// SAP ECC OData query. For example, "$top=1". Type: string (or Expression with resultType string).
28382	Query interface{} `json:"query,omitempty"`
28383}
28384
28385// MarshalJSON implements the json.Marshaller interface for type SapEccSource.
28386func (s SapEccSource) MarshalJSON() ([]byte, error) {
28387	objectMap := s.TabularSource.marshalInternal("SapEccSource")
28388	populate(objectMap, "httpRequestTimeout", s.HTTPRequestTimeout)
28389	populate(objectMap, "query", s.Query)
28390	return json.Marshal(objectMap)
28391}
28392
28393// UnmarshalJSON implements the json.Unmarshaller interface for type SapEccSource.
28394func (s *SapEccSource) UnmarshalJSON(data []byte) error {
28395	var rawMsg map[string]json.RawMessage
28396	if err := json.Unmarshal(data, &rawMsg); err != nil {
28397		return err
28398	}
28399	for key, val := range rawMsg {
28400		var err error
28401		switch key {
28402		case "httpRequestTimeout":
28403			err = unpopulate(val, &s.HTTPRequestTimeout)
28404			delete(rawMsg, key)
28405		case "query":
28406			err = unpopulate(val, &s.Query)
28407			delete(rawMsg, key)
28408		}
28409		if err != nil {
28410			return err
28411		}
28412	}
28413	return s.TabularSource.unmarshalInternal(rawMsg)
28414}
28415
28416// SapHanaLinkedService - SAP HANA Linked Service.
28417type SapHanaLinkedService struct {
28418	LinkedService
28419	// REQUIRED; Properties specific to this linked service type.
28420	TypeProperties *SapHanaLinkedServiceProperties `json:"typeProperties,omitempty"`
28421}
28422
28423// MarshalJSON implements the json.Marshaller interface for type SapHanaLinkedService.
28424func (s SapHanaLinkedService) MarshalJSON() ([]byte, error) {
28425	objectMap := s.LinkedService.marshalInternal("SapHana")
28426	populate(objectMap, "typeProperties", s.TypeProperties)
28427	return json.Marshal(objectMap)
28428}
28429
28430// UnmarshalJSON implements the json.Unmarshaller interface for type SapHanaLinkedService.
28431func (s *SapHanaLinkedService) UnmarshalJSON(data []byte) error {
28432	var rawMsg map[string]json.RawMessage
28433	if err := json.Unmarshal(data, &rawMsg); err != nil {
28434		return err
28435	}
28436	for key, val := range rawMsg {
28437		var err error
28438		switch key {
28439		case "typeProperties":
28440			err = unpopulate(val, &s.TypeProperties)
28441			delete(rawMsg, key)
28442		}
28443		if err != nil {
28444			return err
28445		}
28446	}
28447	return s.LinkedService.unmarshalInternal(rawMsg)
28448}
28449
28450// SapHanaLinkedServiceProperties - Properties specific to this linked service type.
28451type SapHanaLinkedServiceProperties struct {
28452	// REQUIRED; Host name of the SAP HANA server. Type: string (or Expression with resultType string).
28453	Server interface{} `json:"server,omitempty"`
28454
28455	// The authentication type to be used to connect to the SAP HANA server.
28456	AuthenticationType *SapHanaAuthenticationType `json:"authenticationType,omitempty"`
28457
28458	// SAP HANA ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
28459	ConnectionString interface{} `json:"connectionString,omitempty"`
28460
28461	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
28462	// with resultType string).
28463	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
28464
28465	// Password to access the SAP HANA server.
28466	Password SecretBaseClassification `json:"password,omitempty"`
28467
28468	// Username to access the SAP HANA server. Type: string (or Expression with resultType string).
28469	UserName interface{} `json:"userName,omitempty"`
28470}
28471
28472// MarshalJSON implements the json.Marshaller interface for type SapHanaLinkedServiceProperties.
28473func (s SapHanaLinkedServiceProperties) MarshalJSON() ([]byte, error) {
28474	objectMap := make(map[string]interface{})
28475	populate(objectMap, "authenticationType", s.AuthenticationType)
28476	populate(objectMap, "connectionString", s.ConnectionString)
28477	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
28478	populate(objectMap, "password", s.Password)
28479	populate(objectMap, "server", s.Server)
28480	populate(objectMap, "userName", s.UserName)
28481	return json.Marshal(objectMap)
28482}
28483
28484// UnmarshalJSON implements the json.Unmarshaller interface for type SapHanaLinkedServiceProperties.
28485func (s *SapHanaLinkedServiceProperties) UnmarshalJSON(data []byte) error {
28486	var rawMsg map[string]json.RawMessage
28487	if err := json.Unmarshal(data, &rawMsg); err != nil {
28488		return err
28489	}
28490	for key, val := range rawMsg {
28491		var err error
28492		switch key {
28493		case "authenticationType":
28494			err = unpopulate(val, &s.AuthenticationType)
28495			delete(rawMsg, key)
28496		case "connectionString":
28497			err = unpopulate(val, &s.ConnectionString)
28498			delete(rawMsg, key)
28499		case "encryptedCredential":
28500			err = unpopulate(val, &s.EncryptedCredential)
28501			delete(rawMsg, key)
28502		case "password":
28503			s.Password, err = unmarshalSecretBaseClassification(val)
28504			delete(rawMsg, key)
28505		case "server":
28506			err = unpopulate(val, &s.Server)
28507			delete(rawMsg, key)
28508		case "userName":
28509			err = unpopulate(val, &s.UserName)
28510			delete(rawMsg, key)
28511		}
28512		if err != nil {
28513			return err
28514		}
28515	}
28516	return nil
28517}
28518
28519// SapHanaPartitionSettings - The settings that will be leveraged for SAP HANA source partitioning.
28520type SapHanaPartitionSettings struct {
28521	// The name of the column that will be used for proceeding range partitioning. Type: string (or Expression with resultType string).
28522	PartitionColumnName interface{} `json:"partitionColumnName,omitempty"`
28523}
28524
28525// SapHanaSource - A copy activity source for SAP HANA source.
28526type SapHanaSource struct {
28527	TabularSource
28528	// The packet size of data read from SAP HANA. Type: integer(or Expression with resultType integer).
28529	PacketSize interface{} `json:"packetSize,omitempty"`
28530
28531	// The partition mechanism that will be used for SAP HANA read in parallel.
28532	PartitionOption *SapHanaPartitionOption `json:"partitionOption,omitempty"`
28533
28534	// The settings that will be leveraged for SAP HANA source partitioning.
28535	PartitionSettings *SapHanaPartitionSettings `json:"partitionSettings,omitempty"`
28536
28537	// SAP HANA Sql query. Type: string (or Expression with resultType string).
28538	Query interface{} `json:"query,omitempty"`
28539}
28540
28541// MarshalJSON implements the json.Marshaller interface for type SapHanaSource.
28542func (s SapHanaSource) MarshalJSON() ([]byte, error) {
28543	objectMap := s.TabularSource.marshalInternal("SapHanaSource")
28544	populate(objectMap, "packetSize", s.PacketSize)
28545	populate(objectMap, "partitionOption", s.PartitionOption)
28546	populate(objectMap, "partitionSettings", s.PartitionSettings)
28547	populate(objectMap, "query", s.Query)
28548	return json.Marshal(objectMap)
28549}
28550
28551// UnmarshalJSON implements the json.Unmarshaller interface for type SapHanaSource.
28552func (s *SapHanaSource) UnmarshalJSON(data []byte) error {
28553	var rawMsg map[string]json.RawMessage
28554	if err := json.Unmarshal(data, &rawMsg); err != nil {
28555		return err
28556	}
28557	for key, val := range rawMsg {
28558		var err error
28559		switch key {
28560		case "packetSize":
28561			err = unpopulate(val, &s.PacketSize)
28562			delete(rawMsg, key)
28563		case "partitionOption":
28564			err = unpopulate(val, &s.PartitionOption)
28565			delete(rawMsg, key)
28566		case "partitionSettings":
28567			err = unpopulate(val, &s.PartitionSettings)
28568			delete(rawMsg, key)
28569		case "query":
28570			err = unpopulate(val, &s.Query)
28571			delete(rawMsg, key)
28572		}
28573		if err != nil {
28574			return err
28575		}
28576	}
28577	return s.TabularSource.unmarshalInternal(rawMsg)
28578}
28579
28580// SapHanaTableDataset - SAP HANA Table properties.
28581type SapHanaTableDataset struct {
28582	Dataset
28583	// SAP HANA Table properties.
28584	TypeProperties *SapHanaTableDatasetTypeProperties `json:"typeProperties,omitempty"`
28585}
28586
28587// MarshalJSON implements the json.Marshaller interface for type SapHanaTableDataset.
28588func (s SapHanaTableDataset) MarshalJSON() ([]byte, error) {
28589	objectMap := s.Dataset.marshalInternal("SapHanaTable")
28590	populate(objectMap, "typeProperties", s.TypeProperties)
28591	return json.Marshal(objectMap)
28592}
28593
28594// UnmarshalJSON implements the json.Unmarshaller interface for type SapHanaTableDataset.
28595func (s *SapHanaTableDataset) UnmarshalJSON(data []byte) error {
28596	var rawMsg map[string]json.RawMessage
28597	if err := json.Unmarshal(data, &rawMsg); err != nil {
28598		return err
28599	}
28600	for key, val := range rawMsg {
28601		var err error
28602		switch key {
28603		case "typeProperties":
28604			err = unpopulate(val, &s.TypeProperties)
28605			delete(rawMsg, key)
28606		}
28607		if err != nil {
28608			return err
28609		}
28610	}
28611	return s.Dataset.unmarshalInternal(rawMsg)
28612}
28613
28614// SapHanaTableDatasetTypeProperties - SAP HANA Table properties.
28615type SapHanaTableDatasetTypeProperties struct {
28616	// The schema name of SAP HANA. Type: string (or Expression with resultType string).
28617	Schema interface{} `json:"schema,omitempty"`
28618
28619	// The table name of SAP HANA. Type: string (or Expression with resultType string).
28620	Table interface{} `json:"table,omitempty"`
28621}
28622
28623// SapOpenHubLinkedService - SAP Business Warehouse Open Hub Destination Linked Service.
28624type SapOpenHubLinkedService struct {
28625	LinkedService
28626	// REQUIRED; Properties specific to SAP Business Warehouse Open Hub Destination linked service type.
28627	TypeProperties *SapOpenHubLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
28628}
28629
28630// MarshalJSON implements the json.Marshaller interface for type SapOpenHubLinkedService.
28631func (s SapOpenHubLinkedService) MarshalJSON() ([]byte, error) {
28632	objectMap := s.LinkedService.marshalInternal("SapOpenHub")
28633	populate(objectMap, "typeProperties", s.TypeProperties)
28634	return json.Marshal(objectMap)
28635}
28636
28637// UnmarshalJSON implements the json.Unmarshaller interface for type SapOpenHubLinkedService.
28638func (s *SapOpenHubLinkedService) UnmarshalJSON(data []byte) error {
28639	var rawMsg map[string]json.RawMessage
28640	if err := json.Unmarshal(data, &rawMsg); err != nil {
28641		return err
28642	}
28643	for key, val := range rawMsg {
28644		var err error
28645		switch key {
28646		case "typeProperties":
28647			err = unpopulate(val, &s.TypeProperties)
28648			delete(rawMsg, key)
28649		}
28650		if err != nil {
28651			return err
28652		}
28653	}
28654	return s.LinkedService.unmarshalInternal(rawMsg)
28655}
28656
28657// SapOpenHubLinkedServiceTypeProperties - Properties specific to SAP Business Warehouse Open Hub Destination linked service type.
28658type SapOpenHubLinkedServiceTypeProperties struct {
28659	// REQUIRED; Client ID of the client on the BW system where the open hub destination is located. (Usually a three-digit decimal number represented as a
28660	// string) Type: string (or Expression with resultType string).
28661	ClientID interface{} `json:"clientId,omitempty"`
28662
28663	// REQUIRED; Host name of the SAP BW instance where the open hub destination is located. Type: string (or Expression with resultType string).
28664	Server interface{} `json:"server,omitempty"`
28665
28666	// REQUIRED; System number of the BW system where the open hub destination is located. (Usually a two-digit decimal number represented as a string.) Type:
28667	// string (or Expression with resultType string).
28668	SystemNumber interface{} `json:"systemNumber,omitempty"`
28669
28670	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
28671	// with resultType string).
28672	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
28673
28674	// Language of the BW system where the open hub destination is located. The default value is EN. Type: string (or Expression with resultType string).
28675	Language interface{} `json:"language,omitempty"`
28676
28677	// The Logon Group for the SAP System. Type: string (or Expression with resultType string).
28678	LogonGroup interface{} `json:"logonGroup,omitempty"`
28679
28680	// The hostname of the SAP Message Server. Type: string (or Expression with resultType string).
28681	MessageServer interface{} `json:"messageServer,omitempty"`
28682
28683	// The service name or port number of the Message Server. Type: string (or Expression with resultType string).
28684	MessageServerService interface{} `json:"messageServerService,omitempty"`
28685
28686	// Password to access the SAP BW server where the open hub destination is located.
28687	Password SecretBaseClassification `json:"password,omitempty"`
28688
28689	// SystemID of the SAP system where the table is located. Type: string (or Expression with resultType string).
28690	SystemID interface{} `json:"systemId,omitempty"`
28691
28692	// Username to access the SAP BW server where the open hub destination is located. Type: string (or Expression with resultType string).
28693	UserName interface{} `json:"userName,omitempty"`
28694}
28695
28696// MarshalJSON implements the json.Marshaller interface for type SapOpenHubLinkedServiceTypeProperties.
28697func (s SapOpenHubLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
28698	objectMap := make(map[string]interface{})
28699	populate(objectMap, "clientId", s.ClientID)
28700	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
28701	populate(objectMap, "language", s.Language)
28702	populate(objectMap, "logonGroup", s.LogonGroup)
28703	populate(objectMap, "messageServer", s.MessageServer)
28704	populate(objectMap, "messageServerService", s.MessageServerService)
28705	populate(objectMap, "password", s.Password)
28706	populate(objectMap, "server", s.Server)
28707	populate(objectMap, "systemId", s.SystemID)
28708	populate(objectMap, "systemNumber", s.SystemNumber)
28709	populate(objectMap, "userName", s.UserName)
28710	return json.Marshal(objectMap)
28711}
28712
28713// UnmarshalJSON implements the json.Unmarshaller interface for type SapOpenHubLinkedServiceTypeProperties.
28714func (s *SapOpenHubLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
28715	var rawMsg map[string]json.RawMessage
28716	if err := json.Unmarshal(data, &rawMsg); err != nil {
28717		return err
28718	}
28719	for key, val := range rawMsg {
28720		var err error
28721		switch key {
28722		case "clientId":
28723			err = unpopulate(val, &s.ClientID)
28724			delete(rawMsg, key)
28725		case "encryptedCredential":
28726			err = unpopulate(val, &s.EncryptedCredential)
28727			delete(rawMsg, key)
28728		case "language":
28729			err = unpopulate(val, &s.Language)
28730			delete(rawMsg, key)
28731		case "logonGroup":
28732			err = unpopulate(val, &s.LogonGroup)
28733			delete(rawMsg, key)
28734		case "messageServer":
28735			err = unpopulate(val, &s.MessageServer)
28736			delete(rawMsg, key)
28737		case "messageServerService":
28738			err = unpopulate(val, &s.MessageServerService)
28739			delete(rawMsg, key)
28740		case "password":
28741			s.Password, err = unmarshalSecretBaseClassification(val)
28742			delete(rawMsg, key)
28743		case "server":
28744			err = unpopulate(val, &s.Server)
28745			delete(rawMsg, key)
28746		case "systemId":
28747			err = unpopulate(val, &s.SystemID)
28748			delete(rawMsg, key)
28749		case "systemNumber":
28750			err = unpopulate(val, &s.SystemNumber)
28751			delete(rawMsg, key)
28752		case "userName":
28753			err = unpopulate(val, &s.UserName)
28754			delete(rawMsg, key)
28755		}
28756		if err != nil {
28757			return err
28758		}
28759	}
28760	return nil
28761}
28762
28763// SapOpenHubSource - A copy activity source for SAP Business Warehouse Open Hub Destination source.
28764type SapOpenHubSource struct {
28765	TabularSource
28766	// The ID of request for delta loading. Once it is set, only data with requestId larger than the value of this property will be retrieved. The default value
28767	// is 0. Type: integer (or Expression with
28768	// resultType integer ).
28769	BaseRequestID interface{} `json:"baseRequestId,omitempty"`
28770
28771	// Specifies the custom RFC function module that will be used to read data from SAP Table. Type: string (or Expression with resultType string).
28772	CustomRFCReadTableFunctionModule interface{} `json:"customRfcReadTableFunctionModule,omitempty"`
28773
28774	// Whether to exclude the records of the last request. The default value is true. Type: boolean (or Expression with resultType boolean).
28775	ExcludeLastRequest interface{} `json:"excludeLastRequest,omitempty"`
28776
28777	// The single character that will be used as delimiter passed to SAP RFC as well as splitting the output data retrieved. Type: string (or Expression with
28778	// resultType string).
28779	SapDataColumnDelimiter interface{} `json:"sapDataColumnDelimiter,omitempty"`
28780}
28781
28782// MarshalJSON implements the json.Marshaller interface for type SapOpenHubSource.
28783func (s SapOpenHubSource) MarshalJSON() ([]byte, error) {
28784	objectMap := s.TabularSource.marshalInternal("SapOpenHubSource")
28785	populate(objectMap, "baseRequestId", s.BaseRequestID)
28786	populate(objectMap, "customRfcReadTableFunctionModule", s.CustomRFCReadTableFunctionModule)
28787	populate(objectMap, "excludeLastRequest", s.ExcludeLastRequest)
28788	populate(objectMap, "sapDataColumnDelimiter", s.SapDataColumnDelimiter)
28789	return json.Marshal(objectMap)
28790}
28791
28792// UnmarshalJSON implements the json.Unmarshaller interface for type SapOpenHubSource.
28793func (s *SapOpenHubSource) UnmarshalJSON(data []byte) error {
28794	var rawMsg map[string]json.RawMessage
28795	if err := json.Unmarshal(data, &rawMsg); err != nil {
28796		return err
28797	}
28798	for key, val := range rawMsg {
28799		var err error
28800		switch key {
28801		case "baseRequestId":
28802			err = unpopulate(val, &s.BaseRequestID)
28803			delete(rawMsg, key)
28804		case "customRfcReadTableFunctionModule":
28805			err = unpopulate(val, &s.CustomRFCReadTableFunctionModule)
28806			delete(rawMsg, key)
28807		case "excludeLastRequest":
28808			err = unpopulate(val, &s.ExcludeLastRequest)
28809			delete(rawMsg, key)
28810		case "sapDataColumnDelimiter":
28811			err = unpopulate(val, &s.SapDataColumnDelimiter)
28812			delete(rawMsg, key)
28813		}
28814		if err != nil {
28815			return err
28816		}
28817	}
28818	return s.TabularSource.unmarshalInternal(rawMsg)
28819}
28820
28821// SapOpenHubTableDataset - Sap Business Warehouse Open Hub Destination Table properties.
28822type SapOpenHubTableDataset struct {
28823	Dataset
28824	// REQUIRED; Sap Business Warehouse Open Hub Destination Table properties.
28825	TypeProperties *SapOpenHubTableDatasetTypeProperties `json:"typeProperties,omitempty"`
28826}
28827
28828// MarshalJSON implements the json.Marshaller interface for type SapOpenHubTableDataset.
28829func (s SapOpenHubTableDataset) MarshalJSON() ([]byte, error) {
28830	objectMap := s.Dataset.marshalInternal("SapOpenHubTable")
28831	populate(objectMap, "typeProperties", s.TypeProperties)
28832	return json.Marshal(objectMap)
28833}
28834
28835// UnmarshalJSON implements the json.Unmarshaller interface for type SapOpenHubTableDataset.
28836func (s *SapOpenHubTableDataset) UnmarshalJSON(data []byte) error {
28837	var rawMsg map[string]json.RawMessage
28838	if err := json.Unmarshal(data, &rawMsg); err != nil {
28839		return err
28840	}
28841	for key, val := range rawMsg {
28842		var err error
28843		switch key {
28844		case "typeProperties":
28845			err = unpopulate(val, &s.TypeProperties)
28846			delete(rawMsg, key)
28847		}
28848		if err != nil {
28849			return err
28850		}
28851	}
28852	return s.Dataset.unmarshalInternal(rawMsg)
28853}
28854
28855// SapOpenHubTableDatasetTypeProperties - Sap Business Warehouse Open Hub Destination Table properties.
28856type SapOpenHubTableDatasetTypeProperties struct {
28857	// REQUIRED; The name of the Open Hub Destination with destination type as Database Table. Type: string (or Expression with resultType string).
28858	OpenHubDestinationName interface{} `json:"openHubDestinationName,omitempty"`
28859
28860	// The ID of request for delta loading. Once it is set, only data with requestId larger than the value of this property will be retrieved. The default value
28861	// is 0. Type: integer (or Expression with
28862	// resultType integer ).
28863	BaseRequestID interface{} `json:"baseRequestId,omitempty"`
28864
28865	// Whether to exclude the records of the last request. The default value is true. Type: boolean (or Expression with resultType boolean).
28866	ExcludeLastRequest interface{} `json:"excludeLastRequest,omitempty"`
28867}
28868
28869// SapTableLinkedService - SAP Table Linked Service.
28870type SapTableLinkedService struct {
28871	LinkedService
28872	// REQUIRED; Properties specific to this linked service type.
28873	TypeProperties *SapTableLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
28874}
28875
28876// MarshalJSON implements the json.Marshaller interface for type SapTableLinkedService.
28877func (s SapTableLinkedService) MarshalJSON() ([]byte, error) {
28878	objectMap := s.LinkedService.marshalInternal("SapTable")
28879	populate(objectMap, "typeProperties", s.TypeProperties)
28880	return json.Marshal(objectMap)
28881}
28882
28883// UnmarshalJSON implements the json.Unmarshaller interface for type SapTableLinkedService.
28884func (s *SapTableLinkedService) UnmarshalJSON(data []byte) error {
28885	var rawMsg map[string]json.RawMessage
28886	if err := json.Unmarshal(data, &rawMsg); err != nil {
28887		return err
28888	}
28889	for key, val := range rawMsg {
28890		var err error
28891		switch key {
28892		case "typeProperties":
28893			err = unpopulate(val, &s.TypeProperties)
28894			delete(rawMsg, key)
28895		}
28896		if err != nil {
28897			return err
28898		}
28899	}
28900	return s.LinkedService.unmarshalInternal(rawMsg)
28901}
28902
28903// SapTableLinkedServiceTypeProperties - Properties specific to this linked service type.
28904type SapTableLinkedServiceTypeProperties struct {
28905	// Client ID of the client on the SAP system where the table is located. (Usually a three-digit decimal number represented as a string) Type: string (or
28906	// Expression with resultType string).
28907	ClientID interface{} `json:"clientId,omitempty"`
28908
28909	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
28910	// with resultType string).
28911	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
28912
28913	// Language of the SAP system where the table is located. The default value is EN. Type: string (or Expression with resultType string).
28914	Language interface{} `json:"language,omitempty"`
28915
28916	// The Logon Group for the SAP System. Type: string (or Expression with resultType string).
28917	LogonGroup interface{} `json:"logonGroup,omitempty"`
28918
28919	// The hostname of the SAP Message Server. Type: string (or Expression with resultType string).
28920	MessageServer interface{} `json:"messageServer,omitempty"`
28921
28922	// The service name or port number of the Message Server. Type: string (or Expression with resultType string).
28923	MessageServerService interface{} `json:"messageServerService,omitempty"`
28924
28925	// Password to access the SAP server where the table is located.
28926	Password SecretBaseClassification `json:"password,omitempty"`
28927
28928	// Host name of the SAP instance where the table is located. Type: string (or Expression with resultType string).
28929	Server interface{} `json:"server,omitempty"`
28930
28931	// External security product's library to access the SAP server where the table is located. Type: string (or Expression with resultType string).
28932	SncLibraryPath interface{} `json:"sncLibraryPath,omitempty"`
28933
28934	// SNC activation indicator to access the SAP server where the table is located. Must be either 0 (off) or 1 (on). Type: string (or Expression with resultType
28935	// string).
28936	SncMode interface{} `json:"sncMode,omitempty"`
28937
28938	// Initiator's SNC name to access the SAP server where the table is located. Type: string (or Expression with resultType string).
28939	SncMyName interface{} `json:"sncMyName,omitempty"`
28940
28941	// Communication partner's SNC name to access the SAP server where the table is located. Type: string (or Expression with resultType string).
28942	SncPartnerName interface{} `json:"sncPartnerName,omitempty"`
28943
28944	// SNC Quality of Protection. Allowed value include: 1, 2, 3, 8, 9. Type: string (or Expression with resultType string).
28945	SncQop interface{} `json:"sncQop,omitempty"`
28946
28947	// SystemID of the SAP system where the table is located. Type: string (or Expression with resultType string).
28948	SystemID interface{} `json:"systemId,omitempty"`
28949
28950	// System number of the SAP system where the table is located. (Usually a two-digit decimal number represented as a string.) Type: string (or Expression
28951	// with resultType string).
28952	SystemNumber interface{} `json:"systemNumber,omitempty"`
28953
28954	// Username to access the SAP server where the table is located. Type: string (or Expression with resultType string).
28955	UserName interface{} `json:"userName,omitempty"`
28956}
28957
28958// MarshalJSON implements the json.Marshaller interface for type SapTableLinkedServiceTypeProperties.
28959func (s SapTableLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
28960	objectMap := make(map[string]interface{})
28961	populate(objectMap, "clientId", s.ClientID)
28962	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
28963	populate(objectMap, "language", s.Language)
28964	populate(objectMap, "logonGroup", s.LogonGroup)
28965	populate(objectMap, "messageServer", s.MessageServer)
28966	populate(objectMap, "messageServerService", s.MessageServerService)
28967	populate(objectMap, "password", s.Password)
28968	populate(objectMap, "server", s.Server)
28969	populate(objectMap, "sncLibraryPath", s.SncLibraryPath)
28970	populate(objectMap, "sncMode", s.SncMode)
28971	populate(objectMap, "sncMyName", s.SncMyName)
28972	populate(objectMap, "sncPartnerName", s.SncPartnerName)
28973	populate(objectMap, "sncQop", s.SncQop)
28974	populate(objectMap, "systemId", s.SystemID)
28975	populate(objectMap, "systemNumber", s.SystemNumber)
28976	populate(objectMap, "userName", s.UserName)
28977	return json.Marshal(objectMap)
28978}
28979
28980// UnmarshalJSON implements the json.Unmarshaller interface for type SapTableLinkedServiceTypeProperties.
28981func (s *SapTableLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
28982	var rawMsg map[string]json.RawMessage
28983	if err := json.Unmarshal(data, &rawMsg); err != nil {
28984		return err
28985	}
28986	for key, val := range rawMsg {
28987		var err error
28988		switch key {
28989		case "clientId":
28990			err = unpopulate(val, &s.ClientID)
28991			delete(rawMsg, key)
28992		case "encryptedCredential":
28993			err = unpopulate(val, &s.EncryptedCredential)
28994			delete(rawMsg, key)
28995		case "language":
28996			err = unpopulate(val, &s.Language)
28997			delete(rawMsg, key)
28998		case "logonGroup":
28999			err = unpopulate(val, &s.LogonGroup)
29000			delete(rawMsg, key)
29001		case "messageServer":
29002			err = unpopulate(val, &s.MessageServer)
29003			delete(rawMsg, key)
29004		case "messageServerService":
29005			err = unpopulate(val, &s.MessageServerService)
29006			delete(rawMsg, key)
29007		case "password":
29008			s.Password, err = unmarshalSecretBaseClassification(val)
29009			delete(rawMsg, key)
29010		case "server":
29011			err = unpopulate(val, &s.Server)
29012			delete(rawMsg, key)
29013		case "sncLibraryPath":
29014			err = unpopulate(val, &s.SncLibraryPath)
29015			delete(rawMsg, key)
29016		case "sncMode":
29017			err = unpopulate(val, &s.SncMode)
29018			delete(rawMsg, key)
29019		case "sncMyName":
29020			err = unpopulate(val, &s.SncMyName)
29021			delete(rawMsg, key)
29022		case "sncPartnerName":
29023			err = unpopulate(val, &s.SncPartnerName)
29024			delete(rawMsg, key)
29025		case "sncQop":
29026			err = unpopulate(val, &s.SncQop)
29027			delete(rawMsg, key)
29028		case "systemId":
29029			err = unpopulate(val, &s.SystemID)
29030			delete(rawMsg, key)
29031		case "systemNumber":
29032			err = unpopulate(val, &s.SystemNumber)
29033			delete(rawMsg, key)
29034		case "userName":
29035			err = unpopulate(val, &s.UserName)
29036			delete(rawMsg, key)
29037		}
29038		if err != nil {
29039			return err
29040		}
29041	}
29042	return nil
29043}
29044
29045// SapTablePartitionSettings - The settings that will be leveraged for SAP table source partitioning.
29046type SapTablePartitionSettings struct {
29047	// The maximum value of partitions the table will be split into. Type: integer (or Expression with resultType string).
29048	MaxPartitionsNumber interface{} `json:"maxPartitionsNumber,omitempty"`
29049
29050	// The name of the column that will be used for proceeding range partitioning. Type: string (or Expression with resultType string).
29051	PartitionColumnName interface{} `json:"partitionColumnName,omitempty"`
29052
29053	// The minimum value of column specified in partitionColumnName that will be used for proceeding range partitioning. Type: string (or Expression with resultType
29054	// string).
29055	PartitionLowerBound interface{} `json:"partitionLowerBound,omitempty"`
29056
29057	// The maximum value of column specified in partitionColumnName that will be used for proceeding range partitioning. Type: string (or Expression with resultType
29058	// string).
29059	PartitionUpperBound interface{} `json:"partitionUpperBound,omitempty"`
29060}
29061
29062// SapTableResourceDataset - SAP Table Resource properties.
29063type SapTableResourceDataset struct {
29064	Dataset
29065	// REQUIRED; SAP Table Resource properties.
29066	TypeProperties *SapTableResourceDatasetTypeProperties `json:"typeProperties,omitempty"`
29067}
29068
29069// MarshalJSON implements the json.Marshaller interface for type SapTableResourceDataset.
29070func (s SapTableResourceDataset) MarshalJSON() ([]byte, error) {
29071	objectMap := s.Dataset.marshalInternal("SapTableResource")
29072	populate(objectMap, "typeProperties", s.TypeProperties)
29073	return json.Marshal(objectMap)
29074}
29075
29076// UnmarshalJSON implements the json.Unmarshaller interface for type SapTableResourceDataset.
29077func (s *SapTableResourceDataset) UnmarshalJSON(data []byte) error {
29078	var rawMsg map[string]json.RawMessage
29079	if err := json.Unmarshal(data, &rawMsg); err != nil {
29080		return err
29081	}
29082	for key, val := range rawMsg {
29083		var err error
29084		switch key {
29085		case "typeProperties":
29086			err = unpopulate(val, &s.TypeProperties)
29087			delete(rawMsg, key)
29088		}
29089		if err != nil {
29090			return err
29091		}
29092	}
29093	return s.Dataset.unmarshalInternal(rawMsg)
29094}
29095
29096// SapTableResourceDatasetTypeProperties - SAP Table Resource properties.
29097type SapTableResourceDatasetTypeProperties struct {
29098	// REQUIRED; The name of the SAP Table. Type: string (or Expression with resultType string).
29099	TableName interface{} `json:"tableName,omitempty"`
29100}
29101
29102// SapTableSource - A copy activity source for SAP Table source.
29103type SapTableSource struct {
29104	TabularSource
29105	// Specifies the maximum number of rows that will be retrieved at a time when retrieving data from SAP Table. Type: integer (or Expression with resultType
29106	// integer).
29107	BatchSize interface{} `json:"batchSize,omitempty"`
29108
29109	// Specifies the custom RFC function module that will be used to read data from SAP Table. Type: string (or Expression with resultType string).
29110	CustomRFCReadTableFunctionModule interface{} `json:"customRfcReadTableFunctionModule,omitempty"`
29111
29112	// The partition mechanism that will be used for SAP table read in parallel.
29113	PartitionOption *SapTablePartitionOption `json:"partitionOption,omitempty"`
29114
29115	// The settings that will be leveraged for SAP table source partitioning.
29116	PartitionSettings *SapTablePartitionSettings `json:"partitionSettings,omitempty"`
29117
29118	// The fields of the SAP table that will be retrieved. For example, column0, column1. Type: string (or Expression with resultType string).
29119	RFCTableFields interface{} `json:"rfcTableFields,omitempty"`
29120
29121	// The options for the filtering of the SAP Table. For example, COLUMN0 EQ SOME VALUE. Type: string (or Expression with resultType string).
29122	RFCTableOptions interface{} `json:"rfcTableOptions,omitempty"`
29123
29124	// The number of rows to be retrieved. Type: integer(or Expression with resultType integer).
29125	RowCount interface{} `json:"rowCount,omitempty"`
29126
29127	// The number of rows that will be skipped. Type: integer (or Expression with resultType integer).
29128	RowSkips interface{} `json:"rowSkips,omitempty"`
29129
29130	// The single character that will be used as delimiter passed to SAP RFC as well as splitting the output data retrieved. Type: string (or Expression with
29131	// resultType string).
29132	SapDataColumnDelimiter interface{} `json:"sapDataColumnDelimiter,omitempty"`
29133}
29134
29135// MarshalJSON implements the json.Marshaller interface for type SapTableSource.
29136func (s SapTableSource) MarshalJSON() ([]byte, error) {
29137	objectMap := s.TabularSource.marshalInternal("SapTableSource")
29138	populate(objectMap, "batchSize", s.BatchSize)
29139	populate(objectMap, "customRfcReadTableFunctionModule", s.CustomRFCReadTableFunctionModule)
29140	populate(objectMap, "partitionOption", s.PartitionOption)
29141	populate(objectMap, "partitionSettings", s.PartitionSettings)
29142	populate(objectMap, "rfcTableFields", s.RFCTableFields)
29143	populate(objectMap, "rfcTableOptions", s.RFCTableOptions)
29144	populate(objectMap, "rowCount", s.RowCount)
29145	populate(objectMap, "rowSkips", s.RowSkips)
29146	populate(objectMap, "sapDataColumnDelimiter", s.SapDataColumnDelimiter)
29147	return json.Marshal(objectMap)
29148}
29149
29150// UnmarshalJSON implements the json.Unmarshaller interface for type SapTableSource.
29151func (s *SapTableSource) UnmarshalJSON(data []byte) error {
29152	var rawMsg map[string]json.RawMessage
29153	if err := json.Unmarshal(data, &rawMsg); err != nil {
29154		return err
29155	}
29156	for key, val := range rawMsg {
29157		var err error
29158		switch key {
29159		case "batchSize":
29160			err = unpopulate(val, &s.BatchSize)
29161			delete(rawMsg, key)
29162		case "customRfcReadTableFunctionModule":
29163			err = unpopulate(val, &s.CustomRFCReadTableFunctionModule)
29164			delete(rawMsg, key)
29165		case "partitionOption":
29166			err = unpopulate(val, &s.PartitionOption)
29167			delete(rawMsg, key)
29168		case "partitionSettings":
29169			err = unpopulate(val, &s.PartitionSettings)
29170			delete(rawMsg, key)
29171		case "rfcTableFields":
29172			err = unpopulate(val, &s.RFCTableFields)
29173			delete(rawMsg, key)
29174		case "rfcTableOptions":
29175			err = unpopulate(val, &s.RFCTableOptions)
29176			delete(rawMsg, key)
29177		case "rowCount":
29178			err = unpopulate(val, &s.RowCount)
29179			delete(rawMsg, key)
29180		case "rowSkips":
29181			err = unpopulate(val, &s.RowSkips)
29182			delete(rawMsg, key)
29183		case "sapDataColumnDelimiter":
29184			err = unpopulate(val, &s.SapDataColumnDelimiter)
29185			delete(rawMsg, key)
29186		}
29187		if err != nil {
29188			return err
29189		}
29190	}
29191	return s.TabularSource.unmarshalInternal(rawMsg)
29192}
29193
29194// ScheduleTrigger - Trigger that creates pipeline runs periodically, on schedule.
29195type ScheduleTrigger struct {
29196	MultiplePipelineTrigger
29197	// REQUIRED; Schedule Trigger properties.
29198	TypeProperties *ScheduleTriggerTypeProperties `json:"typeProperties,omitempty"`
29199}
29200
29201// MarshalJSON implements the json.Marshaller interface for type ScheduleTrigger.
29202func (s ScheduleTrigger) MarshalJSON() ([]byte, error) {
29203	objectMap := s.MultiplePipelineTrigger.marshalInternal("ScheduleTrigger")
29204	populate(objectMap, "typeProperties", s.TypeProperties)
29205	return json.Marshal(objectMap)
29206}
29207
29208// UnmarshalJSON implements the json.Unmarshaller interface for type ScheduleTrigger.
29209func (s *ScheduleTrigger) UnmarshalJSON(data []byte) error {
29210	var rawMsg map[string]json.RawMessage
29211	if err := json.Unmarshal(data, &rawMsg); err != nil {
29212		return err
29213	}
29214	for key, val := range rawMsg {
29215		var err error
29216		switch key {
29217		case "typeProperties":
29218			err = unpopulate(val, &s.TypeProperties)
29219			delete(rawMsg, key)
29220		}
29221		if err != nil {
29222			return err
29223		}
29224	}
29225	return s.MultiplePipelineTrigger.unmarshalInternal(rawMsg)
29226}
29227
29228// ScheduleTriggerRecurrence - The workflow trigger recurrence.
29229type ScheduleTriggerRecurrence struct {
29230	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
29231	AdditionalProperties map[string]interface{}
29232
29233	// The end time.
29234	EndTime *time.Time `json:"endTime,omitempty"`
29235
29236	// The frequency.
29237	Frequency *RecurrenceFrequency `json:"frequency,omitempty"`
29238
29239	// The interval.
29240	Interval *int32 `json:"interval,omitempty"`
29241
29242	// The recurrence schedule.
29243	Schedule *RecurrenceSchedule `json:"schedule,omitempty"`
29244
29245	// The start time.
29246	StartTime *time.Time `json:"startTime,omitempty"`
29247
29248	// The time zone.
29249	TimeZone *string `json:"timeZone,omitempty"`
29250}
29251
29252// MarshalJSON implements the json.Marshaller interface for type ScheduleTriggerRecurrence.
29253func (s ScheduleTriggerRecurrence) MarshalJSON() ([]byte, error) {
29254	objectMap := make(map[string]interface{})
29255	populate(objectMap, "endTime", (*timeRFC3339)(s.EndTime))
29256	populate(objectMap, "frequency", s.Frequency)
29257	populate(objectMap, "interval", s.Interval)
29258	populate(objectMap, "schedule", s.Schedule)
29259	populate(objectMap, "startTime", (*timeRFC3339)(s.StartTime))
29260	populate(objectMap, "timeZone", s.TimeZone)
29261	if s.AdditionalProperties != nil {
29262		for key, val := range s.AdditionalProperties {
29263			objectMap[key] = val
29264		}
29265	}
29266	return json.Marshal(objectMap)
29267}
29268
29269// UnmarshalJSON implements the json.Unmarshaller interface for type ScheduleTriggerRecurrence.
29270func (s *ScheduleTriggerRecurrence) UnmarshalJSON(data []byte) error {
29271	var rawMsg map[string]json.RawMessage
29272	if err := json.Unmarshal(data, &rawMsg); err != nil {
29273		return err
29274	}
29275	for key, val := range rawMsg {
29276		var err error
29277		switch key {
29278		case "endTime":
29279			var aux timeRFC3339
29280			err = unpopulate(val, &aux)
29281			s.EndTime = (*time.Time)(&aux)
29282			delete(rawMsg, key)
29283		case "frequency":
29284			err = unpopulate(val, &s.Frequency)
29285			delete(rawMsg, key)
29286		case "interval":
29287			err = unpopulate(val, &s.Interval)
29288			delete(rawMsg, key)
29289		case "schedule":
29290			err = unpopulate(val, &s.Schedule)
29291			delete(rawMsg, key)
29292		case "startTime":
29293			var aux timeRFC3339
29294			err = unpopulate(val, &aux)
29295			s.StartTime = (*time.Time)(&aux)
29296			delete(rawMsg, key)
29297		case "timeZone":
29298			err = unpopulate(val, &s.TimeZone)
29299			delete(rawMsg, key)
29300		default:
29301			if s.AdditionalProperties == nil {
29302				s.AdditionalProperties = map[string]interface{}{}
29303			}
29304			if val != nil {
29305				var aux interface{}
29306				err = json.Unmarshal(val, &aux)
29307				s.AdditionalProperties[key] = aux
29308			}
29309			delete(rawMsg, key)
29310		}
29311		if err != nil {
29312			return err
29313		}
29314	}
29315	return nil
29316}
29317
29318// ScheduleTriggerTypeProperties - Schedule Trigger properties.
29319type ScheduleTriggerTypeProperties struct {
29320	// REQUIRED; Recurrence schedule configuration.
29321	Recurrence *ScheduleTriggerRecurrence `json:"recurrence,omitempty"`
29322}
29323
29324// ScriptAction - Custom script action to run on HDI ondemand cluster once it's up.
29325type ScriptAction struct {
29326	// REQUIRED; The user provided name of the script action.
29327	Name *string `json:"name,omitempty"`
29328
29329	// REQUIRED; The node types on which the script action should be executed.
29330	Roles *HdiNodeTypes `json:"roles,omitempty"`
29331
29332	// REQUIRED; The URI for the script action.
29333	URI *string `json:"uri,omitempty"`
29334
29335	// The parameters for the script action.
29336	Parameters *string `json:"parameters,omitempty"`
29337}
29338
29339// SecretBaseClassification provides polymorphic access to related types.
29340// Call the interface's GetSecretBase() method to access the common type.
29341// Use a type switch to determine the concrete type.  The possible types are:
29342// - *AzureKeyVaultSecretReference, *SecretBase, *SecureString
29343type SecretBaseClassification interface {
29344	// GetSecretBase returns the SecretBase content of the underlying type.
29345	GetSecretBase() *SecretBase
29346}
29347
29348// SecretBase - The base definition of a secret type.
29349type SecretBase struct {
29350	// REQUIRED; Type of the secret.
29351	Type *string `json:"type,omitempty"`
29352}
29353
29354// GetSecretBase implements the SecretBaseClassification interface for type SecretBase.
29355func (s *SecretBase) GetSecretBase() *SecretBase { return s }
29356
29357// UnmarshalJSON implements the json.Unmarshaller interface for type SecretBase.
29358func (s *SecretBase) UnmarshalJSON(data []byte) error {
29359	var rawMsg map[string]json.RawMessage
29360	if err := json.Unmarshal(data, &rawMsg); err != nil {
29361		return err
29362	}
29363	return s.unmarshalInternal(rawMsg)
29364}
29365
29366func (s SecretBase) marshalInternal(discValue string) map[string]interface{} {
29367	objectMap := make(map[string]interface{})
29368	s.Type = &discValue
29369	objectMap["type"] = s.Type
29370	return objectMap
29371}
29372
29373func (s *SecretBase) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
29374	for key, val := range rawMsg {
29375		var err error
29376		switch key {
29377		case "type":
29378			err = unpopulate(val, &s.Type)
29379			delete(rawMsg, key)
29380		}
29381		if err != nil {
29382			return err
29383		}
29384	}
29385	return nil
29386}
29387
29388// SecureString - Azure Synapse secure string definition. The string value will be masked with asterisks '*' during Get or List API calls.
29389type SecureString struct {
29390	SecretBase
29391	// REQUIRED; Value of secure string.
29392	Value *string `json:"value,omitempty"`
29393}
29394
29395// MarshalJSON implements the json.Marshaller interface for type SecureString.
29396func (s SecureString) MarshalJSON() ([]byte, error) {
29397	objectMap := s.SecretBase.marshalInternal("SecureString")
29398	populate(objectMap, "value", s.Value)
29399	return json.Marshal(objectMap)
29400}
29401
29402// UnmarshalJSON implements the json.Unmarshaller interface for type SecureString.
29403func (s *SecureString) UnmarshalJSON(data []byte) error {
29404	var rawMsg map[string]json.RawMessage
29405	if err := json.Unmarshal(data, &rawMsg); err != nil {
29406		return err
29407	}
29408	for key, val := range rawMsg {
29409		var err error
29410		switch key {
29411		case "value":
29412			err = unpopulate(val, &s.Value)
29413			delete(rawMsg, key)
29414		}
29415		if err != nil {
29416			return err
29417		}
29418	}
29419	return s.SecretBase.unmarshalInternal(rawMsg)
29420}
29421
29422// SelfDependencyTumblingWindowTriggerReference - Self referenced tumbling window trigger dependency.
29423type SelfDependencyTumblingWindowTriggerReference struct {
29424	DependencyReference
29425	// REQUIRED; Timespan applied to the start time of a tumbling window when evaluating dependency.
29426	Offset *string `json:"offset,omitempty"`
29427
29428	// The size of the window when evaluating the dependency. If undefined the frequency of the tumbling window will be used.
29429	Size *string `json:"size,omitempty"`
29430}
29431
29432// MarshalJSON implements the json.Marshaller interface for type SelfDependencyTumblingWindowTriggerReference.
29433func (s SelfDependencyTumblingWindowTriggerReference) MarshalJSON() ([]byte, error) {
29434	objectMap := s.DependencyReference.marshalInternal("SelfDependencyTumblingWindowTriggerReference")
29435	populate(objectMap, "offset", s.Offset)
29436	populate(objectMap, "size", s.Size)
29437	return json.Marshal(objectMap)
29438}
29439
29440// UnmarshalJSON implements the json.Unmarshaller interface for type SelfDependencyTumblingWindowTriggerReference.
29441func (s *SelfDependencyTumblingWindowTriggerReference) UnmarshalJSON(data []byte) error {
29442	var rawMsg map[string]json.RawMessage
29443	if err := json.Unmarshal(data, &rawMsg); err != nil {
29444		return err
29445	}
29446	for key, val := range rawMsg {
29447		var err error
29448		switch key {
29449		case "offset":
29450			err = unpopulate(val, &s.Offset)
29451			delete(rawMsg, key)
29452		case "size":
29453			err = unpopulate(val, &s.Size)
29454			delete(rawMsg, key)
29455		}
29456		if err != nil {
29457			return err
29458		}
29459	}
29460	return s.DependencyReference.unmarshalInternal(rawMsg)
29461}
29462
29463// SelfHostedIntegrationRuntime - Self-hosted integration runtime.
29464type SelfHostedIntegrationRuntime struct {
29465	IntegrationRuntime
29466	// When this property is not null, means this is a linked integration runtime. The property is used to access original integration runtime.
29467	TypeProperties *SelfHostedIntegrationRuntimeTypeProperties `json:"typeProperties,omitempty"`
29468}
29469
29470// MarshalJSON implements the json.Marshaller interface for type SelfHostedIntegrationRuntime.
29471func (s SelfHostedIntegrationRuntime) MarshalJSON() ([]byte, error) {
29472	objectMap := s.IntegrationRuntime.marshalInternal(IntegrationRuntimeTypeSelfHosted)
29473	populate(objectMap, "typeProperties", s.TypeProperties)
29474	return json.Marshal(objectMap)
29475}
29476
29477// UnmarshalJSON implements the json.Unmarshaller interface for type SelfHostedIntegrationRuntime.
29478func (s *SelfHostedIntegrationRuntime) UnmarshalJSON(data []byte) error {
29479	var rawMsg map[string]json.RawMessage
29480	if err := json.Unmarshal(data, &rawMsg); err != nil {
29481		return err
29482	}
29483	for key, val := range rawMsg {
29484		var err error
29485		switch key {
29486		case "typeProperties":
29487			err = unpopulate(val, &s.TypeProperties)
29488			delete(rawMsg, key)
29489		}
29490		if err != nil {
29491			return err
29492		}
29493	}
29494	return s.IntegrationRuntime.unmarshalInternal(rawMsg)
29495}
29496
29497// SelfHostedIntegrationRuntimeTypeProperties - The self-hosted integration runtime properties.
29498type SelfHostedIntegrationRuntimeTypeProperties struct {
29499	// Linked integration runtime type from data factory
29500	LinkedInfo LinkedIntegrationRuntimeTypeClassification `json:"linkedInfo,omitempty"`
29501}
29502
29503// MarshalJSON implements the json.Marshaller interface for type SelfHostedIntegrationRuntimeTypeProperties.
29504func (s SelfHostedIntegrationRuntimeTypeProperties) MarshalJSON() ([]byte, error) {
29505	objectMap := make(map[string]interface{})
29506	populate(objectMap, "linkedInfo", s.LinkedInfo)
29507	return json.Marshal(objectMap)
29508}
29509
29510// UnmarshalJSON implements the json.Unmarshaller interface for type SelfHostedIntegrationRuntimeTypeProperties.
29511func (s *SelfHostedIntegrationRuntimeTypeProperties) UnmarshalJSON(data []byte) error {
29512	var rawMsg map[string]json.RawMessage
29513	if err := json.Unmarshal(data, &rawMsg); err != nil {
29514		return err
29515	}
29516	for key, val := range rawMsg {
29517		var err error
29518		switch key {
29519		case "linkedInfo":
29520			s.LinkedInfo, err = unmarshalLinkedIntegrationRuntimeTypeClassification(val)
29521			delete(rawMsg, key)
29522		}
29523		if err != nil {
29524			return err
29525		}
29526	}
29527	return nil
29528}
29529
29530// ServiceNowLinkedService - ServiceNow server linked service.
29531type ServiceNowLinkedService struct {
29532	LinkedService
29533	// REQUIRED; ServiceNow server linked service properties.
29534	TypeProperties *ServiceNowLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
29535}
29536
29537// MarshalJSON implements the json.Marshaller interface for type ServiceNowLinkedService.
29538func (s ServiceNowLinkedService) MarshalJSON() ([]byte, error) {
29539	objectMap := s.LinkedService.marshalInternal("ServiceNow")
29540	populate(objectMap, "typeProperties", s.TypeProperties)
29541	return json.Marshal(objectMap)
29542}
29543
29544// UnmarshalJSON implements the json.Unmarshaller interface for type ServiceNowLinkedService.
29545func (s *ServiceNowLinkedService) UnmarshalJSON(data []byte) error {
29546	var rawMsg map[string]json.RawMessage
29547	if err := json.Unmarshal(data, &rawMsg); err != nil {
29548		return err
29549	}
29550	for key, val := range rawMsg {
29551		var err error
29552		switch key {
29553		case "typeProperties":
29554			err = unpopulate(val, &s.TypeProperties)
29555			delete(rawMsg, key)
29556		}
29557		if err != nil {
29558			return err
29559		}
29560	}
29561	return s.LinkedService.unmarshalInternal(rawMsg)
29562}
29563
29564// ServiceNowLinkedServiceTypeProperties - ServiceNow server linked service properties.
29565type ServiceNowLinkedServiceTypeProperties struct {
29566	// REQUIRED; The authentication type to use.
29567	AuthenticationType *ServiceNowAuthenticationType `json:"authenticationType,omitempty"`
29568
29569	// REQUIRED; The endpoint of the ServiceNow server. (i.e. .service-now.com)
29570	Endpoint interface{} `json:"endpoint,omitempty"`
29571
29572	// The client id for OAuth2 authentication.
29573	ClientID interface{} `json:"clientId,omitempty"`
29574
29575	// The client secret for OAuth2 authentication.
29576	ClientSecret SecretBaseClassification `json:"clientSecret,omitempty"`
29577
29578	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
29579	// with resultType string).
29580	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
29581
29582	// The password corresponding to the user name for Basic and OAuth2 authentication.
29583	Password SecretBaseClassification `json:"password,omitempty"`
29584
29585	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
29586	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
29587
29588	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
29589	// is true.
29590	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
29591
29592	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
29593	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
29594
29595	// The user name used to connect to the ServiceNow server for Basic and OAuth2 authentication.
29596	Username interface{} `json:"username,omitempty"`
29597}
29598
29599// MarshalJSON implements the json.Marshaller interface for type ServiceNowLinkedServiceTypeProperties.
29600func (s ServiceNowLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
29601	objectMap := make(map[string]interface{})
29602	populate(objectMap, "authenticationType", s.AuthenticationType)
29603	populate(objectMap, "clientId", s.ClientID)
29604	populate(objectMap, "clientSecret", s.ClientSecret)
29605	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
29606	populate(objectMap, "endpoint", s.Endpoint)
29607	populate(objectMap, "password", s.Password)
29608	populate(objectMap, "useEncryptedEndpoints", s.UseEncryptedEndpoints)
29609	populate(objectMap, "useHostVerification", s.UseHostVerification)
29610	populate(objectMap, "usePeerVerification", s.UsePeerVerification)
29611	populate(objectMap, "username", s.Username)
29612	return json.Marshal(objectMap)
29613}
29614
29615// UnmarshalJSON implements the json.Unmarshaller interface for type ServiceNowLinkedServiceTypeProperties.
29616func (s *ServiceNowLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
29617	var rawMsg map[string]json.RawMessage
29618	if err := json.Unmarshal(data, &rawMsg); err != nil {
29619		return err
29620	}
29621	for key, val := range rawMsg {
29622		var err error
29623		switch key {
29624		case "authenticationType":
29625			err = unpopulate(val, &s.AuthenticationType)
29626			delete(rawMsg, key)
29627		case "clientId":
29628			err = unpopulate(val, &s.ClientID)
29629			delete(rawMsg, key)
29630		case "clientSecret":
29631			s.ClientSecret, err = unmarshalSecretBaseClassification(val)
29632			delete(rawMsg, key)
29633		case "encryptedCredential":
29634			err = unpopulate(val, &s.EncryptedCredential)
29635			delete(rawMsg, key)
29636		case "endpoint":
29637			err = unpopulate(val, &s.Endpoint)
29638			delete(rawMsg, key)
29639		case "password":
29640			s.Password, err = unmarshalSecretBaseClassification(val)
29641			delete(rawMsg, key)
29642		case "useEncryptedEndpoints":
29643			err = unpopulate(val, &s.UseEncryptedEndpoints)
29644			delete(rawMsg, key)
29645		case "useHostVerification":
29646			err = unpopulate(val, &s.UseHostVerification)
29647			delete(rawMsg, key)
29648		case "usePeerVerification":
29649			err = unpopulate(val, &s.UsePeerVerification)
29650			delete(rawMsg, key)
29651		case "username":
29652			err = unpopulate(val, &s.Username)
29653			delete(rawMsg, key)
29654		}
29655		if err != nil {
29656			return err
29657		}
29658	}
29659	return nil
29660}
29661
29662// ServiceNowObjectDataset - ServiceNow server dataset.
29663type ServiceNowObjectDataset struct {
29664	Dataset
29665	// Properties specific to this dataset type.
29666	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
29667}
29668
29669// MarshalJSON implements the json.Marshaller interface for type ServiceNowObjectDataset.
29670func (s ServiceNowObjectDataset) MarshalJSON() ([]byte, error) {
29671	objectMap := s.Dataset.marshalInternal("ServiceNowObject")
29672	populate(objectMap, "typeProperties", s.TypeProperties)
29673	return json.Marshal(objectMap)
29674}
29675
29676// UnmarshalJSON implements the json.Unmarshaller interface for type ServiceNowObjectDataset.
29677func (s *ServiceNowObjectDataset) UnmarshalJSON(data []byte) error {
29678	var rawMsg map[string]json.RawMessage
29679	if err := json.Unmarshal(data, &rawMsg); err != nil {
29680		return err
29681	}
29682	for key, val := range rawMsg {
29683		var err error
29684		switch key {
29685		case "typeProperties":
29686			err = unpopulate(val, &s.TypeProperties)
29687			delete(rawMsg, key)
29688		}
29689		if err != nil {
29690			return err
29691		}
29692	}
29693	return s.Dataset.unmarshalInternal(rawMsg)
29694}
29695
29696// ServiceNowSource - A copy activity ServiceNow server source.
29697type ServiceNowSource struct {
29698	TabularSource
29699	// A query to retrieve data from source. Type: string (or Expression with resultType string).
29700	Query interface{} `json:"query,omitempty"`
29701}
29702
29703// MarshalJSON implements the json.Marshaller interface for type ServiceNowSource.
29704func (s ServiceNowSource) MarshalJSON() ([]byte, error) {
29705	objectMap := s.TabularSource.marshalInternal("ServiceNowSource")
29706	populate(objectMap, "query", s.Query)
29707	return json.Marshal(objectMap)
29708}
29709
29710// UnmarshalJSON implements the json.Unmarshaller interface for type ServiceNowSource.
29711func (s *ServiceNowSource) UnmarshalJSON(data []byte) error {
29712	var rawMsg map[string]json.RawMessage
29713	if err := json.Unmarshal(data, &rawMsg); err != nil {
29714		return err
29715	}
29716	for key, val := range rawMsg {
29717		var err error
29718		switch key {
29719		case "query":
29720			err = unpopulate(val, &s.Query)
29721			delete(rawMsg, key)
29722		}
29723		if err != nil {
29724			return err
29725		}
29726	}
29727	return s.TabularSource.unmarshalInternal(rawMsg)
29728}
29729
29730// SetVariableActivity - Set value for a Variable.
29731type SetVariableActivity struct {
29732	ControlActivity
29733	// REQUIRED; Set Variable activity properties.
29734	TypeProperties *SetVariableActivityTypeProperties `json:"typeProperties,omitempty"`
29735}
29736
29737// MarshalJSON implements the json.Marshaller interface for type SetVariableActivity.
29738func (s SetVariableActivity) MarshalJSON() ([]byte, error) {
29739	objectMap := s.ControlActivity.marshalInternal("SetVariable")
29740	populate(objectMap, "typeProperties", s.TypeProperties)
29741	return json.Marshal(objectMap)
29742}
29743
29744// UnmarshalJSON implements the json.Unmarshaller interface for type SetVariableActivity.
29745func (s *SetVariableActivity) UnmarshalJSON(data []byte) error {
29746	var rawMsg map[string]json.RawMessage
29747	if err := json.Unmarshal(data, &rawMsg); err != nil {
29748		return err
29749	}
29750	for key, val := range rawMsg {
29751		var err error
29752		switch key {
29753		case "typeProperties":
29754			err = unpopulate(val, &s.TypeProperties)
29755			delete(rawMsg, key)
29756		}
29757		if err != nil {
29758			return err
29759		}
29760	}
29761	return s.ControlActivity.unmarshalInternal(rawMsg)
29762}
29763
29764// SetVariableActivityTypeProperties - SetVariable activity properties.
29765type SetVariableActivityTypeProperties struct {
29766	// Value to be set. Could be a static value or Expression
29767	Value interface{} `json:"value,omitempty"`
29768
29769	// Name of the variable whose value needs to be set.
29770	VariableName *string `json:"variableName,omitempty"`
29771}
29772
29773// SftpLocation - The location of SFTP dataset.
29774type SftpLocation struct {
29775	DatasetLocation
29776}
29777
29778// MarshalJSON implements the json.Marshaller interface for type SftpLocation.
29779func (s SftpLocation) MarshalJSON() ([]byte, error) {
29780	objectMap := s.DatasetLocation.marshalInternal("SftpLocation")
29781	return json.Marshal(objectMap)
29782}
29783
29784// SftpReadSettings - Sftp read settings.
29785type SftpReadSettings struct {
29786	StoreReadSettings
29787	// Indicates whether the source files need to be deleted after copy completion. Default is false. Type: boolean (or Expression with resultType boolean).
29788	DeleteFilesAfterCompletion interface{} `json:"deleteFilesAfterCompletion,omitempty"`
29789
29790	// Indicates whether to enable partition discovery.
29791	EnablePartitionDiscovery *bool `json:"enablePartitionDiscovery,omitempty"`
29792
29793	// Point to a text file that lists each file (relative path to the path configured in the dataset) that you want to copy. Type: string (or Expression with
29794	// resultType string).
29795	FileListPath interface{} `json:"fileListPath,omitempty"`
29796
29797	// The end of file's modified datetime. Type: string (or Expression with resultType string).
29798	ModifiedDatetimeEnd interface{} `json:"modifiedDatetimeEnd,omitempty"`
29799
29800	// The start of file's modified datetime. Type: string (or Expression with resultType string).
29801	ModifiedDatetimeStart interface{} `json:"modifiedDatetimeStart,omitempty"`
29802
29803	// Specify the root path where partition discovery starts from. Type: string (or Expression with resultType string).
29804	PartitionRootPath interface{} `json:"partitionRootPath,omitempty"`
29805
29806	// If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
29807	Recursive interface{} `json:"recursive,omitempty"`
29808
29809	// Sftp wildcardFileName. Type: string (or Expression with resultType string).
29810	WildcardFileName interface{} `json:"wildcardFileName,omitempty"`
29811
29812	// Sftp wildcardFolderPath. Type: string (or Expression with resultType string).
29813	WildcardFolderPath interface{} `json:"wildcardFolderPath,omitempty"`
29814}
29815
29816// MarshalJSON implements the json.Marshaller interface for type SftpReadSettings.
29817func (s SftpReadSettings) MarshalJSON() ([]byte, error) {
29818	objectMap := s.StoreReadSettings.marshalInternal("SftpReadSettings")
29819	populate(objectMap, "deleteFilesAfterCompletion", s.DeleteFilesAfterCompletion)
29820	populate(objectMap, "enablePartitionDiscovery", s.EnablePartitionDiscovery)
29821	populate(objectMap, "fileListPath", s.FileListPath)
29822	populate(objectMap, "modifiedDatetimeEnd", s.ModifiedDatetimeEnd)
29823	populate(objectMap, "modifiedDatetimeStart", s.ModifiedDatetimeStart)
29824	populate(objectMap, "partitionRootPath", s.PartitionRootPath)
29825	populate(objectMap, "recursive", s.Recursive)
29826	populate(objectMap, "wildcardFileName", s.WildcardFileName)
29827	populate(objectMap, "wildcardFolderPath", s.WildcardFolderPath)
29828	return json.Marshal(objectMap)
29829}
29830
29831// UnmarshalJSON implements the json.Unmarshaller interface for type SftpReadSettings.
29832func (s *SftpReadSettings) UnmarshalJSON(data []byte) error {
29833	var rawMsg map[string]json.RawMessage
29834	if err := json.Unmarshal(data, &rawMsg); err != nil {
29835		return err
29836	}
29837	for key, val := range rawMsg {
29838		var err error
29839		switch key {
29840		case "deleteFilesAfterCompletion":
29841			err = unpopulate(val, &s.DeleteFilesAfterCompletion)
29842			delete(rawMsg, key)
29843		case "enablePartitionDiscovery":
29844			err = unpopulate(val, &s.EnablePartitionDiscovery)
29845			delete(rawMsg, key)
29846		case "fileListPath":
29847			err = unpopulate(val, &s.FileListPath)
29848			delete(rawMsg, key)
29849		case "modifiedDatetimeEnd":
29850			err = unpopulate(val, &s.ModifiedDatetimeEnd)
29851			delete(rawMsg, key)
29852		case "modifiedDatetimeStart":
29853			err = unpopulate(val, &s.ModifiedDatetimeStart)
29854			delete(rawMsg, key)
29855		case "partitionRootPath":
29856			err = unpopulate(val, &s.PartitionRootPath)
29857			delete(rawMsg, key)
29858		case "recursive":
29859			err = unpopulate(val, &s.Recursive)
29860			delete(rawMsg, key)
29861		case "wildcardFileName":
29862			err = unpopulate(val, &s.WildcardFileName)
29863			delete(rawMsg, key)
29864		case "wildcardFolderPath":
29865			err = unpopulate(val, &s.WildcardFolderPath)
29866			delete(rawMsg, key)
29867		}
29868		if err != nil {
29869			return err
29870		}
29871	}
29872	return s.StoreReadSettings.unmarshalInternal(rawMsg)
29873}
29874
29875// SftpServerLinkedService - A linked service for an SSH File Transfer Protocol (SFTP) server.
29876type SftpServerLinkedService struct {
29877	LinkedService
29878	// REQUIRED; Properties specific to this linked service type.
29879	TypeProperties *SftpServerLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
29880}
29881
29882// MarshalJSON implements the json.Marshaller interface for type SftpServerLinkedService.
29883func (s SftpServerLinkedService) MarshalJSON() ([]byte, error) {
29884	objectMap := s.LinkedService.marshalInternal("Sftp")
29885	populate(objectMap, "typeProperties", s.TypeProperties)
29886	return json.Marshal(objectMap)
29887}
29888
29889// UnmarshalJSON implements the json.Unmarshaller interface for type SftpServerLinkedService.
29890func (s *SftpServerLinkedService) UnmarshalJSON(data []byte) error {
29891	var rawMsg map[string]json.RawMessage
29892	if err := json.Unmarshal(data, &rawMsg); err != nil {
29893		return err
29894	}
29895	for key, val := range rawMsg {
29896		var err error
29897		switch key {
29898		case "typeProperties":
29899			err = unpopulate(val, &s.TypeProperties)
29900			delete(rawMsg, key)
29901		}
29902		if err != nil {
29903			return err
29904		}
29905	}
29906	return s.LinkedService.unmarshalInternal(rawMsg)
29907}
29908
29909// SftpServerLinkedServiceTypeProperties - Properties specific to this linked service type.
29910type SftpServerLinkedServiceTypeProperties struct {
29911	// REQUIRED; The SFTP server host name. Type: string (or Expression with resultType string).
29912	Host interface{} `json:"host,omitempty"`
29913
29914	// The authentication type to be used to connect to the FTP server.
29915	AuthenticationType *SftpAuthenticationType `json:"authenticationType,omitempty"`
29916
29917	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
29918	// with resultType string).
29919	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
29920
29921	// The host key finger-print of the SFTP server. When SkipHostKeyValidation is false, HostKeyFingerprint should be specified. Type: string (or Expression
29922	// with resultType string).
29923	HostKeyFingerprint interface{} `json:"hostKeyFingerprint,omitempty"`
29924
29925	// The password to decrypt the SSH private key if the SSH private key is encrypted.
29926	PassPhrase SecretBaseClassification `json:"passPhrase,omitempty"`
29927
29928	// Password to logon the SFTP server for Basic authentication.
29929	Password SecretBaseClassification `json:"password,omitempty"`
29930
29931	// The TCP port number that the SFTP server uses to listen for client connections. Default value is 22. Type: integer (or Expression with resultType integer),
29932	// minimum: 0.
29933	Port interface{} `json:"port,omitempty"`
29934
29935	// Base64 encoded SSH private key content for SshPublicKey authentication. For on-premises copy with SshPublicKey authentication, either PrivateKeyPath
29936	// or PrivateKeyContent should be specified. SSH
29937	// private key should be OpenSSH format.
29938	PrivateKeyContent SecretBaseClassification `json:"privateKeyContent,omitempty"`
29939
29940	// The SSH private key file path for SshPublicKey authentication. Only valid for on-premises copy. For on-premises copy with SshPublicKey authentication,
29941	// either PrivateKeyPath or PrivateKeyContent should
29942	// be specified. SSH private key should be OpenSSH format. Type: string (or Expression with resultType string).
29943	PrivateKeyPath interface{} `json:"privateKeyPath,omitempty"`
29944
29945	// If true, skip the SSH host key validation. Default value is false. Type: boolean (or Expression with resultType boolean).
29946	SkipHostKeyValidation interface{} `json:"skipHostKeyValidation,omitempty"`
29947
29948	// The username used to log on to the SFTP server. Type: string (or Expression with resultType string).
29949	UserName interface{} `json:"userName,omitempty"`
29950}
29951
29952// MarshalJSON implements the json.Marshaller interface for type SftpServerLinkedServiceTypeProperties.
29953func (s SftpServerLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
29954	objectMap := make(map[string]interface{})
29955	populate(objectMap, "authenticationType", s.AuthenticationType)
29956	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
29957	populate(objectMap, "host", s.Host)
29958	populate(objectMap, "hostKeyFingerprint", s.HostKeyFingerprint)
29959	populate(objectMap, "passPhrase", s.PassPhrase)
29960	populate(objectMap, "password", s.Password)
29961	populate(objectMap, "port", s.Port)
29962	populate(objectMap, "privateKeyContent", s.PrivateKeyContent)
29963	populate(objectMap, "privateKeyPath", s.PrivateKeyPath)
29964	populate(objectMap, "skipHostKeyValidation", s.SkipHostKeyValidation)
29965	populate(objectMap, "userName", s.UserName)
29966	return json.Marshal(objectMap)
29967}
29968
29969// UnmarshalJSON implements the json.Unmarshaller interface for type SftpServerLinkedServiceTypeProperties.
29970func (s *SftpServerLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
29971	var rawMsg map[string]json.RawMessage
29972	if err := json.Unmarshal(data, &rawMsg); err != nil {
29973		return err
29974	}
29975	for key, val := range rawMsg {
29976		var err error
29977		switch key {
29978		case "authenticationType":
29979			err = unpopulate(val, &s.AuthenticationType)
29980			delete(rawMsg, key)
29981		case "encryptedCredential":
29982			err = unpopulate(val, &s.EncryptedCredential)
29983			delete(rawMsg, key)
29984		case "host":
29985			err = unpopulate(val, &s.Host)
29986			delete(rawMsg, key)
29987		case "hostKeyFingerprint":
29988			err = unpopulate(val, &s.HostKeyFingerprint)
29989			delete(rawMsg, key)
29990		case "passPhrase":
29991			s.PassPhrase, err = unmarshalSecretBaseClassification(val)
29992			delete(rawMsg, key)
29993		case "password":
29994			s.Password, err = unmarshalSecretBaseClassification(val)
29995			delete(rawMsg, key)
29996		case "port":
29997			err = unpopulate(val, &s.Port)
29998			delete(rawMsg, key)
29999		case "privateKeyContent":
30000			s.PrivateKeyContent, err = unmarshalSecretBaseClassification(val)
30001			delete(rawMsg, key)
30002		case "privateKeyPath":
30003			err = unpopulate(val, &s.PrivateKeyPath)
30004			delete(rawMsg, key)
30005		case "skipHostKeyValidation":
30006			err = unpopulate(val, &s.SkipHostKeyValidation)
30007			delete(rawMsg, key)
30008		case "userName":
30009			err = unpopulate(val, &s.UserName)
30010			delete(rawMsg, key)
30011		}
30012		if err != nil {
30013			return err
30014		}
30015	}
30016	return nil
30017}
30018
30019// SftpWriteSettings - Sftp write settings.
30020type SftpWriteSettings struct {
30021	StoreWriteSettings
30022	// Specifies the timeout for writing each chunk to SFTP server. Default value: 01:00:00 (one hour). Type: string (or Expression with resultType string).
30023	OperationTimeout interface{} `json:"operationTimeout,omitempty"`
30024
30025	// Upload to temporary file(s) and rename. Disable this option if your SFTP server doesn't support rename operation. Type: boolean (or Expression with resultType
30026	// boolean).
30027	UseTempFileRename interface{} `json:"useTempFileRename,omitempty"`
30028}
30029
30030// MarshalJSON implements the json.Marshaller interface for type SftpWriteSettings.
30031func (s SftpWriteSettings) MarshalJSON() ([]byte, error) {
30032	objectMap := s.StoreWriteSettings.marshalInternal("SftpWriteSettings")
30033	populate(objectMap, "operationTimeout", s.OperationTimeout)
30034	populate(objectMap, "useTempFileRename", s.UseTempFileRename)
30035	return json.Marshal(objectMap)
30036}
30037
30038// UnmarshalJSON implements the json.Unmarshaller interface for type SftpWriteSettings.
30039func (s *SftpWriteSettings) UnmarshalJSON(data []byte) error {
30040	var rawMsg map[string]json.RawMessage
30041	if err := json.Unmarshal(data, &rawMsg); err != nil {
30042		return err
30043	}
30044	for key, val := range rawMsg {
30045		var err error
30046		switch key {
30047		case "operationTimeout":
30048			err = unpopulate(val, &s.OperationTimeout)
30049			delete(rawMsg, key)
30050		case "useTempFileRename":
30051			err = unpopulate(val, &s.UseTempFileRename)
30052			delete(rawMsg, key)
30053		}
30054		if err != nil {
30055			return err
30056		}
30057	}
30058	return s.StoreWriteSettings.unmarshalInternal(rawMsg)
30059}
30060
30061// SharePointOnlineListDatasetTypeProperties - Sharepoint online list dataset properties.
30062type SharePointOnlineListDatasetTypeProperties struct {
30063	// The name of the SharePoint Online list. Type: string (or Expression with resultType string).
30064	ListName interface{} `json:"listName,omitempty"`
30065}
30066
30067// SharePointOnlineListLinkedService - SharePoint Online List linked service.
30068type SharePointOnlineListLinkedService struct {
30069	LinkedService
30070	// REQUIRED; SharePoint Online List linked service properties.
30071	TypeProperties *SharePointOnlineListLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
30072}
30073
30074// MarshalJSON implements the json.Marshaller interface for type SharePointOnlineListLinkedService.
30075func (s SharePointOnlineListLinkedService) MarshalJSON() ([]byte, error) {
30076	objectMap := s.LinkedService.marshalInternal("SharePointOnlineList")
30077	populate(objectMap, "typeProperties", s.TypeProperties)
30078	return json.Marshal(objectMap)
30079}
30080
30081// UnmarshalJSON implements the json.Unmarshaller interface for type SharePointOnlineListLinkedService.
30082func (s *SharePointOnlineListLinkedService) UnmarshalJSON(data []byte) error {
30083	var rawMsg map[string]json.RawMessage
30084	if err := json.Unmarshal(data, &rawMsg); err != nil {
30085		return err
30086	}
30087	for key, val := range rawMsg {
30088		var err error
30089		switch key {
30090		case "typeProperties":
30091			err = unpopulate(val, &s.TypeProperties)
30092			delete(rawMsg, key)
30093		}
30094		if err != nil {
30095			return err
30096		}
30097	}
30098	return s.LinkedService.unmarshalInternal(rawMsg)
30099}
30100
30101// SharePointOnlineListLinkedServiceTypeProperties - SharePoint Online List linked service properties.
30102type SharePointOnlineListLinkedServiceTypeProperties struct {
30103	// REQUIRED; The application (client) ID of your application registered in Azure Active Directory. Make sure to grant SharePoint site permission to this
30104	// application. Type: string (or Expression with resultType
30105	// string).
30106	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
30107
30108	// REQUIRED; The client secret of your application registered in Azure Active Directory. Type: string (or Expression with resultType string).
30109	ServicePrincipalKey SecretBaseClassification `json:"servicePrincipalKey,omitempty"`
30110
30111	// REQUIRED; The URL of the SharePoint Online site. For example, https://contoso.sharepoint.com/sites/siteName. Type: string (or Expression with resultType
30112	// string).
30113	SiteURL interface{} `json:"siteUrl,omitempty"`
30114
30115	// REQUIRED; The tenant ID under which your application resides. You can find it from Azure portal Active Directory overview page. Type: string (or Expression
30116	// with resultType string).
30117	TenantID interface{} `json:"tenantId,omitempty"`
30118
30119	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
30120	// with resultType string).
30121	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
30122}
30123
30124// MarshalJSON implements the json.Marshaller interface for type SharePointOnlineListLinkedServiceTypeProperties.
30125func (s SharePointOnlineListLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
30126	objectMap := make(map[string]interface{})
30127	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
30128	populate(objectMap, "servicePrincipalId", s.ServicePrincipalID)
30129	populate(objectMap, "servicePrincipalKey", s.ServicePrincipalKey)
30130	populate(objectMap, "siteUrl", s.SiteURL)
30131	populate(objectMap, "tenantId", s.TenantID)
30132	return json.Marshal(objectMap)
30133}
30134
30135// UnmarshalJSON implements the json.Unmarshaller interface for type SharePointOnlineListLinkedServiceTypeProperties.
30136func (s *SharePointOnlineListLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
30137	var rawMsg map[string]json.RawMessage
30138	if err := json.Unmarshal(data, &rawMsg); err != nil {
30139		return err
30140	}
30141	for key, val := range rawMsg {
30142		var err error
30143		switch key {
30144		case "encryptedCredential":
30145			err = unpopulate(val, &s.EncryptedCredential)
30146			delete(rawMsg, key)
30147		case "servicePrincipalId":
30148			err = unpopulate(val, &s.ServicePrincipalID)
30149			delete(rawMsg, key)
30150		case "servicePrincipalKey":
30151			s.ServicePrincipalKey, err = unmarshalSecretBaseClassification(val)
30152			delete(rawMsg, key)
30153		case "siteUrl":
30154			err = unpopulate(val, &s.SiteURL)
30155			delete(rawMsg, key)
30156		case "tenantId":
30157			err = unpopulate(val, &s.TenantID)
30158			delete(rawMsg, key)
30159		}
30160		if err != nil {
30161			return err
30162		}
30163	}
30164	return nil
30165}
30166
30167// SharePointOnlineListResourceDataset - The sharepoint online list resource dataset.
30168type SharePointOnlineListResourceDataset struct {
30169	Dataset
30170	// Sharepoint online list dataset properties.
30171	TypeProperties *SharePointOnlineListDatasetTypeProperties `json:"typeProperties,omitempty"`
30172}
30173
30174// MarshalJSON implements the json.Marshaller interface for type SharePointOnlineListResourceDataset.
30175func (s SharePointOnlineListResourceDataset) MarshalJSON() ([]byte, error) {
30176	objectMap := s.Dataset.marshalInternal("SharePointOnlineListResource")
30177	populate(objectMap, "typeProperties", s.TypeProperties)
30178	return json.Marshal(objectMap)
30179}
30180
30181// UnmarshalJSON implements the json.Unmarshaller interface for type SharePointOnlineListResourceDataset.
30182func (s *SharePointOnlineListResourceDataset) UnmarshalJSON(data []byte) error {
30183	var rawMsg map[string]json.RawMessage
30184	if err := json.Unmarshal(data, &rawMsg); err != nil {
30185		return err
30186	}
30187	for key, val := range rawMsg {
30188		var err error
30189		switch key {
30190		case "typeProperties":
30191			err = unpopulate(val, &s.TypeProperties)
30192			delete(rawMsg, key)
30193		}
30194		if err != nil {
30195			return err
30196		}
30197	}
30198	return s.Dataset.unmarshalInternal(rawMsg)
30199}
30200
30201// SharePointOnlineListSource - A copy activity source for sharePoint online list source.
30202type SharePointOnlineListSource struct {
30203	CopySource
30204	// The wait time to get a response from SharePoint Online. Default value is 5 minutes (00:05:00). Type: string (or Expression with resultType string), pattern:
30205	// ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
30206	HTTPRequestTimeout interface{} `json:"httpRequestTimeout,omitempty"`
30207
30208	// The OData query to filter the data in SharePoint Online list. For example, "$top=1". Type: string (or Expression with resultType string).
30209	Query interface{} `json:"query,omitempty"`
30210}
30211
30212// MarshalJSON implements the json.Marshaller interface for type SharePointOnlineListSource.
30213func (s SharePointOnlineListSource) MarshalJSON() ([]byte, error) {
30214	objectMap := s.CopySource.marshalInternal("SharePointOnlineListSource")
30215	populate(objectMap, "httpRequestTimeout", s.HTTPRequestTimeout)
30216	populate(objectMap, "query", s.Query)
30217	return json.Marshal(objectMap)
30218}
30219
30220// UnmarshalJSON implements the json.Unmarshaller interface for type SharePointOnlineListSource.
30221func (s *SharePointOnlineListSource) UnmarshalJSON(data []byte) error {
30222	var rawMsg map[string]json.RawMessage
30223	if err := json.Unmarshal(data, &rawMsg); err != nil {
30224		return err
30225	}
30226	for key, val := range rawMsg {
30227		var err error
30228		switch key {
30229		case "httpRequestTimeout":
30230			err = unpopulate(val, &s.HTTPRequestTimeout)
30231			delete(rawMsg, key)
30232		case "query":
30233			err = unpopulate(val, &s.Query)
30234			delete(rawMsg, key)
30235		}
30236		if err != nil {
30237			return err
30238		}
30239	}
30240	return s.CopySource.unmarshalInternal(rawMsg)
30241}
30242
30243// ShopifyLinkedService - Shopify Service linked service.
30244type ShopifyLinkedService struct {
30245	LinkedService
30246	// REQUIRED; Shopify Service linked service properties.
30247	TypeProperties *ShopifyLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
30248}
30249
30250// MarshalJSON implements the json.Marshaller interface for type ShopifyLinkedService.
30251func (s ShopifyLinkedService) MarshalJSON() ([]byte, error) {
30252	objectMap := s.LinkedService.marshalInternal("Shopify")
30253	populate(objectMap, "typeProperties", s.TypeProperties)
30254	return json.Marshal(objectMap)
30255}
30256
30257// UnmarshalJSON implements the json.Unmarshaller interface for type ShopifyLinkedService.
30258func (s *ShopifyLinkedService) UnmarshalJSON(data []byte) error {
30259	var rawMsg map[string]json.RawMessage
30260	if err := json.Unmarshal(data, &rawMsg); err != nil {
30261		return err
30262	}
30263	for key, val := range rawMsg {
30264		var err error
30265		switch key {
30266		case "typeProperties":
30267			err = unpopulate(val, &s.TypeProperties)
30268			delete(rawMsg, key)
30269		}
30270		if err != nil {
30271			return err
30272		}
30273	}
30274	return s.LinkedService.unmarshalInternal(rawMsg)
30275}
30276
30277// ShopifyLinkedServiceTypeProperties - Shopify Service linked service properties.
30278type ShopifyLinkedServiceTypeProperties struct {
30279	// REQUIRED; The endpoint of the Shopify server. (i.e. mystore.myshopify.com)
30280	Host interface{} `json:"host,omitempty"`
30281
30282	// The API access token that can be used to access Shopify’s data. The token won't expire if it is offline mode.
30283	AccessToken SecretBaseClassification `json:"accessToken,omitempty"`
30284
30285	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
30286	// with resultType string).
30287	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
30288
30289	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
30290	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
30291
30292	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
30293	// is true.
30294	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
30295
30296	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
30297	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
30298}
30299
30300// MarshalJSON implements the json.Marshaller interface for type ShopifyLinkedServiceTypeProperties.
30301func (s ShopifyLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
30302	objectMap := make(map[string]interface{})
30303	populate(objectMap, "accessToken", s.AccessToken)
30304	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
30305	populate(objectMap, "host", s.Host)
30306	populate(objectMap, "useEncryptedEndpoints", s.UseEncryptedEndpoints)
30307	populate(objectMap, "useHostVerification", s.UseHostVerification)
30308	populate(objectMap, "usePeerVerification", s.UsePeerVerification)
30309	return json.Marshal(objectMap)
30310}
30311
30312// UnmarshalJSON implements the json.Unmarshaller interface for type ShopifyLinkedServiceTypeProperties.
30313func (s *ShopifyLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
30314	var rawMsg map[string]json.RawMessage
30315	if err := json.Unmarshal(data, &rawMsg); err != nil {
30316		return err
30317	}
30318	for key, val := range rawMsg {
30319		var err error
30320		switch key {
30321		case "accessToken":
30322			s.AccessToken, err = unmarshalSecretBaseClassification(val)
30323			delete(rawMsg, key)
30324		case "encryptedCredential":
30325			err = unpopulate(val, &s.EncryptedCredential)
30326			delete(rawMsg, key)
30327		case "host":
30328			err = unpopulate(val, &s.Host)
30329			delete(rawMsg, key)
30330		case "useEncryptedEndpoints":
30331			err = unpopulate(val, &s.UseEncryptedEndpoints)
30332			delete(rawMsg, key)
30333		case "useHostVerification":
30334			err = unpopulate(val, &s.UseHostVerification)
30335			delete(rawMsg, key)
30336		case "usePeerVerification":
30337			err = unpopulate(val, &s.UsePeerVerification)
30338			delete(rawMsg, key)
30339		}
30340		if err != nil {
30341			return err
30342		}
30343	}
30344	return nil
30345}
30346
30347// ShopifyObjectDataset - Shopify Service dataset.
30348type ShopifyObjectDataset struct {
30349	Dataset
30350	// Properties specific to this dataset type.
30351	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
30352}
30353
30354// MarshalJSON implements the json.Marshaller interface for type ShopifyObjectDataset.
30355func (s ShopifyObjectDataset) MarshalJSON() ([]byte, error) {
30356	objectMap := s.Dataset.marshalInternal("ShopifyObject")
30357	populate(objectMap, "typeProperties", s.TypeProperties)
30358	return json.Marshal(objectMap)
30359}
30360
30361// UnmarshalJSON implements the json.Unmarshaller interface for type ShopifyObjectDataset.
30362func (s *ShopifyObjectDataset) UnmarshalJSON(data []byte) error {
30363	var rawMsg map[string]json.RawMessage
30364	if err := json.Unmarshal(data, &rawMsg); err != nil {
30365		return err
30366	}
30367	for key, val := range rawMsg {
30368		var err error
30369		switch key {
30370		case "typeProperties":
30371			err = unpopulate(val, &s.TypeProperties)
30372			delete(rawMsg, key)
30373		}
30374		if err != nil {
30375			return err
30376		}
30377	}
30378	return s.Dataset.unmarshalInternal(rawMsg)
30379}
30380
30381// ShopifySource - A copy activity Shopify Service source.
30382type ShopifySource struct {
30383	TabularSource
30384	// A query to retrieve data from source. Type: string (or Expression with resultType string).
30385	Query interface{} `json:"query,omitempty"`
30386}
30387
30388// MarshalJSON implements the json.Marshaller interface for type ShopifySource.
30389func (s ShopifySource) MarshalJSON() ([]byte, error) {
30390	objectMap := s.TabularSource.marshalInternal("ShopifySource")
30391	populate(objectMap, "query", s.Query)
30392	return json.Marshal(objectMap)
30393}
30394
30395// UnmarshalJSON implements the json.Unmarshaller interface for type ShopifySource.
30396func (s *ShopifySource) UnmarshalJSON(data []byte) error {
30397	var rawMsg map[string]json.RawMessage
30398	if err := json.Unmarshal(data, &rawMsg); err != nil {
30399		return err
30400	}
30401	for key, val := range rawMsg {
30402		var err error
30403		switch key {
30404		case "query":
30405			err = unpopulate(val, &s.Query)
30406			delete(rawMsg, key)
30407		}
30408		if err != nil {
30409			return err
30410		}
30411	}
30412	return s.TabularSource.unmarshalInternal(rawMsg)
30413}
30414
30415// SkipErrorFile - Skip error file.
30416type SkipErrorFile struct {
30417	// Skip if source/sink file changed by other concurrent write. Default is false. Type: boolean (or Expression with resultType boolean).
30418	DataInconsistency interface{} `json:"dataInconsistency,omitempty"`
30419
30420	// Skip if file is deleted by other client during copy. Default is true. Type: boolean (or Expression with resultType boolean).
30421	FileMissing interface{} `json:"fileMissing,omitempty"`
30422}
30423
30424// SnowflakeDataset - The snowflake dataset.
30425type SnowflakeDataset struct {
30426	Dataset
30427	// REQUIRED; Snowflake dataset properties.
30428	TypeProperties *SnowflakeDatasetTypeProperties `json:"typeProperties,omitempty"`
30429}
30430
30431// MarshalJSON implements the json.Marshaller interface for type SnowflakeDataset.
30432func (s SnowflakeDataset) MarshalJSON() ([]byte, error) {
30433	objectMap := s.Dataset.marshalInternal("SnowflakeTable")
30434	populate(objectMap, "typeProperties", s.TypeProperties)
30435	return json.Marshal(objectMap)
30436}
30437
30438// UnmarshalJSON implements the json.Unmarshaller interface for type SnowflakeDataset.
30439func (s *SnowflakeDataset) UnmarshalJSON(data []byte) error {
30440	var rawMsg map[string]json.RawMessage
30441	if err := json.Unmarshal(data, &rawMsg); err != nil {
30442		return err
30443	}
30444	for key, val := range rawMsg {
30445		var err error
30446		switch key {
30447		case "typeProperties":
30448			err = unpopulate(val, &s.TypeProperties)
30449			delete(rawMsg, key)
30450		}
30451		if err != nil {
30452			return err
30453		}
30454	}
30455	return s.Dataset.unmarshalInternal(rawMsg)
30456}
30457
30458// SnowflakeDatasetTypeProperties - Snowflake dataset properties.
30459type SnowflakeDatasetTypeProperties struct {
30460	// The schema name of the Snowflake database. Type: string (or Expression with resultType string).
30461	Schema interface{} `json:"schema,omitempty"`
30462
30463	// The table name of the Snowflake database. Type: string (or Expression with resultType string).
30464	Table interface{} `json:"table,omitempty"`
30465}
30466
30467// SnowflakeExportCopyCommand - Snowflake export command settings.
30468type SnowflakeExportCopyCommand struct {
30469	ExportSettings
30470	// Additional copy options directly passed to snowflake Copy Command. Type: key value pairs (value should be string type) (or Expression with resultType
30471	// object). Example: "additionalCopyOptions": { "DATE
30472	// FORMAT": "MM/DD/YYYY", "TIMEFORMAT": "'HH24:MI:SS.FF'" }
30473	AdditionalCopyOptions map[string]interface{} `json:"additionalCopyOptions,omitempty"`
30474
30475	// Additional format options directly passed to snowflake Copy Command. Type: key value pairs (value should be string type) (or Expression with resultType
30476	// object). Example: "additionalFormatOptions": {
30477	// "OVERWRITE": "TRUE", "MAXFILESIZE": "'FALSE'" }
30478	AdditionalFormatOptions map[string]interface{} `json:"additionalFormatOptions,omitempty"`
30479}
30480
30481// MarshalJSON implements the json.Marshaller interface for type SnowflakeExportCopyCommand.
30482func (s SnowflakeExportCopyCommand) MarshalJSON() ([]byte, error) {
30483	objectMap := s.ExportSettings.marshalInternal("SnowflakeExportCopyCommand")
30484	populate(objectMap, "additionalCopyOptions", s.AdditionalCopyOptions)
30485	populate(objectMap, "additionalFormatOptions", s.AdditionalFormatOptions)
30486	return json.Marshal(objectMap)
30487}
30488
30489// UnmarshalJSON implements the json.Unmarshaller interface for type SnowflakeExportCopyCommand.
30490func (s *SnowflakeExportCopyCommand) UnmarshalJSON(data []byte) error {
30491	var rawMsg map[string]json.RawMessage
30492	if err := json.Unmarshal(data, &rawMsg); err != nil {
30493		return err
30494	}
30495	for key, val := range rawMsg {
30496		var err error
30497		switch key {
30498		case "additionalCopyOptions":
30499			err = unpopulate(val, &s.AdditionalCopyOptions)
30500			delete(rawMsg, key)
30501		case "additionalFormatOptions":
30502			err = unpopulate(val, &s.AdditionalFormatOptions)
30503			delete(rawMsg, key)
30504		}
30505		if err != nil {
30506			return err
30507		}
30508	}
30509	return s.ExportSettings.unmarshalInternal(rawMsg)
30510}
30511
30512// SnowflakeImportCopyCommand - Snowflake import command settings.
30513type SnowflakeImportCopyCommand struct {
30514	ImportSettings
30515	// Additional copy options directly passed to snowflake Copy Command. Type: key value pairs (value should be string type) (or Expression with resultType
30516	// object). Example: "additionalCopyOptions": { "DATE
30517	// FORMAT": "MM/DD/YYYY", "TIMEFORMAT": "'HH24:MI:SS.FF'" }
30518	AdditionalCopyOptions map[string]interface{} `json:"additionalCopyOptions,omitempty"`
30519
30520	// Additional format options directly passed to snowflake Copy Command. Type: key value pairs (value should be string type) (or Expression with resultType
30521	// object). Example: "additionalFormatOptions": {
30522	// "FORCE": "TRUE", "LOADUNCERTAINFILES": "'FALSE'" }
30523	AdditionalFormatOptions map[string]interface{} `json:"additionalFormatOptions,omitempty"`
30524}
30525
30526// MarshalJSON implements the json.Marshaller interface for type SnowflakeImportCopyCommand.
30527func (s SnowflakeImportCopyCommand) MarshalJSON() ([]byte, error) {
30528	objectMap := s.ImportSettings.marshalInternal("SnowflakeImportCopyCommand")
30529	populate(objectMap, "additionalCopyOptions", s.AdditionalCopyOptions)
30530	populate(objectMap, "additionalFormatOptions", s.AdditionalFormatOptions)
30531	return json.Marshal(objectMap)
30532}
30533
30534// UnmarshalJSON implements the json.Unmarshaller interface for type SnowflakeImportCopyCommand.
30535func (s *SnowflakeImportCopyCommand) UnmarshalJSON(data []byte) error {
30536	var rawMsg map[string]json.RawMessage
30537	if err := json.Unmarshal(data, &rawMsg); err != nil {
30538		return err
30539	}
30540	for key, val := range rawMsg {
30541		var err error
30542		switch key {
30543		case "additionalCopyOptions":
30544			err = unpopulate(val, &s.AdditionalCopyOptions)
30545			delete(rawMsg, key)
30546		case "additionalFormatOptions":
30547			err = unpopulate(val, &s.AdditionalFormatOptions)
30548			delete(rawMsg, key)
30549		}
30550		if err != nil {
30551			return err
30552		}
30553	}
30554	return s.ImportSettings.unmarshalInternal(rawMsg)
30555}
30556
30557// SnowflakeLinkedService - Snowflake linked service.
30558type SnowflakeLinkedService struct {
30559	LinkedService
30560	// REQUIRED; Snowflake linked service properties.
30561	TypeProperties *SnowflakeLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
30562}
30563
30564// MarshalJSON implements the json.Marshaller interface for type SnowflakeLinkedService.
30565func (s SnowflakeLinkedService) MarshalJSON() ([]byte, error) {
30566	objectMap := s.LinkedService.marshalInternal("Snowflake")
30567	populate(objectMap, "typeProperties", s.TypeProperties)
30568	return json.Marshal(objectMap)
30569}
30570
30571// UnmarshalJSON implements the json.Unmarshaller interface for type SnowflakeLinkedService.
30572func (s *SnowflakeLinkedService) UnmarshalJSON(data []byte) error {
30573	var rawMsg map[string]json.RawMessage
30574	if err := json.Unmarshal(data, &rawMsg); err != nil {
30575		return err
30576	}
30577	for key, val := range rawMsg {
30578		var err error
30579		switch key {
30580		case "typeProperties":
30581			err = unpopulate(val, &s.TypeProperties)
30582			delete(rawMsg, key)
30583		}
30584		if err != nil {
30585			return err
30586		}
30587	}
30588	return s.LinkedService.unmarshalInternal(rawMsg)
30589}
30590
30591// SnowflakeLinkedServiceTypeProperties - Snowflake linked service properties.
30592type SnowflakeLinkedServiceTypeProperties struct {
30593	// REQUIRED; The connection string of snowflake. Type: string, SecureString.
30594	ConnectionString interface{} `json:"connectionString,omitempty"`
30595
30596	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
30597	// with resultType string).
30598	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
30599
30600	// The Azure key vault secret reference of password in connection string.
30601	Password *AzureKeyVaultSecretReference `json:"password,omitempty"`
30602}
30603
30604// SnowflakeSink - A copy activity snowflake sink.
30605type SnowflakeSink struct {
30606	CopySink
30607	// Snowflake import settings.
30608	ImportSettings *SnowflakeImportCopyCommand `json:"importSettings,omitempty"`
30609
30610	// SQL pre-copy script. Type: string (or Expression with resultType string).
30611	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
30612}
30613
30614// MarshalJSON implements the json.Marshaller interface for type SnowflakeSink.
30615func (s SnowflakeSink) MarshalJSON() ([]byte, error) {
30616	objectMap := s.CopySink.marshalInternal("SnowflakeSink")
30617	populate(objectMap, "importSettings", s.ImportSettings)
30618	populate(objectMap, "preCopyScript", s.PreCopyScript)
30619	return json.Marshal(objectMap)
30620}
30621
30622// UnmarshalJSON implements the json.Unmarshaller interface for type SnowflakeSink.
30623func (s *SnowflakeSink) UnmarshalJSON(data []byte) error {
30624	var rawMsg map[string]json.RawMessage
30625	if err := json.Unmarshal(data, &rawMsg); err != nil {
30626		return err
30627	}
30628	for key, val := range rawMsg {
30629		var err error
30630		switch key {
30631		case "importSettings":
30632			err = unpopulate(val, &s.ImportSettings)
30633			delete(rawMsg, key)
30634		case "preCopyScript":
30635			err = unpopulate(val, &s.PreCopyScript)
30636			delete(rawMsg, key)
30637		}
30638		if err != nil {
30639			return err
30640		}
30641	}
30642	return s.CopySink.unmarshalInternal(rawMsg)
30643}
30644
30645// SnowflakeSource - A copy activity snowflake source.
30646type SnowflakeSource struct {
30647	CopySource
30648	// Snowflake export settings.
30649	ExportSettings *SnowflakeExportCopyCommand `json:"exportSettings,omitempty"`
30650
30651	// Snowflake Sql query. Type: string (or Expression with resultType string).
30652	Query interface{} `json:"query,omitempty"`
30653}
30654
30655// MarshalJSON implements the json.Marshaller interface for type SnowflakeSource.
30656func (s SnowflakeSource) MarshalJSON() ([]byte, error) {
30657	objectMap := s.CopySource.marshalInternal("SnowflakeSource")
30658	populate(objectMap, "exportSettings", s.ExportSettings)
30659	populate(objectMap, "query", s.Query)
30660	return json.Marshal(objectMap)
30661}
30662
30663// UnmarshalJSON implements the json.Unmarshaller interface for type SnowflakeSource.
30664func (s *SnowflakeSource) UnmarshalJSON(data []byte) error {
30665	var rawMsg map[string]json.RawMessage
30666	if err := json.Unmarshal(data, &rawMsg); err != nil {
30667		return err
30668	}
30669	for key, val := range rawMsg {
30670		var err error
30671		switch key {
30672		case "exportSettings":
30673			err = unpopulate(val, &s.ExportSettings)
30674			delete(rawMsg, key)
30675		case "query":
30676			err = unpopulate(val, &s.Query)
30677			delete(rawMsg, key)
30678		}
30679		if err != nil {
30680			return err
30681		}
30682	}
30683	return s.CopySource.unmarshalInternal(rawMsg)
30684}
30685
30686type SparkBatchJob struct {
30687	// REQUIRED; The session Id.
30688	ID *int32 `json:"id,omitempty"`
30689
30690	// The application id of this session
30691	AppID *string `json:"appId,omitempty"`
30692
30693	// The detailed application info.
30694	AppInfo map[string]*string `json:"appInfo,omitempty"`
30695
30696	// The artifact identifier.
30697	ArtifactID *string `json:"artifactId,omitempty"`
30698
30699	// The error information.
30700	Errors []*SparkServiceError `json:"errorInfo,omitempty"`
30701
30702	// The job type.
30703	JobType  *SparkJobType       `json:"jobType,omitempty"`
30704	LivyInfo *SparkBatchJobState `json:"livyInfo,omitempty"`
30705
30706	// The log lines.
30707	LogLines []*string `json:"log,omitempty"`
30708
30709	// The batch name.
30710	Name *string `json:"name,omitempty"`
30711
30712	// The plugin information.
30713	Plugin *SparkServicePlugin `json:"pluginInfo,omitempty"`
30714
30715	// The Spark batch job result.
30716	Result *SparkBatchJobResultType `json:"result,omitempty"`
30717
30718	// The scheduler information.
30719	Scheduler *SparkScheduler `json:"schedulerInfo,omitempty"`
30720
30721	// The Spark pool name.
30722	SparkPoolName *string `json:"sparkPoolName,omitempty"`
30723
30724	// The batch state
30725	State *string `json:"state,omitempty"`
30726
30727	// The submitter identifier.
30728	SubmitterID *string `json:"submitterId,omitempty"`
30729
30730	// The submitter name.
30731	SubmitterName *string `json:"submitterName,omitempty"`
30732
30733	// The tags.
30734	Tags map[string]*string `json:"tags,omitempty"`
30735
30736	// The workspace name.
30737	WorkspaceName *string `json:"workspaceName,omitempty"`
30738}
30739
30740// MarshalJSON implements the json.Marshaller interface for type SparkBatchJob.
30741func (s SparkBatchJob) MarshalJSON() ([]byte, error) {
30742	objectMap := make(map[string]interface{})
30743	populate(objectMap, "appId", s.AppID)
30744	populate(objectMap, "appInfo", s.AppInfo)
30745	populate(objectMap, "artifactId", s.ArtifactID)
30746	populate(objectMap, "errorInfo", s.Errors)
30747	populate(objectMap, "id", s.ID)
30748	populate(objectMap, "jobType", s.JobType)
30749	populate(objectMap, "livyInfo", s.LivyInfo)
30750	populate(objectMap, "log", s.LogLines)
30751	populate(objectMap, "name", s.Name)
30752	populate(objectMap, "pluginInfo", s.Plugin)
30753	populate(objectMap, "result", s.Result)
30754	populate(objectMap, "schedulerInfo", s.Scheduler)
30755	populate(objectMap, "sparkPoolName", s.SparkPoolName)
30756	populate(objectMap, "state", s.State)
30757	populate(objectMap, "submitterId", s.SubmitterID)
30758	populate(objectMap, "submitterName", s.SubmitterName)
30759	populate(objectMap, "tags", s.Tags)
30760	populate(objectMap, "workspaceName", s.WorkspaceName)
30761	return json.Marshal(objectMap)
30762}
30763
30764type SparkBatchJobState struct {
30765	// the Spark job state.
30766	CurrentState *string `json:"currentState,omitempty"`
30767
30768	// time that at which "dead" livy state was first seen.
30769	DeadAt             *time.Time    `json:"deadAt,omitempty"`
30770	JobCreationRequest *SparkRequest `json:"jobCreationRequest,omitempty"`
30771
30772	// the time that at which "not_started" livy state was first seen.
30773	NotStartedAt *time.Time `json:"notStartedAt,omitempty"`
30774
30775	// the time that at which "recovering" livy state was first seen.
30776	RecoveringAt *time.Time `json:"recoveringAt,omitempty"`
30777
30778	// the time that at which "running" livy state was first seen.
30779	RunningAt *time.Time `json:"runningAt,omitempty"`
30780
30781	// the time that at which "starting" livy state was first seen.
30782	StartingAt *time.Time `json:"startingAt,omitempty"`
30783
30784	// the time that at which "success" livy state was first seen.
30785	SuccessAt *time.Time `json:"successAt,omitempty"`
30786
30787	// the time that at which "killed" livy state was first seen.
30788	TerminatedAt *time.Time `json:"killedAt,omitempty"`
30789}
30790
30791// MarshalJSON implements the json.Marshaller interface for type SparkBatchJobState.
30792func (s SparkBatchJobState) MarshalJSON() ([]byte, error) {
30793	objectMap := make(map[string]interface{})
30794	populate(objectMap, "currentState", s.CurrentState)
30795	populate(objectMap, "deadAt", (*timeRFC3339)(s.DeadAt))
30796	populate(objectMap, "jobCreationRequest", s.JobCreationRequest)
30797	populate(objectMap, "notStartedAt", (*timeRFC3339)(s.NotStartedAt))
30798	populate(objectMap, "recoveringAt", (*timeRFC3339)(s.RecoveringAt))
30799	populate(objectMap, "runningAt", (*timeRFC3339)(s.RunningAt))
30800	populate(objectMap, "startingAt", (*timeRFC3339)(s.StartingAt))
30801	populate(objectMap, "successAt", (*timeRFC3339)(s.SuccessAt))
30802	populate(objectMap, "killedAt", (*timeRFC3339)(s.TerminatedAt))
30803	return json.Marshal(objectMap)
30804}
30805
30806// UnmarshalJSON implements the json.Unmarshaller interface for type SparkBatchJobState.
30807func (s *SparkBatchJobState) UnmarshalJSON(data []byte) error {
30808	var rawMsg map[string]json.RawMessage
30809	if err := json.Unmarshal(data, &rawMsg); err != nil {
30810		return err
30811	}
30812	for key, val := range rawMsg {
30813		var err error
30814		switch key {
30815		case "currentState":
30816			err = unpopulate(val, &s.CurrentState)
30817			delete(rawMsg, key)
30818		case "deadAt":
30819			var aux timeRFC3339
30820			err = unpopulate(val, &aux)
30821			s.DeadAt = (*time.Time)(&aux)
30822			delete(rawMsg, key)
30823		case "jobCreationRequest":
30824			err = unpopulate(val, &s.JobCreationRequest)
30825			delete(rawMsg, key)
30826		case "notStartedAt":
30827			var aux timeRFC3339
30828			err = unpopulate(val, &aux)
30829			s.NotStartedAt = (*time.Time)(&aux)
30830			delete(rawMsg, key)
30831		case "recoveringAt":
30832			var aux timeRFC3339
30833			err = unpopulate(val, &aux)
30834			s.RecoveringAt = (*time.Time)(&aux)
30835			delete(rawMsg, key)
30836		case "runningAt":
30837			var aux timeRFC3339
30838			err = unpopulate(val, &aux)
30839			s.RunningAt = (*time.Time)(&aux)
30840			delete(rawMsg, key)
30841		case "startingAt":
30842			var aux timeRFC3339
30843			err = unpopulate(val, &aux)
30844			s.StartingAt = (*time.Time)(&aux)
30845			delete(rawMsg, key)
30846		case "successAt":
30847			var aux timeRFC3339
30848			err = unpopulate(val, &aux)
30849			s.SuccessAt = (*time.Time)(&aux)
30850			delete(rawMsg, key)
30851		case "killedAt":
30852			var aux timeRFC3339
30853			err = unpopulate(val, &aux)
30854			s.TerminatedAt = (*time.Time)(&aux)
30855			delete(rawMsg, key)
30856		}
30857		if err != nil {
30858			return err
30859		}
30860	}
30861	return nil
30862}
30863
30864// SparkDatasetTypeProperties - Spark Properties
30865type SparkDatasetTypeProperties struct {
30866	// The schema name of the Spark. Type: string (or Expression with resultType string).
30867	Schema interface{} `json:"schema,omitempty"`
30868
30869	// The table name of the Spark. Type: string (or Expression with resultType string).
30870	Table interface{} `json:"table,omitempty"`
30871
30872	// This property will be retired. Please consider using schema + table properties instead.
30873	TableName interface{} `json:"tableName,omitempty"`
30874}
30875
30876// SparkJobDefinition - Spark job definition.
30877type SparkJobDefinition struct {
30878	// REQUIRED; The properties of the Spark job.
30879	JobProperties *SparkJobProperties `json:"jobProperties,omitempty"`
30880
30881	// REQUIRED; Big data pool reference.
30882	TargetBigDataPool *BigDataPoolReference `json:"targetBigDataPool,omitempty"`
30883
30884	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
30885	AdditionalProperties map[string]interface{}
30886
30887	// The description of the Spark job definition.
30888	Description *string `json:"description,omitempty"`
30889
30890	// The language of the Spark application.
30891	Language *string `json:"language,omitempty"`
30892
30893	// The required Spark version of the application.
30894	RequiredSparkVersion *string `json:"requiredSparkVersion,omitempty"`
30895}
30896
30897// MarshalJSON implements the json.Marshaller interface for type SparkJobDefinition.
30898func (s SparkJobDefinition) MarshalJSON() ([]byte, error) {
30899	objectMap := make(map[string]interface{})
30900	populate(objectMap, "description", s.Description)
30901	populate(objectMap, "jobProperties", s.JobProperties)
30902	populate(objectMap, "language", s.Language)
30903	populate(objectMap, "requiredSparkVersion", s.RequiredSparkVersion)
30904	populate(objectMap, "targetBigDataPool", s.TargetBigDataPool)
30905	if s.AdditionalProperties != nil {
30906		for key, val := range s.AdditionalProperties {
30907			objectMap[key] = val
30908		}
30909	}
30910	return json.Marshal(objectMap)
30911}
30912
30913// UnmarshalJSON implements the json.Unmarshaller interface for type SparkJobDefinition.
30914func (s *SparkJobDefinition) UnmarshalJSON(data []byte) error {
30915	var rawMsg map[string]json.RawMessage
30916	if err := json.Unmarshal(data, &rawMsg); err != nil {
30917		return err
30918	}
30919	for key, val := range rawMsg {
30920		var err error
30921		switch key {
30922		case "description":
30923			err = unpopulate(val, &s.Description)
30924			delete(rawMsg, key)
30925		case "jobProperties":
30926			err = unpopulate(val, &s.JobProperties)
30927			delete(rawMsg, key)
30928		case "language":
30929			err = unpopulate(val, &s.Language)
30930			delete(rawMsg, key)
30931		case "requiredSparkVersion":
30932			err = unpopulate(val, &s.RequiredSparkVersion)
30933			delete(rawMsg, key)
30934		case "targetBigDataPool":
30935			err = unpopulate(val, &s.TargetBigDataPool)
30936			delete(rawMsg, key)
30937		default:
30938			if s.AdditionalProperties == nil {
30939				s.AdditionalProperties = map[string]interface{}{}
30940			}
30941			if val != nil {
30942				var aux interface{}
30943				err = json.Unmarshal(val, &aux)
30944				s.AdditionalProperties[key] = aux
30945			}
30946			delete(rawMsg, key)
30947		}
30948		if err != nil {
30949			return err
30950		}
30951	}
30952	return nil
30953}
30954
30955// SparkJobDefinitionBeginCreateOrUpdateSparkJobDefinitionOptions contains the optional parameters for the SparkJobDefinition.BeginCreateOrUpdateSparkJobDefinition
30956// method.
30957type SparkJobDefinitionBeginCreateOrUpdateSparkJobDefinitionOptions struct {
30958	// ETag of the Spark Job Definition entity. Should only be specified for update, for which it should match existing entity or can be * for unconditional
30959	// update.
30960	IfMatch *string
30961}
30962
30963// SparkJobDefinitionBeginDebugSparkJobDefinitionOptions contains the optional parameters for the SparkJobDefinition.BeginDebugSparkJobDefinition method.
30964type SparkJobDefinitionBeginDebugSparkJobDefinitionOptions struct {
30965	// placeholder for future optional parameters
30966}
30967
30968// SparkJobDefinitionBeginDeleteSparkJobDefinitionOptions contains the optional parameters for the SparkJobDefinition.BeginDeleteSparkJobDefinition method.
30969type SparkJobDefinitionBeginDeleteSparkJobDefinitionOptions struct {
30970	// placeholder for future optional parameters
30971}
30972
30973// SparkJobDefinitionBeginExecuteSparkJobDefinitionOptions contains the optional parameters for the SparkJobDefinition.BeginExecuteSparkJobDefinition method.
30974type SparkJobDefinitionBeginExecuteSparkJobDefinitionOptions struct {
30975	// placeholder for future optional parameters
30976}
30977
30978// SparkJobDefinitionBeginRenameSparkJobDefinitionOptions contains the optional parameters for the SparkJobDefinition.BeginRenameSparkJobDefinition method.
30979type SparkJobDefinitionBeginRenameSparkJobDefinitionOptions struct {
30980	// placeholder for future optional parameters
30981}
30982
30983// SparkJobDefinitionGetSparkJobDefinitionOptions contains the optional parameters for the SparkJobDefinition.GetSparkJobDefinition method.
30984type SparkJobDefinitionGetSparkJobDefinitionOptions struct {
30985	// ETag of the Spark Job Definition entity. Should only be specified for get. If the ETag matches the existing entity tag, or if * was provided, then no
30986	// content will be returned.
30987	IfNoneMatch *string
30988}
30989
30990// SparkJobDefinitionGetSparkJobDefinitionsByWorkspaceOptions contains the optional parameters for the SparkJobDefinition.GetSparkJobDefinitionsByWorkspace
30991// method.
30992type SparkJobDefinitionGetSparkJobDefinitionsByWorkspaceOptions struct {
30993	// placeholder for future optional parameters
30994}
30995
30996// SparkJobDefinitionResource - Spark job definition resource type.
30997type SparkJobDefinitionResource struct {
30998	SubResource
30999	// REQUIRED; Properties of spark job definition.
31000	Properties *SparkJobDefinition `json:"properties,omitempty"`
31001}
31002
31003// MarshalJSON implements the json.Marshaller interface for type SparkJobDefinitionResource.
31004func (s SparkJobDefinitionResource) MarshalJSON() ([]byte, error) {
31005	objectMap := s.SubResource.marshalInternal()
31006	populate(objectMap, "properties", s.Properties)
31007	return json.Marshal(objectMap)
31008}
31009
31010// UnmarshalJSON implements the json.Unmarshaller interface for type SparkJobDefinitionResource.
31011func (s *SparkJobDefinitionResource) UnmarshalJSON(data []byte) error {
31012	var rawMsg map[string]json.RawMessage
31013	if err := json.Unmarshal(data, &rawMsg); err != nil {
31014		return err
31015	}
31016	for key, val := range rawMsg {
31017		var err error
31018		switch key {
31019		case "properties":
31020			err = unpopulate(val, &s.Properties)
31021			delete(rawMsg, key)
31022		}
31023		if err != nil {
31024			return err
31025		}
31026	}
31027	return s.SubResource.unmarshalInternal(rawMsg)
31028}
31029
31030// SparkJobDefinitionsListResponse - A list of spark job definitions resources.
31031type SparkJobDefinitionsListResponse struct {
31032	// REQUIRED; List of spark job definitions.
31033	Value []*SparkJobDefinitionResource `json:"value,omitempty"`
31034
31035	// The link to the next page of results, if any remaining results exist.
31036	NextLink *string `json:"nextLink,omitempty"`
31037}
31038
31039// MarshalJSON implements the json.Marshaller interface for type SparkJobDefinitionsListResponse.
31040func (s SparkJobDefinitionsListResponse) MarshalJSON() ([]byte, error) {
31041	objectMap := make(map[string]interface{})
31042	populate(objectMap, "nextLink", s.NextLink)
31043	populate(objectMap, "value", s.Value)
31044	return json.Marshal(objectMap)
31045}
31046
31047// SparkJobProperties - The properties of the Spark job.
31048type SparkJobProperties struct {
31049	// REQUIRED; Number of cores to use for the driver.
31050	DriverCores *int32 `json:"driverCores,omitempty"`
31051
31052	// REQUIRED; Amount of memory to use for the driver process.
31053	DriverMemory *string `json:"driverMemory,omitempty"`
31054
31055	// REQUIRED; Number of cores to use for each executor.
31056	ExecutorCores *int32 `json:"executorCores,omitempty"`
31057
31058	// REQUIRED; Amount of memory to use per executor process.
31059	ExecutorMemory *string `json:"executorMemory,omitempty"`
31060
31061	// REQUIRED; File containing the application to execute.
31062	File *string `json:"file,omitempty"`
31063
31064	// REQUIRED; Number of executors to launch for this job.
31065	NumExecutors *int32 `json:"numExecutors,omitempty"`
31066
31067	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
31068	AdditionalProperties map[string]interface{}
31069
31070	// Archives to be used in this job.
31071	Archives []*string `json:"archives,omitempty"`
31072
31073	// Command line arguments for the application.
31074	Args []*string `json:"args,omitempty"`
31075
31076	// Main class for Java/Scala application.
31077	ClassName *string `json:"className,omitempty"`
31078
31079	// Spark configuration properties.
31080	Conf interface{} `json:"conf,omitempty"`
31081
31082	// files to be used in this job.
31083	Files []*string `json:"files,omitempty"`
31084
31085	// Jars to be used in this job.
31086	Jars []*string `json:"jars,omitempty"`
31087
31088	// The name of the job.
31089	Name *string `json:"name,omitempty"`
31090}
31091
31092// MarshalJSON implements the json.Marshaller interface for type SparkJobProperties.
31093func (s SparkJobProperties) MarshalJSON() ([]byte, error) {
31094	objectMap := make(map[string]interface{})
31095	populate(objectMap, "archives", s.Archives)
31096	populate(objectMap, "args", s.Args)
31097	populate(objectMap, "className", s.ClassName)
31098	populate(objectMap, "conf", s.Conf)
31099	populate(objectMap, "driverCores", s.DriverCores)
31100	populate(objectMap, "driverMemory", s.DriverMemory)
31101	populate(objectMap, "executorCores", s.ExecutorCores)
31102	populate(objectMap, "executorMemory", s.ExecutorMemory)
31103	populate(objectMap, "file", s.File)
31104	populate(objectMap, "files", s.Files)
31105	populate(objectMap, "jars", s.Jars)
31106	populate(objectMap, "name", s.Name)
31107	populate(objectMap, "numExecutors", s.NumExecutors)
31108	if s.AdditionalProperties != nil {
31109		for key, val := range s.AdditionalProperties {
31110			objectMap[key] = val
31111		}
31112	}
31113	return json.Marshal(objectMap)
31114}
31115
31116// UnmarshalJSON implements the json.Unmarshaller interface for type SparkJobProperties.
31117func (s *SparkJobProperties) UnmarshalJSON(data []byte) error {
31118	var rawMsg map[string]json.RawMessage
31119	if err := json.Unmarshal(data, &rawMsg); err != nil {
31120		return err
31121	}
31122	for key, val := range rawMsg {
31123		var err error
31124		switch key {
31125		case "archives":
31126			err = unpopulate(val, &s.Archives)
31127			delete(rawMsg, key)
31128		case "args":
31129			err = unpopulate(val, &s.Args)
31130			delete(rawMsg, key)
31131		case "className":
31132			err = unpopulate(val, &s.ClassName)
31133			delete(rawMsg, key)
31134		case "conf":
31135			err = unpopulate(val, &s.Conf)
31136			delete(rawMsg, key)
31137		case "driverCores":
31138			err = unpopulate(val, &s.DriverCores)
31139			delete(rawMsg, key)
31140		case "driverMemory":
31141			err = unpopulate(val, &s.DriverMemory)
31142			delete(rawMsg, key)
31143		case "executorCores":
31144			err = unpopulate(val, &s.ExecutorCores)
31145			delete(rawMsg, key)
31146		case "executorMemory":
31147			err = unpopulate(val, &s.ExecutorMemory)
31148			delete(rawMsg, key)
31149		case "file":
31150			err = unpopulate(val, &s.File)
31151			delete(rawMsg, key)
31152		case "files":
31153			err = unpopulate(val, &s.Files)
31154			delete(rawMsg, key)
31155		case "jars":
31156			err = unpopulate(val, &s.Jars)
31157			delete(rawMsg, key)
31158		case "name":
31159			err = unpopulate(val, &s.Name)
31160			delete(rawMsg, key)
31161		case "numExecutors":
31162			err = unpopulate(val, &s.NumExecutors)
31163			delete(rawMsg, key)
31164		default:
31165			if s.AdditionalProperties == nil {
31166				s.AdditionalProperties = map[string]interface{}{}
31167			}
31168			if val != nil {
31169				var aux interface{}
31170				err = json.Unmarshal(val, &aux)
31171				s.AdditionalProperties[key] = aux
31172			}
31173			delete(rawMsg, key)
31174		}
31175		if err != nil {
31176			return err
31177		}
31178	}
31179	return nil
31180}
31181
31182// SparkLinkedService - Spark Server linked service.
31183type SparkLinkedService struct {
31184	LinkedService
31185	// REQUIRED; Spark Server linked service properties.
31186	TypeProperties *SparkLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
31187}
31188
31189// MarshalJSON implements the json.Marshaller interface for type SparkLinkedService.
31190func (s SparkLinkedService) MarshalJSON() ([]byte, error) {
31191	objectMap := s.LinkedService.marshalInternal("Spark")
31192	populate(objectMap, "typeProperties", s.TypeProperties)
31193	return json.Marshal(objectMap)
31194}
31195
31196// UnmarshalJSON implements the json.Unmarshaller interface for type SparkLinkedService.
31197func (s *SparkLinkedService) UnmarshalJSON(data []byte) error {
31198	var rawMsg map[string]json.RawMessage
31199	if err := json.Unmarshal(data, &rawMsg); err != nil {
31200		return err
31201	}
31202	for key, val := range rawMsg {
31203		var err error
31204		switch key {
31205		case "typeProperties":
31206			err = unpopulate(val, &s.TypeProperties)
31207			delete(rawMsg, key)
31208		}
31209		if err != nil {
31210			return err
31211		}
31212	}
31213	return s.LinkedService.unmarshalInternal(rawMsg)
31214}
31215
31216// SparkLinkedServiceTypeProperties - Spark Server linked service properties.
31217type SparkLinkedServiceTypeProperties struct {
31218	// REQUIRED; The authentication method used to access the Spark server.
31219	AuthenticationType *SparkAuthenticationType `json:"authenticationType,omitempty"`
31220
31221	// REQUIRED; IP address or host name of the Spark server
31222	Host interface{} `json:"host,omitempty"`
31223
31224	// REQUIRED; The TCP port that the Spark server uses to listen for client connections.
31225	Port interface{} `json:"port,omitempty"`
31226
31227	// Specifies whether to require a CA-issued SSL certificate name to match the host name of the server when connecting over SSL. The default value is false.
31228	AllowHostNameCNMismatch interface{} `json:"allowHostNameCNMismatch,omitempty"`
31229
31230	// Specifies whether to allow self-signed certificates from the server. The default value is false.
31231	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
31232
31233	// Specifies whether the connections to the server are encrypted using SSL. The default value is false.
31234	EnableSSL interface{} `json:"enableSsl,omitempty"`
31235
31236	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
31237	// with resultType string).
31238	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
31239
31240	// The partial URL corresponding to the Spark server.
31241	HTTPPath interface{} `json:"httpPath,omitempty"`
31242
31243	// The password corresponding to the user name that you provided in the Username field
31244	Password SecretBaseClassification `json:"password,omitempty"`
31245
31246	// The type of Spark server.
31247	ServerType *SparkServerType `json:"serverType,omitempty"`
31248
31249	// The transport protocol to use in the Thrift layer.
31250	ThriftTransportProtocol *SparkThriftTransportProtocol `json:"thriftTransportProtocol,omitempty"`
31251
31252	// The full path of the .pem file containing trusted CA certificates for verifying the server when connecting over SSL. This property can only be set when
31253	// using SSL on self-hosted IR. The default value
31254	// is the cacerts.pem file installed with the IR.
31255	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
31256
31257	// Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.
31258	UseSystemTrustStore interface{} `json:"useSystemTrustStore,omitempty"`
31259
31260	// The user name that you use to access Spark Server.
31261	Username interface{} `json:"username,omitempty"`
31262}
31263
31264// MarshalJSON implements the json.Marshaller interface for type SparkLinkedServiceTypeProperties.
31265func (s SparkLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
31266	objectMap := make(map[string]interface{})
31267	populate(objectMap, "allowHostNameCNMismatch", s.AllowHostNameCNMismatch)
31268	populate(objectMap, "allowSelfSignedServerCert", s.AllowSelfSignedServerCert)
31269	populate(objectMap, "authenticationType", s.AuthenticationType)
31270	populate(objectMap, "enableSsl", s.EnableSSL)
31271	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
31272	populate(objectMap, "httpPath", s.HTTPPath)
31273	populate(objectMap, "host", s.Host)
31274	populate(objectMap, "password", s.Password)
31275	populate(objectMap, "port", s.Port)
31276	populate(objectMap, "serverType", s.ServerType)
31277	populate(objectMap, "thriftTransportProtocol", s.ThriftTransportProtocol)
31278	populate(objectMap, "trustedCertPath", s.TrustedCertPath)
31279	populate(objectMap, "useSystemTrustStore", s.UseSystemTrustStore)
31280	populate(objectMap, "username", s.Username)
31281	return json.Marshal(objectMap)
31282}
31283
31284// UnmarshalJSON implements the json.Unmarshaller interface for type SparkLinkedServiceTypeProperties.
31285func (s *SparkLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
31286	var rawMsg map[string]json.RawMessage
31287	if err := json.Unmarshal(data, &rawMsg); err != nil {
31288		return err
31289	}
31290	for key, val := range rawMsg {
31291		var err error
31292		switch key {
31293		case "allowHostNameCNMismatch":
31294			err = unpopulate(val, &s.AllowHostNameCNMismatch)
31295			delete(rawMsg, key)
31296		case "allowSelfSignedServerCert":
31297			err = unpopulate(val, &s.AllowSelfSignedServerCert)
31298			delete(rawMsg, key)
31299		case "authenticationType":
31300			err = unpopulate(val, &s.AuthenticationType)
31301			delete(rawMsg, key)
31302		case "enableSsl":
31303			err = unpopulate(val, &s.EnableSSL)
31304			delete(rawMsg, key)
31305		case "encryptedCredential":
31306			err = unpopulate(val, &s.EncryptedCredential)
31307			delete(rawMsg, key)
31308		case "httpPath":
31309			err = unpopulate(val, &s.HTTPPath)
31310			delete(rawMsg, key)
31311		case "host":
31312			err = unpopulate(val, &s.Host)
31313			delete(rawMsg, key)
31314		case "password":
31315			s.Password, err = unmarshalSecretBaseClassification(val)
31316			delete(rawMsg, key)
31317		case "port":
31318			err = unpopulate(val, &s.Port)
31319			delete(rawMsg, key)
31320		case "serverType":
31321			err = unpopulate(val, &s.ServerType)
31322			delete(rawMsg, key)
31323		case "thriftTransportProtocol":
31324			err = unpopulate(val, &s.ThriftTransportProtocol)
31325			delete(rawMsg, key)
31326		case "trustedCertPath":
31327			err = unpopulate(val, &s.TrustedCertPath)
31328			delete(rawMsg, key)
31329		case "useSystemTrustStore":
31330			err = unpopulate(val, &s.UseSystemTrustStore)
31331			delete(rawMsg, key)
31332		case "username":
31333			err = unpopulate(val, &s.Username)
31334			delete(rawMsg, key)
31335		}
31336		if err != nil {
31337			return err
31338		}
31339	}
31340	return nil
31341}
31342
31343// SparkObjectDataset - Spark Server dataset.
31344type SparkObjectDataset struct {
31345	Dataset
31346	// Properties specific to this dataset type.
31347	TypeProperties *SparkDatasetTypeProperties `json:"typeProperties,omitempty"`
31348}
31349
31350// MarshalJSON implements the json.Marshaller interface for type SparkObjectDataset.
31351func (s SparkObjectDataset) MarshalJSON() ([]byte, error) {
31352	objectMap := s.Dataset.marshalInternal("SparkObject")
31353	populate(objectMap, "typeProperties", s.TypeProperties)
31354	return json.Marshal(objectMap)
31355}
31356
31357// UnmarshalJSON implements the json.Unmarshaller interface for type SparkObjectDataset.
31358func (s *SparkObjectDataset) UnmarshalJSON(data []byte) error {
31359	var rawMsg map[string]json.RawMessage
31360	if err := json.Unmarshal(data, &rawMsg); err != nil {
31361		return err
31362	}
31363	for key, val := range rawMsg {
31364		var err error
31365		switch key {
31366		case "typeProperties":
31367			err = unpopulate(val, &s.TypeProperties)
31368			delete(rawMsg, key)
31369		}
31370		if err != nil {
31371			return err
31372		}
31373	}
31374	return s.Dataset.unmarshalInternal(rawMsg)
31375}
31376
31377type SparkRequest struct {
31378	Archives  []*string `json:"archives,omitempty"`
31379	Arguments []*string `json:"args,omitempty"`
31380	ClassName *string   `json:"className,omitempty"`
31381
31382	// Dictionary of
31383	Configuration  map[string]*string `json:"conf,omitempty"`
31384	DriverCores    *int32             `json:"driverCores,omitempty"`
31385	DriverMemory   *string            `json:"driverMemory,omitempty"`
31386	ExecutorCores  *int32             `json:"executorCores,omitempty"`
31387	ExecutorCount  *int32             `json:"numExecutors,omitempty"`
31388	ExecutorMemory *string            `json:"executorMemory,omitempty"`
31389	File           *string            `json:"file,omitempty"`
31390	Files          []*string          `json:"files,omitempty"`
31391	Jars           []*string          `json:"jars,omitempty"`
31392	Name           *string            `json:"name,omitempty"`
31393	PythonFiles    []*string          `json:"pyFiles,omitempty"`
31394}
31395
31396// MarshalJSON implements the json.Marshaller interface for type SparkRequest.
31397func (s SparkRequest) MarshalJSON() ([]byte, error) {
31398	objectMap := make(map[string]interface{})
31399	populate(objectMap, "archives", s.Archives)
31400	populate(objectMap, "args", s.Arguments)
31401	populate(objectMap, "className", s.ClassName)
31402	populate(objectMap, "conf", s.Configuration)
31403	populate(objectMap, "driverCores", s.DriverCores)
31404	populate(objectMap, "driverMemory", s.DriverMemory)
31405	populate(objectMap, "executorCores", s.ExecutorCores)
31406	populate(objectMap, "numExecutors", s.ExecutorCount)
31407	populate(objectMap, "executorMemory", s.ExecutorMemory)
31408	populate(objectMap, "file", s.File)
31409	populate(objectMap, "files", s.Files)
31410	populate(objectMap, "jars", s.Jars)
31411	populate(objectMap, "name", s.Name)
31412	populate(objectMap, "pyFiles", s.PythonFiles)
31413	return json.Marshal(objectMap)
31414}
31415
31416type SparkScheduler struct {
31417	CancellationRequestedAt *time.Time             `json:"cancellationRequestedAt,omitempty"`
31418	CurrentState            *SchedulerCurrentState `json:"currentState,omitempty"`
31419	EndedAt                 *time.Time             `json:"endedAt,omitempty"`
31420	ScheduledAt             *time.Time             `json:"scheduledAt,omitempty"`
31421	SubmittedAt             *time.Time             `json:"submittedAt,omitempty"`
31422}
31423
31424// MarshalJSON implements the json.Marshaller interface for type SparkScheduler.
31425func (s SparkScheduler) MarshalJSON() ([]byte, error) {
31426	objectMap := make(map[string]interface{})
31427	populate(objectMap, "cancellationRequestedAt", (*timeRFC3339)(s.CancellationRequestedAt))
31428	populate(objectMap, "currentState", s.CurrentState)
31429	populate(objectMap, "endedAt", (*timeRFC3339)(s.EndedAt))
31430	populate(objectMap, "scheduledAt", (*timeRFC3339)(s.ScheduledAt))
31431	populate(objectMap, "submittedAt", (*timeRFC3339)(s.SubmittedAt))
31432	return json.Marshal(objectMap)
31433}
31434
31435// UnmarshalJSON implements the json.Unmarshaller interface for type SparkScheduler.
31436func (s *SparkScheduler) UnmarshalJSON(data []byte) error {
31437	var rawMsg map[string]json.RawMessage
31438	if err := json.Unmarshal(data, &rawMsg); err != nil {
31439		return err
31440	}
31441	for key, val := range rawMsg {
31442		var err error
31443		switch key {
31444		case "cancellationRequestedAt":
31445			var aux timeRFC3339
31446			err = unpopulate(val, &aux)
31447			s.CancellationRequestedAt = (*time.Time)(&aux)
31448			delete(rawMsg, key)
31449		case "currentState":
31450			err = unpopulate(val, &s.CurrentState)
31451			delete(rawMsg, key)
31452		case "endedAt":
31453			var aux timeRFC3339
31454			err = unpopulate(val, &aux)
31455			s.EndedAt = (*time.Time)(&aux)
31456			delete(rawMsg, key)
31457		case "scheduledAt":
31458			var aux timeRFC3339
31459			err = unpopulate(val, &aux)
31460			s.ScheduledAt = (*time.Time)(&aux)
31461			delete(rawMsg, key)
31462		case "submittedAt":
31463			var aux timeRFC3339
31464			err = unpopulate(val, &aux)
31465			s.SubmittedAt = (*time.Time)(&aux)
31466			delete(rawMsg, key)
31467		}
31468		if err != nil {
31469			return err
31470		}
31471	}
31472	return nil
31473}
31474
31475type SparkServiceError struct {
31476	ErrorCode *string           `json:"errorCode,omitempty"`
31477	Message   *string           `json:"message,omitempty"`
31478	Source    *SparkErrorSource `json:"source,omitempty"`
31479}
31480
31481type SparkServicePlugin struct {
31482	CleanupStartedAt             *time.Time          `json:"cleanupStartedAt,omitempty"`
31483	CurrentState                 *PluginCurrentState `json:"currentState,omitempty"`
31484	MonitoringStartedAt          *time.Time          `json:"monitoringStartedAt,omitempty"`
31485	PreparationStartedAt         *time.Time          `json:"preparationStartedAt,omitempty"`
31486	ResourceAcquisitionStartedAt *time.Time          `json:"resourceAcquisitionStartedAt,omitempty"`
31487	SubmissionStartedAt          *time.Time          `json:"submissionStartedAt,omitempty"`
31488}
31489
31490// MarshalJSON implements the json.Marshaller interface for type SparkServicePlugin.
31491func (s SparkServicePlugin) MarshalJSON() ([]byte, error) {
31492	objectMap := make(map[string]interface{})
31493	populate(objectMap, "cleanupStartedAt", (*timeRFC3339)(s.CleanupStartedAt))
31494	populate(objectMap, "currentState", s.CurrentState)
31495	populate(objectMap, "monitoringStartedAt", (*timeRFC3339)(s.MonitoringStartedAt))
31496	populate(objectMap, "preparationStartedAt", (*timeRFC3339)(s.PreparationStartedAt))
31497	populate(objectMap, "resourceAcquisitionStartedAt", (*timeRFC3339)(s.ResourceAcquisitionStartedAt))
31498	populate(objectMap, "submissionStartedAt", (*timeRFC3339)(s.SubmissionStartedAt))
31499	return json.Marshal(objectMap)
31500}
31501
31502// UnmarshalJSON implements the json.Unmarshaller interface for type SparkServicePlugin.
31503func (s *SparkServicePlugin) UnmarshalJSON(data []byte) error {
31504	var rawMsg map[string]json.RawMessage
31505	if err := json.Unmarshal(data, &rawMsg); err != nil {
31506		return err
31507	}
31508	for key, val := range rawMsg {
31509		var err error
31510		switch key {
31511		case "cleanupStartedAt":
31512			var aux timeRFC3339
31513			err = unpopulate(val, &aux)
31514			s.CleanupStartedAt = (*time.Time)(&aux)
31515			delete(rawMsg, key)
31516		case "currentState":
31517			err = unpopulate(val, &s.CurrentState)
31518			delete(rawMsg, key)
31519		case "monitoringStartedAt":
31520			var aux timeRFC3339
31521			err = unpopulate(val, &aux)
31522			s.MonitoringStartedAt = (*time.Time)(&aux)
31523			delete(rawMsg, key)
31524		case "preparationStartedAt":
31525			var aux timeRFC3339
31526			err = unpopulate(val, &aux)
31527			s.PreparationStartedAt = (*time.Time)(&aux)
31528			delete(rawMsg, key)
31529		case "resourceAcquisitionStartedAt":
31530			var aux timeRFC3339
31531			err = unpopulate(val, &aux)
31532			s.ResourceAcquisitionStartedAt = (*time.Time)(&aux)
31533			delete(rawMsg, key)
31534		case "submissionStartedAt":
31535			var aux timeRFC3339
31536			err = unpopulate(val, &aux)
31537			s.SubmissionStartedAt = (*time.Time)(&aux)
31538			delete(rawMsg, key)
31539		}
31540		if err != nil {
31541			return err
31542		}
31543	}
31544	return nil
31545}
31546
31547// SparkSource - A copy activity Spark Server source.
31548type SparkSource struct {
31549	TabularSource
31550	// A query to retrieve data from source. Type: string (or Expression with resultType string).
31551	Query interface{} `json:"query,omitempty"`
31552}
31553
31554// MarshalJSON implements the json.Marshaller interface for type SparkSource.
31555func (s SparkSource) MarshalJSON() ([]byte, error) {
31556	objectMap := s.TabularSource.marshalInternal("SparkSource")
31557	populate(objectMap, "query", s.Query)
31558	return json.Marshal(objectMap)
31559}
31560
31561// UnmarshalJSON implements the json.Unmarshaller interface for type SparkSource.
31562func (s *SparkSource) UnmarshalJSON(data []byte) error {
31563	var rawMsg map[string]json.RawMessage
31564	if err := json.Unmarshal(data, &rawMsg); err != nil {
31565		return err
31566	}
31567	for key, val := range rawMsg {
31568		var err error
31569		switch key {
31570		case "query":
31571			err = unpopulate(val, &s.Query)
31572			delete(rawMsg, key)
31573		}
31574		if err != nil {
31575			return err
31576		}
31577	}
31578	return s.TabularSource.unmarshalInternal(rawMsg)
31579}
31580
31581// SquareLinkedService - Square Service linked service.
31582type SquareLinkedService struct {
31583	LinkedService
31584	// REQUIRED; Square Service linked service properties.
31585	TypeProperties *SquareLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
31586}
31587
31588// MarshalJSON implements the json.Marshaller interface for type SquareLinkedService.
31589func (s SquareLinkedService) MarshalJSON() ([]byte, error) {
31590	objectMap := s.LinkedService.marshalInternal("Square")
31591	populate(objectMap, "typeProperties", s.TypeProperties)
31592	return json.Marshal(objectMap)
31593}
31594
31595// UnmarshalJSON implements the json.Unmarshaller interface for type SquareLinkedService.
31596func (s *SquareLinkedService) UnmarshalJSON(data []byte) error {
31597	var rawMsg map[string]json.RawMessage
31598	if err := json.Unmarshal(data, &rawMsg); err != nil {
31599		return err
31600	}
31601	for key, val := range rawMsg {
31602		var err error
31603		switch key {
31604		case "typeProperties":
31605			err = unpopulate(val, &s.TypeProperties)
31606			delete(rawMsg, key)
31607		}
31608		if err != nil {
31609			return err
31610		}
31611	}
31612	return s.LinkedService.unmarshalInternal(rawMsg)
31613}
31614
31615// SquareLinkedServiceTypeProperties - Square Service linked service properties.
31616type SquareLinkedServiceTypeProperties struct {
31617	// REQUIRED; The client ID associated with your Square application.
31618	ClientID interface{} `json:"clientId,omitempty"`
31619
31620	// REQUIRED; The URL of the Square instance. (i.e. mystore.mysquare.com)
31621	Host interface{} `json:"host,omitempty"`
31622
31623	// REQUIRED; The redirect URL assigned in the Square application dashboard. (i.e. http://localhost:2500)
31624	RedirectURI interface{} `json:"redirectUri,omitempty"`
31625
31626	// The client secret associated with your Square application.
31627	ClientSecret SecretBaseClassification `json:"clientSecret,omitempty"`
31628
31629	// Properties used to connect to Square. It is mutually exclusive with any other properties in the linked service. Type: object.
31630	ConnectionProperties interface{} `json:"connectionProperties,omitempty"`
31631
31632	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
31633	// with resultType string).
31634	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
31635
31636	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
31637	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
31638
31639	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
31640	// is true.
31641	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
31642
31643	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
31644	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
31645}
31646
31647// MarshalJSON implements the json.Marshaller interface for type SquareLinkedServiceTypeProperties.
31648func (s SquareLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
31649	objectMap := make(map[string]interface{})
31650	populate(objectMap, "clientId", s.ClientID)
31651	populate(objectMap, "clientSecret", s.ClientSecret)
31652	populate(objectMap, "connectionProperties", s.ConnectionProperties)
31653	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
31654	populate(objectMap, "host", s.Host)
31655	populate(objectMap, "redirectUri", s.RedirectURI)
31656	populate(objectMap, "useEncryptedEndpoints", s.UseEncryptedEndpoints)
31657	populate(objectMap, "useHostVerification", s.UseHostVerification)
31658	populate(objectMap, "usePeerVerification", s.UsePeerVerification)
31659	return json.Marshal(objectMap)
31660}
31661
31662// UnmarshalJSON implements the json.Unmarshaller interface for type SquareLinkedServiceTypeProperties.
31663func (s *SquareLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
31664	var rawMsg map[string]json.RawMessage
31665	if err := json.Unmarshal(data, &rawMsg); err != nil {
31666		return err
31667	}
31668	for key, val := range rawMsg {
31669		var err error
31670		switch key {
31671		case "clientId":
31672			err = unpopulate(val, &s.ClientID)
31673			delete(rawMsg, key)
31674		case "clientSecret":
31675			s.ClientSecret, err = unmarshalSecretBaseClassification(val)
31676			delete(rawMsg, key)
31677		case "connectionProperties":
31678			err = unpopulate(val, &s.ConnectionProperties)
31679			delete(rawMsg, key)
31680		case "encryptedCredential":
31681			err = unpopulate(val, &s.EncryptedCredential)
31682			delete(rawMsg, key)
31683		case "host":
31684			err = unpopulate(val, &s.Host)
31685			delete(rawMsg, key)
31686		case "redirectUri":
31687			err = unpopulate(val, &s.RedirectURI)
31688			delete(rawMsg, key)
31689		case "useEncryptedEndpoints":
31690			err = unpopulate(val, &s.UseEncryptedEndpoints)
31691			delete(rawMsg, key)
31692		case "useHostVerification":
31693			err = unpopulate(val, &s.UseHostVerification)
31694			delete(rawMsg, key)
31695		case "usePeerVerification":
31696			err = unpopulate(val, &s.UsePeerVerification)
31697			delete(rawMsg, key)
31698		}
31699		if err != nil {
31700			return err
31701		}
31702	}
31703	return nil
31704}
31705
31706// SquareObjectDataset - Square Service dataset.
31707type SquareObjectDataset struct {
31708	Dataset
31709	// Properties specific to this dataset type.
31710	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
31711}
31712
31713// MarshalJSON implements the json.Marshaller interface for type SquareObjectDataset.
31714func (s SquareObjectDataset) MarshalJSON() ([]byte, error) {
31715	objectMap := s.Dataset.marshalInternal("SquareObject")
31716	populate(objectMap, "typeProperties", s.TypeProperties)
31717	return json.Marshal(objectMap)
31718}
31719
31720// UnmarshalJSON implements the json.Unmarshaller interface for type SquareObjectDataset.
31721func (s *SquareObjectDataset) UnmarshalJSON(data []byte) error {
31722	var rawMsg map[string]json.RawMessage
31723	if err := json.Unmarshal(data, &rawMsg); err != nil {
31724		return err
31725	}
31726	for key, val := range rawMsg {
31727		var err error
31728		switch key {
31729		case "typeProperties":
31730			err = unpopulate(val, &s.TypeProperties)
31731			delete(rawMsg, key)
31732		}
31733		if err != nil {
31734			return err
31735		}
31736	}
31737	return s.Dataset.unmarshalInternal(rawMsg)
31738}
31739
31740// SquareSource - A copy activity Square Service source.
31741type SquareSource struct {
31742	TabularSource
31743	// A query to retrieve data from source. Type: string (or Expression with resultType string).
31744	Query interface{} `json:"query,omitempty"`
31745}
31746
31747// MarshalJSON implements the json.Marshaller interface for type SquareSource.
31748func (s SquareSource) MarshalJSON() ([]byte, error) {
31749	objectMap := s.TabularSource.marshalInternal("SquareSource")
31750	populate(objectMap, "query", s.Query)
31751	return json.Marshal(objectMap)
31752}
31753
31754// UnmarshalJSON implements the json.Unmarshaller interface for type SquareSource.
31755func (s *SquareSource) UnmarshalJSON(data []byte) error {
31756	var rawMsg map[string]json.RawMessage
31757	if err := json.Unmarshal(data, &rawMsg); err != nil {
31758		return err
31759	}
31760	for key, val := range rawMsg {
31761		var err error
31762		switch key {
31763		case "query":
31764			err = unpopulate(val, &s.Query)
31765			delete(rawMsg, key)
31766		}
31767		if err != nil {
31768			return err
31769		}
31770	}
31771	return s.TabularSource.unmarshalInternal(rawMsg)
31772}
31773
31774// SsisObjectMetadataStatusResponse - The status of the operation.
31775type SsisObjectMetadataStatusResponse struct {
31776	// The operation error message.
31777	Error *string `json:"error,omitempty"`
31778
31779	// The operation name.
31780	Name *string `json:"name,omitempty"`
31781
31782	// The operation properties.
31783	Properties *string `json:"properties,omitempty"`
31784
31785	// The status of the operation.
31786	Status *string `json:"status,omitempty"`
31787}
31788
31789// StagingSettings - Staging settings.
31790type StagingSettings struct {
31791	// REQUIRED; Staging linked service reference.
31792	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
31793
31794	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
31795	AdditionalProperties map[string]interface{}
31796
31797	// Specifies whether to use compression when copying data via an interim staging. Default value is false. Type: boolean (or Expression with resultType boolean).
31798	EnableCompression interface{} `json:"enableCompression,omitempty"`
31799
31800	// The path to storage for storing the interim data. Type: string (or Expression with resultType string).
31801	Path interface{} `json:"path,omitempty"`
31802}
31803
31804// MarshalJSON implements the json.Marshaller interface for type StagingSettings.
31805func (s StagingSettings) MarshalJSON() ([]byte, error) {
31806	objectMap := make(map[string]interface{})
31807	populate(objectMap, "enableCompression", s.EnableCompression)
31808	populate(objectMap, "linkedServiceName", s.LinkedServiceName)
31809	populate(objectMap, "path", s.Path)
31810	if s.AdditionalProperties != nil {
31811		for key, val := range s.AdditionalProperties {
31812			objectMap[key] = val
31813		}
31814	}
31815	return json.Marshal(objectMap)
31816}
31817
31818// UnmarshalJSON implements the json.Unmarshaller interface for type StagingSettings.
31819func (s *StagingSettings) UnmarshalJSON(data []byte) error {
31820	var rawMsg map[string]json.RawMessage
31821	if err := json.Unmarshal(data, &rawMsg); err != nil {
31822		return err
31823	}
31824	for key, val := range rawMsg {
31825		var err error
31826		switch key {
31827		case "enableCompression":
31828			err = unpopulate(val, &s.EnableCompression)
31829			delete(rawMsg, key)
31830		case "linkedServiceName":
31831			err = unpopulate(val, &s.LinkedServiceName)
31832			delete(rawMsg, key)
31833		case "path":
31834			err = unpopulate(val, &s.Path)
31835			delete(rawMsg, key)
31836		default:
31837			if s.AdditionalProperties == nil {
31838				s.AdditionalProperties = map[string]interface{}{}
31839			}
31840			if val != nil {
31841				var aux interface{}
31842				err = json.Unmarshal(val, &aux)
31843				s.AdditionalProperties[key] = aux
31844			}
31845			delete(rawMsg, key)
31846		}
31847		if err != nil {
31848			return err
31849		}
31850	}
31851	return nil
31852}
31853
31854// StartDataFlowDebugSessionRequest - Request body structure for starting data flow debug session.
31855type StartDataFlowDebugSessionRequest struct {
31856	// Data flow instance.
31857	DataFlow *DataFlowResource `json:"dataFlow,omitempty"`
31858
31859	// List of datasets.
31860	Datasets []*DatasetResource `json:"datasets,omitempty"`
31861
31862	// Data flow debug settings.
31863	DebugSettings interface{} `json:"debugSettings,omitempty"`
31864
31865	// The type of new Databricks cluster.
31866	IncrementalDebug *bool `json:"incrementalDebug,omitempty"`
31867
31868	// List of linked services.
31869	LinkedServices []*LinkedServiceResource `json:"linkedServices,omitempty"`
31870
31871	// The ID of data flow debug session.
31872	SessionID *string `json:"sessionId,omitempty"`
31873
31874	// Staging info for debug session.
31875	Staging interface{} `json:"staging,omitempty"`
31876}
31877
31878// MarshalJSON implements the json.Marshaller interface for type StartDataFlowDebugSessionRequest.
31879func (s StartDataFlowDebugSessionRequest) MarshalJSON() ([]byte, error) {
31880	objectMap := make(map[string]interface{})
31881	populate(objectMap, "dataFlow", s.DataFlow)
31882	populate(objectMap, "datasets", s.Datasets)
31883	populate(objectMap, "debugSettings", s.DebugSettings)
31884	populate(objectMap, "incrementalDebug", s.IncrementalDebug)
31885	populate(objectMap, "linkedServices", s.LinkedServices)
31886	populate(objectMap, "sessionId", s.SessionID)
31887	populate(objectMap, "staging", s.Staging)
31888	return json.Marshal(objectMap)
31889}
31890
31891// StartDataFlowDebugSessionResponse - Response body structure for starting data flow debug session.
31892type StartDataFlowDebugSessionResponse struct {
31893	// The ID of data flow debug job version.
31894	JobVersion *string `json:"jobVersion,omitempty"`
31895}
31896
31897// StoreReadSettingsClassification provides polymorphic access to related types.
31898// Call the interface's GetStoreReadSettings() method to access the common type.
31899// Use a type switch to determine the concrete type.  The possible types are:
31900// - *AmazonS3ReadSettings, *AzureBlobFSReadSettings, *AzureBlobStorageReadSettings, *AzureDataLakeStoreReadSettings, *AzureFileStorageReadSettings,
31901// - *FileServerReadSettings, *FtpReadSettings, *GoogleCloudStorageReadSettings, *HdfsReadSettings, *HttpReadSettings, *SftpReadSettings,
31902// - *StoreReadSettings
31903type StoreReadSettingsClassification interface {
31904	// GetStoreReadSettings returns the StoreReadSettings content of the underlying type.
31905	GetStoreReadSettings() *StoreReadSettings
31906}
31907
31908// StoreReadSettings - Connector read setting.
31909type StoreReadSettings struct {
31910	// REQUIRED; The read setting type.
31911	Type *string `json:"type,omitempty"`
31912
31913	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
31914	AdditionalProperties map[string]interface{}
31915
31916	// The maximum concurrent connection count for the source data store. Type: integer (or Expression with resultType integer).
31917	MaxConcurrentConnections interface{} `json:"maxConcurrentConnections,omitempty"`
31918}
31919
31920// GetStoreReadSettings implements the StoreReadSettingsClassification interface for type StoreReadSettings.
31921func (s *StoreReadSettings) GetStoreReadSettings() *StoreReadSettings { return s }
31922
31923// UnmarshalJSON implements the json.Unmarshaller interface for type StoreReadSettings.
31924func (s *StoreReadSettings) UnmarshalJSON(data []byte) error {
31925	var rawMsg map[string]json.RawMessage
31926	if err := json.Unmarshal(data, &rawMsg); err != nil {
31927		return err
31928	}
31929	return s.unmarshalInternal(rawMsg)
31930}
31931
31932func (s StoreReadSettings) marshalInternal(discValue string) map[string]interface{} {
31933	objectMap := make(map[string]interface{})
31934	populate(objectMap, "maxConcurrentConnections", s.MaxConcurrentConnections)
31935	s.Type = &discValue
31936	objectMap["type"] = s.Type
31937	if s.AdditionalProperties != nil {
31938		for key, val := range s.AdditionalProperties {
31939			objectMap[key] = val
31940		}
31941	}
31942	return objectMap
31943}
31944
31945func (s *StoreReadSettings) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
31946	for key, val := range rawMsg {
31947		var err error
31948		switch key {
31949		case "maxConcurrentConnections":
31950			err = unpopulate(val, &s.MaxConcurrentConnections)
31951			delete(rawMsg, key)
31952		case "type":
31953			err = unpopulate(val, &s.Type)
31954			delete(rawMsg, key)
31955		default:
31956			if s.AdditionalProperties == nil {
31957				s.AdditionalProperties = map[string]interface{}{}
31958			}
31959			if val != nil {
31960				var aux interface{}
31961				err = json.Unmarshal(val, &aux)
31962				s.AdditionalProperties[key] = aux
31963			}
31964			delete(rawMsg, key)
31965		}
31966		if err != nil {
31967			return err
31968		}
31969	}
31970	return nil
31971}
31972
31973// StoreWriteSettingsClassification provides polymorphic access to related types.
31974// Call the interface's GetStoreWriteSettings() method to access the common type.
31975// Use a type switch to determine the concrete type.  The possible types are:
31976// - *AzureBlobFSWriteSettings, *AzureBlobStorageWriteSettings, *AzureDataLakeStoreWriteSettings, *AzureFileStorageWriteSettings,
31977// - *FileServerWriteSettings, *SftpWriteSettings, *StoreWriteSettings
31978type StoreWriteSettingsClassification interface {
31979	// GetStoreWriteSettings returns the StoreWriteSettings content of the underlying type.
31980	GetStoreWriteSettings() *StoreWriteSettings
31981}
31982
31983// StoreWriteSettings - Connector write settings.
31984type StoreWriteSettings struct {
31985	// REQUIRED; The write setting type.
31986	Type *string `json:"type,omitempty"`
31987
31988	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
31989	AdditionalProperties map[string]interface{}
31990
31991	// The type of copy behavior for copy sink.
31992	CopyBehavior interface{} `json:"copyBehavior,omitempty"`
31993
31994	// The maximum concurrent connection count for the source data store. Type: integer (or Expression with resultType integer).
31995	MaxConcurrentConnections interface{} `json:"maxConcurrentConnections,omitempty"`
31996}
31997
31998// GetStoreWriteSettings implements the StoreWriteSettingsClassification interface for type StoreWriteSettings.
31999func (s *StoreWriteSettings) GetStoreWriteSettings() *StoreWriteSettings { return s }
32000
32001// UnmarshalJSON implements the json.Unmarshaller interface for type StoreWriteSettings.
32002func (s *StoreWriteSettings) UnmarshalJSON(data []byte) error {
32003	var rawMsg map[string]json.RawMessage
32004	if err := json.Unmarshal(data, &rawMsg); err != nil {
32005		return err
32006	}
32007	return s.unmarshalInternal(rawMsg)
32008}
32009
32010func (s StoreWriteSettings) marshalInternal(discValue string) map[string]interface{} {
32011	objectMap := make(map[string]interface{})
32012	populate(objectMap, "copyBehavior", s.CopyBehavior)
32013	populate(objectMap, "maxConcurrentConnections", s.MaxConcurrentConnections)
32014	s.Type = &discValue
32015	objectMap["type"] = s.Type
32016	if s.AdditionalProperties != nil {
32017		for key, val := range s.AdditionalProperties {
32018			objectMap[key] = val
32019		}
32020	}
32021	return objectMap
32022}
32023
32024func (s *StoreWriteSettings) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
32025	for key, val := range rawMsg {
32026		var err error
32027		switch key {
32028		case "copyBehavior":
32029			err = unpopulate(val, &s.CopyBehavior)
32030			delete(rawMsg, key)
32031		case "maxConcurrentConnections":
32032			err = unpopulate(val, &s.MaxConcurrentConnections)
32033			delete(rawMsg, key)
32034		case "type":
32035			err = unpopulate(val, &s.Type)
32036			delete(rawMsg, key)
32037		default:
32038			if s.AdditionalProperties == nil {
32039				s.AdditionalProperties = map[string]interface{}{}
32040			}
32041			if val != nil {
32042				var aux interface{}
32043				err = json.Unmarshal(val, &aux)
32044				s.AdditionalProperties[key] = aux
32045			}
32046			delete(rawMsg, key)
32047		}
32048		if err != nil {
32049			return err
32050		}
32051	}
32052	return nil
32053}
32054
32055// StoredProcedureParameter - SQL stored procedure parameter.
32056type StoredProcedureParameter struct {
32057	// Stored procedure parameter type.
32058	Type *StoredProcedureParameterType `json:"type,omitempty"`
32059
32060	// Stored procedure parameter value. Type: string (or Expression with resultType string).
32061	Value interface{} `json:"value,omitempty"`
32062}
32063
32064// SubResource - Azure Synapse nested resource, which belongs to a workspace.
32065type SubResource struct {
32066	AzureEntityResource
32067}
32068
32069func (s SubResource) marshalInternal() map[string]interface{} {
32070	objectMap := s.AzureEntityResource.marshalInternal()
32071	return objectMap
32072}
32073
32074func (s *SubResource) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
32075	return s.AzureEntityResource.unmarshalInternal(rawMsg)
32076}
32077
32078// SubResourceDebugResource - Azure Synapse nested debug resource.
32079type SubResourceDebugResource struct {
32080	// The resource name.
32081	Name *string `json:"name,omitempty"`
32082}
32083
32084// MarshalJSON implements the json.Marshaller interface for type SubResourceDebugResource.
32085func (s SubResourceDebugResource) MarshalJSON() ([]byte, error) {
32086	objectMap := s.marshalInternal()
32087	return json.Marshal(objectMap)
32088}
32089
32090// UnmarshalJSON implements the json.Unmarshaller interface for type SubResourceDebugResource.
32091func (s *SubResourceDebugResource) UnmarshalJSON(data []byte) error {
32092	var rawMsg map[string]json.RawMessage
32093	if err := json.Unmarshal(data, &rawMsg); err != nil {
32094		return err
32095	}
32096	return s.unmarshalInternal(rawMsg)
32097}
32098
32099func (s SubResourceDebugResource) marshalInternal() map[string]interface{} {
32100	objectMap := make(map[string]interface{})
32101	populate(objectMap, "name", s.Name)
32102	return objectMap
32103}
32104
32105func (s *SubResourceDebugResource) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
32106	for key, val := range rawMsg {
32107		var err error
32108		switch key {
32109		case "name":
32110			err = unpopulate(val, &s.Name)
32111			delete(rawMsg, key)
32112		}
32113		if err != nil {
32114			return err
32115		}
32116	}
32117	return nil
32118}
32119
32120// SwitchActivity - This activity evaluates an expression and executes activities under the cases property that correspond to the expression evaluation
32121// expected in the equals property.
32122type SwitchActivity struct {
32123	ControlActivity
32124	// REQUIRED; Switch activity properties.
32125	TypeProperties *SwitchActivityTypeProperties `json:"typeProperties,omitempty"`
32126}
32127
32128// MarshalJSON implements the json.Marshaller interface for type SwitchActivity.
32129func (s SwitchActivity) MarshalJSON() ([]byte, error) {
32130	objectMap := s.ControlActivity.marshalInternal("Switch")
32131	populate(objectMap, "typeProperties", s.TypeProperties)
32132	return json.Marshal(objectMap)
32133}
32134
32135// UnmarshalJSON implements the json.Unmarshaller interface for type SwitchActivity.
32136func (s *SwitchActivity) UnmarshalJSON(data []byte) error {
32137	var rawMsg map[string]json.RawMessage
32138	if err := json.Unmarshal(data, &rawMsg); err != nil {
32139		return err
32140	}
32141	for key, val := range rawMsg {
32142		var err error
32143		switch key {
32144		case "typeProperties":
32145			err = unpopulate(val, &s.TypeProperties)
32146			delete(rawMsg, key)
32147		}
32148		if err != nil {
32149			return err
32150		}
32151	}
32152	return s.ControlActivity.unmarshalInternal(rawMsg)
32153}
32154
32155// SwitchActivityTypeProperties - Switch activity properties.
32156type SwitchActivityTypeProperties struct {
32157	// REQUIRED; An expression that would evaluate to a string or integer. This is used to determine the block of activities in cases that will be executed.
32158	On *Expression `json:"on,omitempty"`
32159
32160	// List of cases that correspond to expected values of the 'on' property. This is an optional property and if not provided, the activity will execute activities
32161	// provided in defaultActivities.
32162	Cases []*SwitchCase `json:"cases,omitempty"`
32163
32164	// List of activities to execute if no case condition is satisfied. This is an optional property and if not provided, the activity will exit without any
32165	// action.
32166	DefaultActivities []ActivityClassification `json:"defaultActivities,omitempty"`
32167}
32168
32169// MarshalJSON implements the json.Marshaller interface for type SwitchActivityTypeProperties.
32170func (s SwitchActivityTypeProperties) MarshalJSON() ([]byte, error) {
32171	objectMap := make(map[string]interface{})
32172	populate(objectMap, "cases", s.Cases)
32173	populate(objectMap, "defaultActivities", s.DefaultActivities)
32174	populate(objectMap, "on", s.On)
32175	return json.Marshal(objectMap)
32176}
32177
32178// UnmarshalJSON implements the json.Unmarshaller interface for type SwitchActivityTypeProperties.
32179func (s *SwitchActivityTypeProperties) UnmarshalJSON(data []byte) error {
32180	var rawMsg map[string]json.RawMessage
32181	if err := json.Unmarshal(data, &rawMsg); err != nil {
32182		return err
32183	}
32184	for key, val := range rawMsg {
32185		var err error
32186		switch key {
32187		case "cases":
32188			err = unpopulate(val, &s.Cases)
32189			delete(rawMsg, key)
32190		case "defaultActivities":
32191			s.DefaultActivities, err = unmarshalActivityClassificationArray(val)
32192			delete(rawMsg, key)
32193		case "on":
32194			err = unpopulate(val, &s.On)
32195			delete(rawMsg, key)
32196		}
32197		if err != nil {
32198			return err
32199		}
32200	}
32201	return nil
32202}
32203
32204// SwitchCase - Switch cases with have a value and corresponding activities.
32205type SwitchCase struct {
32206	// List of activities to execute for satisfied case condition.
32207	Activities []ActivityClassification `json:"activities,omitempty"`
32208
32209	// Expected value that satisfies the expression result of the 'on' property.
32210	Value *string `json:"value,omitempty"`
32211}
32212
32213// MarshalJSON implements the json.Marshaller interface for type SwitchCase.
32214func (s SwitchCase) MarshalJSON() ([]byte, error) {
32215	objectMap := make(map[string]interface{})
32216	populate(objectMap, "activities", s.Activities)
32217	populate(objectMap, "value", s.Value)
32218	return json.Marshal(objectMap)
32219}
32220
32221// UnmarshalJSON implements the json.Unmarshaller interface for type SwitchCase.
32222func (s *SwitchCase) UnmarshalJSON(data []byte) error {
32223	var rawMsg map[string]json.RawMessage
32224	if err := json.Unmarshal(data, &rawMsg); err != nil {
32225		return err
32226	}
32227	for key, val := range rawMsg {
32228		var err error
32229		switch key {
32230		case "activities":
32231			s.Activities, err = unmarshalActivityClassificationArray(val)
32232			delete(rawMsg, key)
32233		case "value":
32234			err = unpopulate(val, &s.Value)
32235			delete(rawMsg, key)
32236		}
32237		if err != nil {
32238			return err
32239		}
32240	}
32241	return nil
32242}
32243
32244// SybaseLinkedService - Linked service for Sybase data source.
32245type SybaseLinkedService struct {
32246	LinkedService
32247	// REQUIRED; Sybase linked service properties.
32248	TypeProperties *SybaseLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
32249}
32250
32251// MarshalJSON implements the json.Marshaller interface for type SybaseLinkedService.
32252func (s SybaseLinkedService) MarshalJSON() ([]byte, error) {
32253	objectMap := s.LinkedService.marshalInternal("Sybase")
32254	populate(objectMap, "typeProperties", s.TypeProperties)
32255	return json.Marshal(objectMap)
32256}
32257
32258// UnmarshalJSON implements the json.Unmarshaller interface for type SybaseLinkedService.
32259func (s *SybaseLinkedService) UnmarshalJSON(data []byte) error {
32260	var rawMsg map[string]json.RawMessage
32261	if err := json.Unmarshal(data, &rawMsg); err != nil {
32262		return err
32263	}
32264	for key, val := range rawMsg {
32265		var err error
32266		switch key {
32267		case "typeProperties":
32268			err = unpopulate(val, &s.TypeProperties)
32269			delete(rawMsg, key)
32270		}
32271		if err != nil {
32272			return err
32273		}
32274	}
32275	return s.LinkedService.unmarshalInternal(rawMsg)
32276}
32277
32278// SybaseLinkedServiceTypeProperties - Sybase linked service properties.
32279type SybaseLinkedServiceTypeProperties struct {
32280	// REQUIRED; Database name for connection. Type: string (or Expression with resultType string).
32281	Database interface{} `json:"database,omitempty"`
32282
32283	// REQUIRED; Server name for connection. Type: string (or Expression with resultType string).
32284	Server interface{} `json:"server,omitempty"`
32285
32286	// AuthenticationType to be used for connection.
32287	AuthenticationType *SybaseAuthenticationType `json:"authenticationType,omitempty"`
32288
32289	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
32290	// with resultType string).
32291	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
32292
32293	// Password for authentication.
32294	Password SecretBaseClassification `json:"password,omitempty"`
32295
32296	// Schema name for connection. Type: string (or Expression with resultType string).
32297	Schema interface{} `json:"schema,omitempty"`
32298
32299	// Username for authentication. Type: string (or Expression with resultType string).
32300	Username interface{} `json:"username,omitempty"`
32301}
32302
32303// MarshalJSON implements the json.Marshaller interface for type SybaseLinkedServiceTypeProperties.
32304func (s SybaseLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
32305	objectMap := make(map[string]interface{})
32306	populate(objectMap, "authenticationType", s.AuthenticationType)
32307	populate(objectMap, "database", s.Database)
32308	populate(objectMap, "encryptedCredential", s.EncryptedCredential)
32309	populate(objectMap, "password", s.Password)
32310	populate(objectMap, "schema", s.Schema)
32311	populate(objectMap, "server", s.Server)
32312	populate(objectMap, "username", s.Username)
32313	return json.Marshal(objectMap)
32314}
32315
32316// UnmarshalJSON implements the json.Unmarshaller interface for type SybaseLinkedServiceTypeProperties.
32317func (s *SybaseLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
32318	var rawMsg map[string]json.RawMessage
32319	if err := json.Unmarshal(data, &rawMsg); err != nil {
32320		return err
32321	}
32322	for key, val := range rawMsg {
32323		var err error
32324		switch key {
32325		case "authenticationType":
32326			err = unpopulate(val, &s.AuthenticationType)
32327			delete(rawMsg, key)
32328		case "database":
32329			err = unpopulate(val, &s.Database)
32330			delete(rawMsg, key)
32331		case "encryptedCredential":
32332			err = unpopulate(val, &s.EncryptedCredential)
32333			delete(rawMsg, key)
32334		case "password":
32335			s.Password, err = unmarshalSecretBaseClassification(val)
32336			delete(rawMsg, key)
32337		case "schema":
32338			err = unpopulate(val, &s.Schema)
32339			delete(rawMsg, key)
32340		case "server":
32341			err = unpopulate(val, &s.Server)
32342			delete(rawMsg, key)
32343		case "username":
32344			err = unpopulate(val, &s.Username)
32345			delete(rawMsg, key)
32346		}
32347		if err != nil {
32348			return err
32349		}
32350	}
32351	return nil
32352}
32353
32354// SybaseSource - A copy activity source for Sybase databases.
32355type SybaseSource struct {
32356	TabularSource
32357	// Database query. Type: string (or Expression with resultType string).
32358	Query interface{} `json:"query,omitempty"`
32359}
32360
32361// MarshalJSON implements the json.Marshaller interface for type SybaseSource.
32362func (s SybaseSource) MarshalJSON() ([]byte, error) {
32363	objectMap := s.TabularSource.marshalInternal("SybaseSource")
32364	populate(objectMap, "query", s.Query)
32365	return json.Marshal(objectMap)
32366}
32367
32368// UnmarshalJSON implements the json.Unmarshaller interface for type SybaseSource.
32369func (s *SybaseSource) UnmarshalJSON(data []byte) error {
32370	var rawMsg map[string]json.RawMessage
32371	if err := json.Unmarshal(data, &rawMsg); err != nil {
32372		return err
32373	}
32374	for key, val := range rawMsg {
32375		var err error
32376		switch key {
32377		case "query":
32378			err = unpopulate(val, &s.Query)
32379			delete(rawMsg, key)
32380		}
32381		if err != nil {
32382			return err
32383		}
32384	}
32385	return s.TabularSource.unmarshalInternal(rawMsg)
32386}
32387
32388// SybaseTableDataset - The Sybase table dataset.
32389type SybaseTableDataset struct {
32390	Dataset
32391	// Sybase table dataset properties.
32392	TypeProperties *SybaseTableDatasetTypeProperties `json:"typeProperties,omitempty"`
32393}
32394
32395// MarshalJSON implements the json.Marshaller interface for type SybaseTableDataset.
32396func (s SybaseTableDataset) MarshalJSON() ([]byte, error) {
32397	objectMap := s.Dataset.marshalInternal("SybaseTable")
32398	populate(objectMap, "typeProperties", s.TypeProperties)
32399	return json.Marshal(objectMap)
32400}
32401
32402// UnmarshalJSON implements the json.Unmarshaller interface for type SybaseTableDataset.
32403func (s *SybaseTableDataset) UnmarshalJSON(data []byte) error {
32404	var rawMsg map[string]json.RawMessage
32405	if err := json.Unmarshal(data, &rawMsg); err != nil {
32406		return err
32407	}
32408	for key, val := range rawMsg {
32409		var err error
32410		switch key {
32411		case "typeProperties":
32412			err = unpopulate(val, &s.TypeProperties)
32413			delete(rawMsg, key)
32414		}
32415		if err != nil {
32416			return err
32417		}
32418	}
32419	return s.Dataset.unmarshalInternal(rawMsg)
32420}
32421
32422// SybaseTableDatasetTypeProperties - Sybase table dataset properties.
32423type SybaseTableDatasetTypeProperties struct {
32424	// The Sybase table name. Type: string (or Expression with resultType string).
32425	TableName interface{} `json:"tableName,omitempty"`
32426}
32427
32428// SynapseNotebookActivity - Execute Synapse notebook activity.
32429type SynapseNotebookActivity struct {
32430	ExecutionActivity
32431	// REQUIRED; Execute Synapse notebook activity properties.
32432	TypeProperties *SynapseNotebookActivityTypeProperties `json:"typeProperties,omitempty"`
32433}
32434
32435// MarshalJSON implements the json.Marshaller interface for type SynapseNotebookActivity.
32436func (s SynapseNotebookActivity) MarshalJSON() ([]byte, error) {
32437	objectMap := s.ExecutionActivity.marshalInternal("SynapseNotebook")
32438	populate(objectMap, "typeProperties", s.TypeProperties)
32439	return json.Marshal(objectMap)
32440}
32441
32442// UnmarshalJSON implements the json.Unmarshaller interface for type SynapseNotebookActivity.
32443func (s *SynapseNotebookActivity) UnmarshalJSON(data []byte) error {
32444	var rawMsg map[string]json.RawMessage
32445	if err := json.Unmarshal(data, &rawMsg); err != nil {
32446		return err
32447	}
32448	for key, val := range rawMsg {
32449		var err error
32450		switch key {
32451		case "typeProperties":
32452			err = unpopulate(val, &s.TypeProperties)
32453			delete(rawMsg, key)
32454		}
32455		if err != nil {
32456			return err
32457		}
32458	}
32459	return s.ExecutionActivity.unmarshalInternal(rawMsg)
32460}
32461
32462// SynapseNotebookActivityTypeProperties - Execute Synapse notebook activity properties.
32463type SynapseNotebookActivityTypeProperties struct {
32464	// REQUIRED; Synapse notebook reference.
32465	Notebook *SynapseNotebookReference `json:"notebook,omitempty"`
32466
32467	// Notebook parameters.
32468	Parameters map[string]interface{} `json:"parameters,omitempty"`
32469}
32470
32471// MarshalJSON implements the json.Marshaller interface for type SynapseNotebookActivityTypeProperties.
32472func (s SynapseNotebookActivityTypeProperties) MarshalJSON() ([]byte, error) {
32473	objectMap := make(map[string]interface{})
32474	populate(objectMap, "notebook", s.Notebook)
32475	populate(objectMap, "parameters", s.Parameters)
32476	return json.Marshal(objectMap)
32477}
32478
32479// SynapseNotebookReference - Synapse notebook reference type.
32480type SynapseNotebookReference struct {
32481	// REQUIRED; Reference notebook name.
32482	ReferenceName *string `json:"referenceName,omitempty"`
32483
32484	// REQUIRED; Synapse notebook reference type.
32485	Type *NotebookReferenceType `json:"type,omitempty"`
32486}
32487
32488// SynapseSparkJobActivityTypeProperties - Execute spark job activity properties.
32489type SynapseSparkJobActivityTypeProperties struct {
32490	// REQUIRED; Synapse spark job reference.
32491	SparkJob *SynapseSparkJobReference `json:"sparkJob,omitempty"`
32492}
32493
32494// SynapseSparkJobDefinitionActivity - Execute spark job activity.
32495type SynapseSparkJobDefinitionActivity struct {
32496	ExecutionActivity
32497	// REQUIRED; Execute spark job activity properties.
32498	TypeProperties *SynapseSparkJobActivityTypeProperties `json:"typeProperties,omitempty"`
32499}
32500
32501// MarshalJSON implements the json.Marshaller interface for type SynapseSparkJobDefinitionActivity.
32502func (s SynapseSparkJobDefinitionActivity) MarshalJSON() ([]byte, error) {
32503	objectMap := s.ExecutionActivity.marshalInternal("SparkJob")
32504	populate(objectMap, "typeProperties", s.TypeProperties)
32505	return json.Marshal(objectMap)
32506}
32507
32508// UnmarshalJSON implements the json.Unmarshaller interface for type SynapseSparkJobDefinitionActivity.
32509func (s *SynapseSparkJobDefinitionActivity) UnmarshalJSON(data []byte) error {
32510	var rawMsg map[string]json.RawMessage
32511	if err := json.Unmarshal(data, &rawMsg); err != nil {
32512		return err
32513	}
32514	for key, val := range rawMsg {
32515		var err error
32516		switch key {
32517		case "typeProperties":
32518			err = unpopulate(val, &s.TypeProperties)
32519			delete(rawMsg, key)
32520		}
32521		if err != nil {
32522			return err
32523		}
32524	}
32525	return s.ExecutionActivity.unmarshalInternal(rawMsg)
32526}
32527
32528// SynapseSparkJobReference - Synapse spark job reference type.
32529type SynapseSparkJobReference struct {
32530	// REQUIRED; Reference spark job name.
32531	ReferenceName *string `json:"referenceName,omitempty"`
32532
32533	// REQUIRED; Synapse spark job reference type.
32534	Type *SparkJobReferenceType `json:"type,omitempty"`
32535}
32536
32537// TabularSourceClassification provides polymorphic access to related types.
32538// Call the interface's GetTabularSource() method to access the common type.
32539// Use a type switch to determine the concrete type.  The possible types are:
32540// - *AmazonMWSSource, *AmazonRedshiftSource, *AzureMariaDBSource, *AzureMySqlSource, *AzurePostgreSqlSource, *AzureSqlSource,
32541// - *AzureTableSource, *CassandraSource, *ConcurSource, *CouchbaseSource, *Db2Source, *DrillSource, *DynamicsAXSource, *EloquaSource,
32542// - *GoogleAdWordsSource, *GoogleBigQuerySource, *GreenplumSource, *HBaseSource, *HiveSource, *HubspotSource, *ImpalaSource,
32543// - *InformixSource, *JiraSource, *MagentoSource, *MariaDBSource, *MarketoSource, *MySqlSource, *NetezzaSource, *OdbcSource,
32544// - *OracleServiceCloudSource, *PaypalSource, *PhoenixSource, *PostgreSqlSource, *PrestoSource, *QuickBooksSource, *ResponsysSource,
32545// - *SalesforceMarketingCloudSource, *SalesforceSource, *SapBwSource, *SapCloudForCustomerSource, *SapEccSource, *SapHanaSource,
32546// - *SapOpenHubSource, *SapTableSource, *ServiceNowSource, *ShopifySource, *SparkSource, *SqlDWSource, *SqlMISource, *SqlServerSource,
32547// - *SqlSource, *SquareSource, *SybaseSource, *TabularSource, *TeradataSource, *VerticaSource, *XeroSource, *ZohoSource
32548type TabularSourceClassification interface {
32549	CopySourceClassification
32550	// GetTabularSource returns the TabularSource content of the underlying type.
32551	GetTabularSource() *TabularSource
32552}
32553
32554// TabularSource - Copy activity sources of tabular type.
32555type TabularSource struct {
32556	CopySource
32557	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
32558	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
32559
32560	// Query timeout. Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
32561	QueryTimeout interface{} `json:"queryTimeout,omitempty"`
32562}
32563
32564// GetTabularSource implements the TabularSourceClassification interface for type TabularSource.
32565func (t *TabularSource) GetTabularSource() *TabularSource { return t }
32566
32567// MarshalJSON implements the json.Marshaller interface for type TabularSource.
32568func (t TabularSource) MarshalJSON() ([]byte, error) {
32569	objectMap := t.marshalInternal("TabularSource")
32570	return json.Marshal(objectMap)
32571}
32572
32573// UnmarshalJSON implements the json.Unmarshaller interface for type TabularSource.
32574func (t *TabularSource) UnmarshalJSON(data []byte) error {
32575	var rawMsg map[string]json.RawMessage
32576	if err := json.Unmarshal(data, &rawMsg); err != nil {
32577		return err
32578	}
32579	return t.unmarshalInternal(rawMsg)
32580}
32581
32582func (t TabularSource) marshalInternal(discValue string) map[string]interface{} {
32583	objectMap := t.CopySource.marshalInternal(discValue)
32584	populate(objectMap, "additionalColumns", t.AdditionalColumns)
32585	populate(objectMap, "queryTimeout", t.QueryTimeout)
32586	return objectMap
32587}
32588
32589func (t *TabularSource) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
32590	for key, val := range rawMsg {
32591		var err error
32592		switch key {
32593		case "additionalColumns":
32594			err = unpopulate(val, &t.AdditionalColumns)
32595			delete(rawMsg, key)
32596		case "queryTimeout":
32597			err = unpopulate(val, &t.QueryTimeout)
32598			delete(rawMsg, key)
32599		}
32600		if err != nil {
32601			return err
32602		}
32603	}
32604	return t.CopySource.unmarshalInternal(rawMsg)
32605}
32606
32607// TabularTranslator - A copy activity tabular translator.
32608type TabularTranslator struct {
32609	CopyTranslator
32610	// The JSON Path of the Nested Array that is going to do cross-apply. Type: object (or Expression with resultType object).
32611	CollectionReference interface{} `json:"collectionReference,omitempty"`
32612
32613	// Column mappings. Example: "UserId: MyUserId, Group: MyGroup, Name: MyName" Type: string (or Expression with resultType string). This property will be
32614	// retired. Please use mappings property.
32615	ColumnMappings interface{} `json:"columnMappings,omitempty"`
32616
32617	// Whether to map complex (array and object) values to simple strings in json format. Type: boolean (or Expression with resultType boolean).
32618	MapComplexValuesToString interface{} `json:"mapComplexValuesToString,omitempty"`
32619
32620	// Column mappings with logical types. Tabular->tabular example:
32621	// [{"source":{"name":"CustomerName","type":"String"},"sink":{"name":"ClientName","type":"String"}},{"source":{"name":"CustomerAddress","type":"String"},"sink":{"name":"ClientAddress","type":"String"}}].
32622	// Hierarchical->tabular example:
32623	// [{"source":{"path":"$.CustomerName","type":"String"},"sink":{"name":"ClientName","type":"String"}},{"source":{"path":"$.CustomerAddress","type":"String"},"sink":{"name":"ClientAddress","type":"String"}}].
32624	// Type: object (or Expression with resultType object).
32625	Mappings interface{} `json:"mappings,omitempty"`
32626
32627	// The schema mapping to map between tabular data and hierarchical data. Example: {"Column1": "$.Column1", "Column2": "$.Column2.Property1", "Column3":
32628	// "$.Column2.Property2"}. Type: object (or Expression
32629	// with resultType object). This property will be retired. Please use mappings property.
32630	SchemaMapping interface{} `json:"schemaMapping,omitempty"`
32631
32632	// Whether to enable the advanced type conversion feature in the Copy activity. Type: boolean (or Expression with resultType boolean).
32633	TypeConversion interface{} `json:"typeConversion,omitempty"`
32634
32635	// Type conversion settings
32636	TypeConversionSettings *TypeConversionSettings `json:"typeConversionSettings,omitempty"`
32637}
32638
32639// MarshalJSON implements the json.Marshaller interface for type TabularTranslator.
32640func (t TabularTranslator) MarshalJSON() ([]byte, error) {
32641	objectMap := t.CopyTranslator.marshalInternal("TabularTranslator")
32642	populate(objectMap, "collectionReference", t.CollectionReference)
32643	populate(objectMap, "columnMappings", t.ColumnMappings)
32644	populate(objectMap, "mapComplexValuesToString", t.MapComplexValuesToString)
32645	populate(objectMap, "mappings", t.Mappings)
32646	populate(objectMap, "schemaMapping", t.SchemaMapping)
32647	populate(objectMap, "typeConversion", t.TypeConversion)
32648	populate(objectMap, "typeConversionSettings", t.TypeConversionSettings)
32649	return json.Marshal(objectMap)
32650}
32651
32652// UnmarshalJSON implements the json.Unmarshaller interface for type TabularTranslator.
32653func (t *TabularTranslator) UnmarshalJSON(data []byte) error {
32654	var rawMsg map[string]json.RawMessage
32655	if err := json.Unmarshal(data, &rawMsg); err != nil {
32656		return err
32657	}
32658	for key, val := range rawMsg {
32659		var err error
32660		switch key {
32661		case "collectionReference":
32662			err = unpopulate(val, &t.CollectionReference)
32663			delete(rawMsg, key)
32664		case "columnMappings":
32665			err = unpopulate(val, &t.ColumnMappings)
32666			delete(rawMsg, key)
32667		case "mapComplexValuesToString":
32668			err = unpopulate(val, &t.MapComplexValuesToString)
32669			delete(rawMsg, key)
32670		case "mappings":
32671			err = unpopulate(val, &t.Mappings)
32672			delete(rawMsg, key)
32673		case "schemaMapping":
32674			err = unpopulate(val, &t.SchemaMapping)
32675			delete(rawMsg, key)
32676		case "typeConversion":
32677			err = unpopulate(val, &t.TypeConversion)
32678			delete(rawMsg, key)
32679		case "typeConversionSettings":
32680			err = unpopulate(val, &t.TypeConversionSettings)
32681			delete(rawMsg, key)
32682		}
32683		if err != nil {
32684			return err
32685		}
32686	}
32687	return t.CopyTranslator.unmarshalInternal(rawMsg)
32688}
32689
32690// TarGZipReadSettings - The TarGZip compression read settings.
32691type TarGZipReadSettings struct {
32692	CompressionReadSettings
32693	// Preserve the compression file name as folder path. Type: boolean (or Expression with resultType boolean).
32694	PreserveCompressionFileNameAsFolder interface{} `json:"preserveCompressionFileNameAsFolder,omitempty"`
32695}
32696
32697// MarshalJSON implements the json.Marshaller interface for type TarGZipReadSettings.
32698func (t TarGZipReadSettings) MarshalJSON() ([]byte, error) {
32699	objectMap := t.CompressionReadSettings.marshalInternal("TarGZipReadSettings")
32700	populate(objectMap, "preserveCompressionFileNameAsFolder", t.PreserveCompressionFileNameAsFolder)
32701	return json.Marshal(objectMap)
32702}
32703
32704// UnmarshalJSON implements the json.Unmarshaller interface for type TarGZipReadSettings.
32705func (t *TarGZipReadSettings) UnmarshalJSON(data []byte) error {
32706	var rawMsg map[string]json.RawMessage
32707	if err := json.Unmarshal(data, &rawMsg); err != nil {
32708		return err
32709	}
32710	for key, val := range rawMsg {
32711		var err error
32712		switch key {
32713		case "preserveCompressionFileNameAsFolder":
32714			err = unpopulate(val, &t.PreserveCompressionFileNameAsFolder)
32715			delete(rawMsg, key)
32716		}
32717		if err != nil {
32718			return err
32719		}
32720	}
32721	return t.CompressionReadSettings.unmarshalInternal(rawMsg)
32722}
32723
32724// TarReadSettings - The Tar compression read settings.
32725type TarReadSettings struct {
32726	CompressionReadSettings
32727	// Preserve the compression file name as folder path. Type: boolean (or Expression with resultType boolean).
32728	PreserveCompressionFileNameAsFolder interface{} `json:"preserveCompressionFileNameAsFolder,omitempty"`
32729}
32730
32731// MarshalJSON implements the json.Marshaller interface for type TarReadSettings.
32732func (t TarReadSettings) MarshalJSON() ([]byte, error) {
32733	objectMap := t.CompressionReadSettings.marshalInternal("TarReadSettings")
32734	populate(objectMap, "preserveCompressionFileNameAsFolder", t.PreserveCompressionFileNameAsFolder)
32735	return json.Marshal(objectMap)
32736}
32737
32738// UnmarshalJSON implements the json.Unmarshaller interface for type TarReadSettings.
32739func (t *TarReadSettings) UnmarshalJSON(data []byte) error {
32740	var rawMsg map[string]json.RawMessage
32741	if err := json.Unmarshal(data, &rawMsg); err != nil {
32742		return err
32743	}
32744	for key, val := range rawMsg {
32745		var err error
32746		switch key {
32747		case "preserveCompressionFileNameAsFolder":
32748			err = unpopulate(val, &t.PreserveCompressionFileNameAsFolder)
32749			delete(rawMsg, key)
32750		}
32751		if err != nil {
32752			return err
32753		}
32754	}
32755	return t.CompressionReadSettings.unmarshalInternal(rawMsg)
32756}
32757
32758// TeradataLinkedService - Linked service for Teradata data source.
32759type TeradataLinkedService struct {
32760	LinkedService
32761	// REQUIRED; Teradata linked service properties.
32762	TypeProperties *TeradataLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
32763}
32764
32765// MarshalJSON implements the json.Marshaller interface for type TeradataLinkedService.
32766func (t TeradataLinkedService) MarshalJSON() ([]byte, error) {
32767	objectMap := t.LinkedService.marshalInternal("Teradata")
32768	populate(objectMap, "typeProperties", t.TypeProperties)
32769	return json.Marshal(objectMap)
32770}
32771
32772// UnmarshalJSON implements the json.Unmarshaller interface for type TeradataLinkedService.
32773func (t *TeradataLinkedService) UnmarshalJSON(data []byte) error {
32774	var rawMsg map[string]json.RawMessage
32775	if err := json.Unmarshal(data, &rawMsg); err != nil {
32776		return err
32777	}
32778	for key, val := range rawMsg {
32779		var err error
32780		switch key {
32781		case "typeProperties":
32782			err = unpopulate(val, &t.TypeProperties)
32783			delete(rawMsg, key)
32784		}
32785		if err != nil {
32786			return err
32787		}
32788	}
32789	return t.LinkedService.unmarshalInternal(rawMsg)
32790}
32791
32792// TeradataLinkedServiceTypeProperties - Teradata linked service properties.
32793type TeradataLinkedServiceTypeProperties struct {
32794	// AuthenticationType to be used for connection.
32795	AuthenticationType *TeradataAuthenticationType `json:"authenticationType,omitempty"`
32796
32797	// Teradata ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
32798	ConnectionString interface{} `json:"connectionString,omitempty"`
32799
32800	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
32801	// with resultType string).
32802	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
32803
32804	// Password for authentication.
32805	Password SecretBaseClassification `json:"password,omitempty"`
32806
32807	// Server name for connection. Type: string (or Expression with resultType string).
32808	Server interface{} `json:"server,omitempty"`
32809
32810	// Username for authentication. Type: string (or Expression with resultType string).
32811	Username interface{} `json:"username,omitempty"`
32812}
32813
32814// MarshalJSON implements the json.Marshaller interface for type TeradataLinkedServiceTypeProperties.
32815func (t TeradataLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
32816	objectMap := make(map[string]interface{})
32817	populate(objectMap, "authenticationType", t.AuthenticationType)
32818	populate(objectMap, "connectionString", t.ConnectionString)
32819	populate(objectMap, "encryptedCredential", t.EncryptedCredential)
32820	populate(objectMap, "password", t.Password)
32821	populate(objectMap, "server", t.Server)
32822	populate(objectMap, "username", t.Username)
32823	return json.Marshal(objectMap)
32824}
32825
32826// UnmarshalJSON implements the json.Unmarshaller interface for type TeradataLinkedServiceTypeProperties.
32827func (t *TeradataLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
32828	var rawMsg map[string]json.RawMessage
32829	if err := json.Unmarshal(data, &rawMsg); err != nil {
32830		return err
32831	}
32832	for key, val := range rawMsg {
32833		var err error
32834		switch key {
32835		case "authenticationType":
32836			err = unpopulate(val, &t.AuthenticationType)
32837			delete(rawMsg, key)
32838		case "connectionString":
32839			err = unpopulate(val, &t.ConnectionString)
32840			delete(rawMsg, key)
32841		case "encryptedCredential":
32842			err = unpopulate(val, &t.EncryptedCredential)
32843			delete(rawMsg, key)
32844		case "password":
32845			t.Password, err = unmarshalSecretBaseClassification(val)
32846			delete(rawMsg, key)
32847		case "server":
32848			err = unpopulate(val, &t.Server)
32849			delete(rawMsg, key)
32850		case "username":
32851			err = unpopulate(val, &t.Username)
32852			delete(rawMsg, key)
32853		}
32854		if err != nil {
32855			return err
32856		}
32857	}
32858	return nil
32859}
32860
32861// TeradataPartitionSettings - The settings that will be leveraged for teradata source partitioning.
32862type TeradataPartitionSettings struct {
32863	// The name of the column that will be used for proceeding range or hash partitioning. Type: string (or Expression with resultType string).
32864	PartitionColumnName interface{} `json:"partitionColumnName,omitempty"`
32865
32866	// The minimum value of column specified in partitionColumnName that will be used for proceeding range partitioning. Type: string (or Expression with resultType
32867	// string).
32868	PartitionLowerBound interface{} `json:"partitionLowerBound,omitempty"`
32869
32870	// The maximum value of column specified in partitionColumnName that will be used for proceeding range partitioning. Type: string (or Expression with resultType
32871	// string).
32872	PartitionUpperBound interface{} `json:"partitionUpperBound,omitempty"`
32873}
32874
32875// TeradataSource - A copy activity Teradata source.
32876type TeradataSource struct {
32877	TabularSource
32878	// The partition mechanism that will be used for teradata read in parallel.
32879	PartitionOption *TeradataPartitionOption `json:"partitionOption,omitempty"`
32880
32881	// The settings that will be leveraged for teradata source partitioning.
32882	PartitionSettings *TeradataPartitionSettings `json:"partitionSettings,omitempty"`
32883
32884	// Teradata query. Type: string (or Expression with resultType string).
32885	Query interface{} `json:"query,omitempty"`
32886}
32887
32888// MarshalJSON implements the json.Marshaller interface for type TeradataSource.
32889func (t TeradataSource) MarshalJSON() ([]byte, error) {
32890	objectMap := t.TabularSource.marshalInternal("TeradataSource")
32891	populate(objectMap, "partitionOption", t.PartitionOption)
32892	populate(objectMap, "partitionSettings", t.PartitionSettings)
32893	populate(objectMap, "query", t.Query)
32894	return json.Marshal(objectMap)
32895}
32896
32897// UnmarshalJSON implements the json.Unmarshaller interface for type TeradataSource.
32898func (t *TeradataSource) UnmarshalJSON(data []byte) error {
32899	var rawMsg map[string]json.RawMessage
32900	if err := json.Unmarshal(data, &rawMsg); err != nil {
32901		return err
32902	}
32903	for key, val := range rawMsg {
32904		var err error
32905		switch key {
32906		case "partitionOption":
32907			err = unpopulate(val, &t.PartitionOption)
32908			delete(rawMsg, key)
32909		case "partitionSettings":
32910			err = unpopulate(val, &t.PartitionSettings)
32911			delete(rawMsg, key)
32912		case "query":
32913			err = unpopulate(val, &t.Query)
32914			delete(rawMsg, key)
32915		}
32916		if err != nil {
32917			return err
32918		}
32919	}
32920	return t.TabularSource.unmarshalInternal(rawMsg)
32921}
32922
32923// TeradataTableDataset - The Teradata database dataset.
32924type TeradataTableDataset struct {
32925	Dataset
32926	// Teradata dataset properties.
32927	TypeProperties *TeradataTableDatasetTypeProperties `json:"typeProperties,omitempty"`
32928}
32929
32930// MarshalJSON implements the json.Marshaller interface for type TeradataTableDataset.
32931func (t TeradataTableDataset) MarshalJSON() ([]byte, error) {
32932	objectMap := t.Dataset.marshalInternal("TeradataTable")
32933	populate(objectMap, "typeProperties", t.TypeProperties)
32934	return json.Marshal(objectMap)
32935}
32936
32937// UnmarshalJSON implements the json.Unmarshaller interface for type TeradataTableDataset.
32938func (t *TeradataTableDataset) UnmarshalJSON(data []byte) error {
32939	var rawMsg map[string]json.RawMessage
32940	if err := json.Unmarshal(data, &rawMsg); err != nil {
32941		return err
32942	}
32943	for key, val := range rawMsg {
32944		var err error
32945		switch key {
32946		case "typeProperties":
32947			err = unpopulate(val, &t.TypeProperties)
32948			delete(rawMsg, key)
32949		}
32950		if err != nil {
32951			return err
32952		}
32953	}
32954	return t.Dataset.unmarshalInternal(rawMsg)
32955}
32956
32957// TeradataTableDatasetTypeProperties - Teradata dataset properties.
32958type TeradataTableDatasetTypeProperties struct {
32959	// The database name of Teradata. Type: string (or Expression with resultType string).
32960	Database interface{} `json:"database,omitempty"`
32961
32962	// The table name of Teradata. Type: string (or Expression with resultType string).
32963	Table interface{} `json:"table,omitempty"`
32964}
32965
32966// TextFormat - The data stored in text format.
32967type TextFormat struct {
32968	DatasetStorageFormat
32969	// The column delimiter. Type: string (or Expression with resultType string).
32970	ColumnDelimiter interface{} `json:"columnDelimiter,omitempty"`
32971
32972	// The code page name of the preferred encoding. If miss, the default value is ΓÇ£utf-8ΓÇ¥, unless BOM denotes another Unicode encoding. Refer to the ΓÇ£NameΓÇ¥
32973	// column of the table in the following link
32974	// to set supported values: https://msdn.microsoft.com/library/system.text.encoding.aspx. Type: string (or Expression with resultType string).
32975	EncodingName interface{} `json:"encodingName,omitempty"`
32976
32977	// The escape character. Type: string (or Expression with resultType string).
32978	EscapeChar interface{} `json:"escapeChar,omitempty"`
32979
32980	// When used as input, treat the first row of data as headers. When used as output,write the headers into the output as the first row of data. The default
32981	// value is false. Type: boolean (or Expression
32982	// with resultType boolean).
32983	FirstRowAsHeader interface{} `json:"firstRowAsHeader,omitempty"`
32984
32985	// The null value string. Type: string (or Expression with resultType string).
32986	NullValue interface{} `json:"nullValue,omitempty"`
32987
32988	// The quote character. Type: string (or Expression with resultType string).
32989	QuoteChar interface{} `json:"quoteChar,omitempty"`
32990
32991	// The row delimiter. Type: string (or Expression with resultType string).
32992	RowDelimiter interface{} `json:"rowDelimiter,omitempty"`
32993
32994	// The number of lines/rows to be skipped when parsing text files. The default value is 0. Type: integer (or Expression with resultType integer).
32995	SkipLineCount interface{} `json:"skipLineCount,omitempty"`
32996
32997	// Treat empty column values in the text file as null. The default value is true. Type: boolean (or Expression with resultType boolean).
32998	TreatEmptyAsNull interface{} `json:"treatEmptyAsNull,omitempty"`
32999}
33000
33001// MarshalJSON implements the json.Marshaller interface for type TextFormat.
33002func (t TextFormat) MarshalJSON() ([]byte, error) {
33003	objectMap := t.DatasetStorageFormat.marshalInternal("TextFormat")
33004	populate(objectMap, "columnDelimiter", t.ColumnDelimiter)
33005	populate(objectMap, "encodingName", t.EncodingName)
33006	populate(objectMap, "escapeChar", t.EscapeChar)
33007	populate(objectMap, "firstRowAsHeader", t.FirstRowAsHeader)
33008	populate(objectMap, "nullValue", t.NullValue)
33009	populate(objectMap, "quoteChar", t.QuoteChar)
33010	populate(objectMap, "rowDelimiter", t.RowDelimiter)
33011	populate(objectMap, "skipLineCount", t.SkipLineCount)
33012	populate(objectMap, "treatEmptyAsNull", t.TreatEmptyAsNull)
33013	return json.Marshal(objectMap)
33014}
33015
33016// UnmarshalJSON implements the json.Unmarshaller interface for type TextFormat.
33017func (t *TextFormat) UnmarshalJSON(data []byte) error {
33018	var rawMsg map[string]json.RawMessage
33019	if err := json.Unmarshal(data, &rawMsg); err != nil {
33020		return err
33021	}
33022	for key, val := range rawMsg {
33023		var err error
33024		switch key {
33025		case "columnDelimiter":
33026			err = unpopulate(val, &t.ColumnDelimiter)
33027			delete(rawMsg, key)
33028		case "encodingName":
33029			err = unpopulate(val, &t.EncodingName)
33030			delete(rawMsg, key)
33031		case "escapeChar":
33032			err = unpopulate(val, &t.EscapeChar)
33033			delete(rawMsg, key)
33034		case "firstRowAsHeader":
33035			err = unpopulate(val, &t.FirstRowAsHeader)
33036			delete(rawMsg, key)
33037		case "nullValue":
33038			err = unpopulate(val, &t.NullValue)
33039			delete(rawMsg, key)
33040		case "quoteChar":
33041			err = unpopulate(val, &t.QuoteChar)
33042			delete(rawMsg, key)
33043		case "rowDelimiter":
33044			err = unpopulate(val, &t.RowDelimiter)
33045			delete(rawMsg, key)
33046		case "skipLineCount":
33047			err = unpopulate(val, &t.SkipLineCount)
33048			delete(rawMsg, key)
33049		case "treatEmptyAsNull":
33050			err = unpopulate(val, &t.TreatEmptyAsNull)
33051			delete(rawMsg, key)
33052		}
33053		if err != nil {
33054			return err
33055		}
33056	}
33057	return t.DatasetStorageFormat.unmarshalInternal(rawMsg)
33058}
33059
33060// TrackedResource - The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'
33061type TrackedResource struct {
33062	Resource
33063	// REQUIRED; The geo-location where the resource lives
33064	Location *string `json:"location,omitempty"`
33065
33066	// Resource tags.
33067	Tags map[string]*string `json:"tags,omitempty"`
33068}
33069
33070// MarshalJSON implements the json.Marshaller interface for type TrackedResource.
33071func (t TrackedResource) MarshalJSON() ([]byte, error) {
33072	objectMap := t.marshalInternal()
33073	return json.Marshal(objectMap)
33074}
33075
33076func (t TrackedResource) marshalInternal() map[string]interface{} {
33077	objectMap := t.Resource.marshalInternal()
33078	populate(objectMap, "location", t.Location)
33079	populate(objectMap, "tags", t.Tags)
33080	return objectMap
33081}
33082
33083// Transformation - A data flow transformation.
33084type Transformation struct {
33085	// REQUIRED; Transformation name.
33086	Name *string `json:"name,omitempty"`
33087
33088	// Transformation description.
33089	Description *string `json:"description,omitempty"`
33090}
33091
33092// TriggerClassification provides polymorphic access to related types.
33093// Call the interface's GetTrigger() method to access the common type.
33094// Use a type switch to determine the concrete type.  The possible types are:
33095// - *BlobEventsTrigger, *BlobTrigger, *ChainingTrigger, *CustomEventsTrigger, *MultiplePipelineTrigger, *RerunTumblingWindowTrigger,
33096// - *ScheduleTrigger, *Trigger, *TumblingWindowTrigger
33097type TriggerClassification interface {
33098	// GetTrigger returns the Trigger content of the underlying type.
33099	GetTrigger() *Trigger
33100}
33101
33102// Trigger - Azure Synapse nested object which contains information about creating pipeline run
33103type Trigger struct {
33104	// REQUIRED; Trigger type.
33105	Type *string `json:"type,omitempty"`
33106
33107	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
33108	AdditionalProperties map[string]interface{}
33109
33110	// List of tags that can be used for describing the trigger.
33111	Annotations []interface{} `json:"annotations,omitempty"`
33112
33113	// Trigger description.
33114	Description *string `json:"description,omitempty"`
33115
33116	// READ-ONLY; Indicates if trigger is running or not. Updated when Start/Stop APIs are called on the Trigger.
33117	RuntimeState *TriggerRuntimeState `json:"runtimeState,omitempty" azure:"ro"`
33118}
33119
33120// GetTrigger implements the TriggerClassification interface for type Trigger.
33121func (t *Trigger) GetTrigger() *Trigger { return t }
33122
33123// UnmarshalJSON implements the json.Unmarshaller interface for type Trigger.
33124func (t *Trigger) UnmarshalJSON(data []byte) error {
33125	var rawMsg map[string]json.RawMessage
33126	if err := json.Unmarshal(data, &rawMsg); err != nil {
33127		return err
33128	}
33129	return t.unmarshalInternal(rawMsg)
33130}
33131
33132func (t Trigger) marshalInternal(discValue string) map[string]interface{} {
33133	objectMap := make(map[string]interface{})
33134	populate(objectMap, "annotations", t.Annotations)
33135	populate(objectMap, "description", t.Description)
33136	populate(objectMap, "runtimeState", t.RuntimeState)
33137	t.Type = &discValue
33138	objectMap["type"] = t.Type
33139	if t.AdditionalProperties != nil {
33140		for key, val := range t.AdditionalProperties {
33141			objectMap[key] = val
33142		}
33143	}
33144	return objectMap
33145}
33146
33147func (t *Trigger) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
33148	for key, val := range rawMsg {
33149		var err error
33150		switch key {
33151		case "annotations":
33152			err = unpopulate(val, &t.Annotations)
33153			delete(rawMsg, key)
33154		case "description":
33155			err = unpopulate(val, &t.Description)
33156			delete(rawMsg, key)
33157		case "runtimeState":
33158			err = unpopulate(val, &t.RuntimeState)
33159			delete(rawMsg, key)
33160		case "type":
33161			err = unpopulate(val, &t.Type)
33162			delete(rawMsg, key)
33163		default:
33164			if t.AdditionalProperties == nil {
33165				t.AdditionalProperties = map[string]interface{}{}
33166			}
33167			if val != nil {
33168				var aux interface{}
33169				err = json.Unmarshal(val, &aux)
33170				t.AdditionalProperties[key] = aux
33171			}
33172			delete(rawMsg, key)
33173		}
33174		if err != nil {
33175			return err
33176		}
33177	}
33178	return nil
33179}
33180
33181// TriggerBeginCreateOrUpdateTriggerOptions contains the optional parameters for the Trigger.BeginCreateOrUpdateTrigger method.
33182type TriggerBeginCreateOrUpdateTriggerOptions struct {
33183	// ETag of the trigger entity. Should only be specified for update, for which it should match existing entity or can be * for unconditional update.
33184	IfMatch *string
33185}
33186
33187// TriggerBeginDeleteTriggerOptions contains the optional parameters for the Trigger.BeginDeleteTrigger method.
33188type TriggerBeginDeleteTriggerOptions struct {
33189	// placeholder for future optional parameters
33190}
33191
33192// TriggerBeginStartTriggerOptions contains the optional parameters for the Trigger.BeginStartTrigger method.
33193type TriggerBeginStartTriggerOptions struct {
33194	// placeholder for future optional parameters
33195}
33196
33197// TriggerBeginStopTriggerOptions contains the optional parameters for the Trigger.BeginStopTrigger method.
33198type TriggerBeginStopTriggerOptions struct {
33199	// placeholder for future optional parameters
33200}
33201
33202// TriggerBeginSubscribeTriggerToEventsOptions contains the optional parameters for the Trigger.BeginSubscribeTriggerToEvents method.
33203type TriggerBeginSubscribeTriggerToEventsOptions struct {
33204	// placeholder for future optional parameters
33205}
33206
33207// TriggerBeginUnsubscribeTriggerFromEventsOptions contains the optional parameters for the Trigger.BeginUnsubscribeTriggerFromEvents method.
33208type TriggerBeginUnsubscribeTriggerFromEventsOptions struct {
33209	// placeholder for future optional parameters
33210}
33211
33212// TriggerDependencyProvisioningStatus - Defines the response of a provision trigger dependency operation.
33213type TriggerDependencyProvisioningStatus struct {
33214	// REQUIRED; Provisioning status.
33215	ProvisioningStatus *string `json:"provisioningStatus,omitempty"`
33216
33217	// REQUIRED; Trigger name.
33218	TriggerName *string `json:"triggerName,omitempty"`
33219}
33220
33221// TriggerDependencyReferenceClassification provides polymorphic access to related types.
33222// Call the interface's GetTriggerDependencyReference() method to access the common type.
33223// Use a type switch to determine the concrete type.  The possible types are:
33224// - *TriggerDependencyReference, *TumblingWindowTriggerDependencyReference
33225type TriggerDependencyReferenceClassification interface {
33226	DependencyReferenceClassification
33227	// GetTriggerDependencyReference returns the TriggerDependencyReference content of the underlying type.
33228	GetTriggerDependencyReference() *TriggerDependencyReference
33229}
33230
33231// TriggerDependencyReference - Trigger referenced dependency.
33232type TriggerDependencyReference struct {
33233	DependencyReference
33234	// REQUIRED; Referenced trigger.
33235	ReferenceTrigger *TriggerReference `json:"referenceTrigger,omitempty"`
33236}
33237
33238// GetTriggerDependencyReference implements the TriggerDependencyReferenceClassification interface for type TriggerDependencyReference.
33239func (t *TriggerDependencyReference) GetTriggerDependencyReference() *TriggerDependencyReference {
33240	return t
33241}
33242
33243// MarshalJSON implements the json.Marshaller interface for type TriggerDependencyReference.
33244func (t TriggerDependencyReference) MarshalJSON() ([]byte, error) {
33245	objectMap := t.marshalInternal("TriggerDependencyReference")
33246	return json.Marshal(objectMap)
33247}
33248
33249// UnmarshalJSON implements the json.Unmarshaller interface for type TriggerDependencyReference.
33250func (t *TriggerDependencyReference) UnmarshalJSON(data []byte) error {
33251	var rawMsg map[string]json.RawMessage
33252	if err := json.Unmarshal(data, &rawMsg); err != nil {
33253		return err
33254	}
33255	return t.unmarshalInternal(rawMsg)
33256}
33257
33258func (t TriggerDependencyReference) marshalInternal(discValue string) map[string]interface{} {
33259	objectMap := t.DependencyReference.marshalInternal(discValue)
33260	populate(objectMap, "referenceTrigger", t.ReferenceTrigger)
33261	return objectMap
33262}
33263
33264func (t *TriggerDependencyReference) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
33265	for key, val := range rawMsg {
33266		var err error
33267		switch key {
33268		case "referenceTrigger":
33269			err = unpopulate(val, &t.ReferenceTrigger)
33270			delete(rawMsg, key)
33271		}
33272		if err != nil {
33273			return err
33274		}
33275	}
33276	return t.DependencyReference.unmarshalInternal(rawMsg)
33277}
33278
33279// TriggerGetEventSubscriptionStatusOptions contains the optional parameters for the Trigger.GetEventSubscriptionStatus method.
33280type TriggerGetEventSubscriptionStatusOptions struct {
33281	// placeholder for future optional parameters
33282}
33283
33284// TriggerGetTriggerOptions contains the optional parameters for the Trigger.GetTrigger method.
33285type TriggerGetTriggerOptions struct {
33286	// ETag of the trigger entity. Should only be specified for get. If the ETag matches the existing entity tag, or if * was provided, then no content will
33287	// be returned.
33288	IfNoneMatch *string
33289}
33290
33291// TriggerGetTriggersByWorkspaceOptions contains the optional parameters for the Trigger.GetTriggersByWorkspace method.
33292type TriggerGetTriggersByWorkspaceOptions struct {
33293	// placeholder for future optional parameters
33294}
33295
33296// TriggerListResponse - A list of trigger resources.
33297type TriggerListResponse struct {
33298	// REQUIRED; List of triggers.
33299	Value []*TriggerResource `json:"value,omitempty"`
33300
33301	// The link to the next page of results, if any remaining results exist.
33302	NextLink *string `json:"nextLink,omitempty"`
33303}
33304
33305// MarshalJSON implements the json.Marshaller interface for type TriggerListResponse.
33306func (t TriggerListResponse) MarshalJSON() ([]byte, error) {
33307	objectMap := make(map[string]interface{})
33308	populate(objectMap, "nextLink", t.NextLink)
33309	populate(objectMap, "value", t.Value)
33310	return json.Marshal(objectMap)
33311}
33312
33313// TriggerPipelineReference - Pipeline that needs to be triggered with the given parameters.
33314type TriggerPipelineReference struct {
33315	// Pipeline parameters.
33316	Parameters map[string]interface{} `json:"parameters,omitempty"`
33317
33318	// Pipeline reference.
33319	PipelineReference *PipelineReference `json:"pipelineReference,omitempty"`
33320}
33321
33322// MarshalJSON implements the json.Marshaller interface for type TriggerPipelineReference.
33323func (t TriggerPipelineReference) MarshalJSON() ([]byte, error) {
33324	objectMap := make(map[string]interface{})
33325	populate(objectMap, "parameters", t.Parameters)
33326	populate(objectMap, "pipelineReference", t.PipelineReference)
33327	return json.Marshal(objectMap)
33328}
33329
33330// TriggerReference - Trigger reference type.
33331type TriggerReference struct {
33332	// REQUIRED; Reference trigger name.
33333	ReferenceName *string `json:"referenceName,omitempty"`
33334
33335	// REQUIRED; Trigger reference type.
33336	Type *TriggerReferenceType `json:"type,omitempty"`
33337}
33338
33339// TriggerResource - Trigger resource type.
33340type TriggerResource struct {
33341	SubResource
33342	// REQUIRED; Properties of the trigger.
33343	Properties TriggerClassification `json:"properties,omitempty"`
33344}
33345
33346// MarshalJSON implements the json.Marshaller interface for type TriggerResource.
33347func (t TriggerResource) MarshalJSON() ([]byte, error) {
33348	objectMap := t.SubResource.marshalInternal()
33349	populate(objectMap, "properties", t.Properties)
33350	return json.Marshal(objectMap)
33351}
33352
33353// UnmarshalJSON implements the json.Unmarshaller interface for type TriggerResource.
33354func (t *TriggerResource) UnmarshalJSON(data []byte) error {
33355	var rawMsg map[string]json.RawMessage
33356	if err := json.Unmarshal(data, &rawMsg); err != nil {
33357		return err
33358	}
33359	for key, val := range rawMsg {
33360		var err error
33361		switch key {
33362		case "properties":
33363			t.Properties, err = unmarshalTriggerClassification(val)
33364			delete(rawMsg, key)
33365		}
33366		if err != nil {
33367			return err
33368		}
33369	}
33370	return t.SubResource.unmarshalInternal(rawMsg)
33371}
33372
33373// TriggerRun - Trigger runs.
33374type TriggerRun struct {
33375	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
33376	AdditionalProperties map[string]interface{}
33377
33378	// READ-ONLY; Trigger error message.
33379	Message *string `json:"message,omitempty" azure:"ro"`
33380
33381	// READ-ONLY; List of property name and value related to trigger run. Name, value pair depends on type of trigger.
33382	Properties map[string]*string `json:"properties,omitempty" azure:"ro"`
33383
33384	// READ-ONLY; Trigger run status.
33385	Status *TriggerRunStatus `json:"status,omitempty" azure:"ro"`
33386
33387	// READ-ONLY; Trigger name.
33388	TriggerName *string `json:"triggerName,omitempty" azure:"ro"`
33389
33390	// READ-ONLY; Trigger run id.
33391	TriggerRunID *string `json:"triggerRunId,omitempty" azure:"ro"`
33392
33393	// READ-ONLY; Trigger run start time.
33394	TriggerRunTimestamp *time.Time `json:"triggerRunTimestamp,omitempty" azure:"ro"`
33395
33396	// READ-ONLY; Trigger type.
33397	TriggerType *string `json:"triggerType,omitempty" azure:"ro"`
33398
33399	// READ-ONLY; List of pipeline name and run Id triggered by the trigger run.
33400	TriggeredPipelines map[string]*string `json:"triggeredPipelines,omitempty" azure:"ro"`
33401}
33402
33403// MarshalJSON implements the json.Marshaller interface for type TriggerRun.
33404func (t TriggerRun) MarshalJSON() ([]byte, error) {
33405	objectMap := make(map[string]interface{})
33406	populate(objectMap, "message", t.Message)
33407	populate(objectMap, "properties", t.Properties)
33408	populate(objectMap, "status", t.Status)
33409	populate(objectMap, "triggerName", t.TriggerName)
33410	populate(objectMap, "triggerRunId", t.TriggerRunID)
33411	populate(objectMap, "triggerRunTimestamp", (*timeRFC3339)(t.TriggerRunTimestamp))
33412	populate(objectMap, "triggerType", t.TriggerType)
33413	populate(objectMap, "triggeredPipelines", t.TriggeredPipelines)
33414	if t.AdditionalProperties != nil {
33415		for key, val := range t.AdditionalProperties {
33416			objectMap[key] = val
33417		}
33418	}
33419	return json.Marshal(objectMap)
33420}
33421
33422// UnmarshalJSON implements the json.Unmarshaller interface for type TriggerRun.
33423func (t *TriggerRun) UnmarshalJSON(data []byte) error {
33424	var rawMsg map[string]json.RawMessage
33425	if err := json.Unmarshal(data, &rawMsg); err != nil {
33426		return err
33427	}
33428	for key, val := range rawMsg {
33429		var err error
33430		switch key {
33431		case "message":
33432			err = unpopulate(val, &t.Message)
33433			delete(rawMsg, key)
33434		case "properties":
33435			err = unpopulate(val, &t.Properties)
33436			delete(rawMsg, key)
33437		case "status":
33438			err = unpopulate(val, &t.Status)
33439			delete(rawMsg, key)
33440		case "triggerName":
33441			err = unpopulate(val, &t.TriggerName)
33442			delete(rawMsg, key)
33443		case "triggerRunId":
33444			err = unpopulate(val, &t.TriggerRunID)
33445			delete(rawMsg, key)
33446		case "triggerRunTimestamp":
33447			var aux timeRFC3339
33448			err = unpopulate(val, &aux)
33449			t.TriggerRunTimestamp = (*time.Time)(&aux)
33450			delete(rawMsg, key)
33451		case "triggerType":
33452			err = unpopulate(val, &t.TriggerType)
33453			delete(rawMsg, key)
33454		case "triggeredPipelines":
33455			err = unpopulate(val, &t.TriggeredPipelines)
33456			delete(rawMsg, key)
33457		default:
33458			if t.AdditionalProperties == nil {
33459				t.AdditionalProperties = map[string]interface{}{}
33460			}
33461			if val != nil {
33462				var aux interface{}
33463				err = json.Unmarshal(val, &aux)
33464				t.AdditionalProperties[key] = aux
33465			}
33466			delete(rawMsg, key)
33467		}
33468		if err != nil {
33469			return err
33470		}
33471	}
33472	return nil
33473}
33474
33475// TriggerRunCancelTriggerInstanceOptions contains the optional parameters for the TriggerRun.CancelTriggerInstance method.
33476type TriggerRunCancelTriggerInstanceOptions struct {
33477	// placeholder for future optional parameters
33478}
33479
33480// TriggerRunQueryTriggerRunsByWorkspaceOptions contains the optional parameters for the TriggerRun.QueryTriggerRunsByWorkspace method.
33481type TriggerRunQueryTriggerRunsByWorkspaceOptions struct {
33482	// placeholder for future optional parameters
33483}
33484
33485// TriggerRunRerunTriggerInstanceOptions contains the optional parameters for the TriggerRun.RerunTriggerInstance method.
33486type TriggerRunRerunTriggerInstanceOptions struct {
33487	// placeholder for future optional parameters
33488}
33489
33490// TriggerRunsQueryResponse - A list of trigger runs.
33491type TriggerRunsQueryResponse struct {
33492	// REQUIRED; List of trigger runs.
33493	Value []*TriggerRun `json:"value,omitempty"`
33494
33495	// The continuation token for getting the next page of results, if any remaining results exist, null otherwise.
33496	ContinuationToken *string `json:"continuationToken,omitempty"`
33497}
33498
33499// MarshalJSON implements the json.Marshaller interface for type TriggerRunsQueryResponse.
33500func (t TriggerRunsQueryResponse) MarshalJSON() ([]byte, error) {
33501	objectMap := make(map[string]interface{})
33502	populate(objectMap, "continuationToken", t.ContinuationToken)
33503	populate(objectMap, "value", t.Value)
33504	return json.Marshal(objectMap)
33505}
33506
33507// TriggerSubscriptionOperationStatus - Defines the response of a trigger subscription operation.
33508type TriggerSubscriptionOperationStatus struct {
33509	// READ-ONLY; Event Subscription Status.
33510	Status *EventSubscriptionStatus `json:"status,omitempty" azure:"ro"`
33511
33512	// READ-ONLY; Trigger name.
33513	TriggerName *string `json:"triggerName,omitempty" azure:"ro"`
33514}
33515
33516// TumblingWindowTrigger - Trigger that schedules pipeline runs for all fixed time interval windows from a start time without gaps and also supports backfill
33517// scenarios (when start time is in the past).
33518type TumblingWindowTrigger struct {
33519	Trigger
33520	// REQUIRED; Pipeline for which runs are created when an event is fired for trigger window that is ready.
33521	Pipeline *TriggerPipelineReference `json:"pipeline,omitempty"`
33522
33523	// REQUIRED; Tumbling Window Trigger properties.
33524	TypeProperties *TumblingWindowTriggerTypeProperties `json:"typeProperties,omitempty"`
33525}
33526
33527// MarshalJSON implements the json.Marshaller interface for type TumblingWindowTrigger.
33528func (t TumblingWindowTrigger) MarshalJSON() ([]byte, error) {
33529	objectMap := t.Trigger.marshalInternal("TumblingWindowTrigger")
33530	populate(objectMap, "pipeline", t.Pipeline)
33531	populate(objectMap, "typeProperties", t.TypeProperties)
33532	return json.Marshal(objectMap)
33533}
33534
33535// UnmarshalJSON implements the json.Unmarshaller interface for type TumblingWindowTrigger.
33536func (t *TumblingWindowTrigger) UnmarshalJSON(data []byte) error {
33537	var rawMsg map[string]json.RawMessage
33538	if err := json.Unmarshal(data, &rawMsg); err != nil {
33539		return err
33540	}
33541	for key, val := range rawMsg {
33542		var err error
33543		switch key {
33544		case "pipeline":
33545			err = unpopulate(val, &t.Pipeline)
33546			delete(rawMsg, key)
33547		case "typeProperties":
33548			err = unpopulate(val, &t.TypeProperties)
33549			delete(rawMsg, key)
33550		}
33551		if err != nil {
33552			return err
33553		}
33554	}
33555	return t.Trigger.unmarshalInternal(rawMsg)
33556}
33557
33558// TumblingWindowTriggerDependencyReference - Referenced tumbling window trigger dependency.
33559type TumblingWindowTriggerDependencyReference struct {
33560	TriggerDependencyReference
33561	// Timespan applied to the start time of a tumbling window when evaluating dependency.
33562	Offset *string `json:"offset,omitempty"`
33563
33564	// The size of the window when evaluating the dependency. If undefined the frequency of the tumbling window will be used.
33565	Size *string `json:"size,omitempty"`
33566}
33567
33568// MarshalJSON implements the json.Marshaller interface for type TumblingWindowTriggerDependencyReference.
33569func (t TumblingWindowTriggerDependencyReference) MarshalJSON() ([]byte, error) {
33570	objectMap := t.TriggerDependencyReference.marshalInternal("TumblingWindowTriggerDependencyReference")
33571	populate(objectMap, "offset", t.Offset)
33572	populate(objectMap, "size", t.Size)
33573	return json.Marshal(objectMap)
33574}
33575
33576// UnmarshalJSON implements the json.Unmarshaller interface for type TumblingWindowTriggerDependencyReference.
33577func (t *TumblingWindowTriggerDependencyReference) UnmarshalJSON(data []byte) error {
33578	var rawMsg map[string]json.RawMessage
33579	if err := json.Unmarshal(data, &rawMsg); err != nil {
33580		return err
33581	}
33582	for key, val := range rawMsg {
33583		var err error
33584		switch key {
33585		case "offset":
33586			err = unpopulate(val, &t.Offset)
33587			delete(rawMsg, key)
33588		case "size":
33589			err = unpopulate(val, &t.Size)
33590			delete(rawMsg, key)
33591		}
33592		if err != nil {
33593			return err
33594		}
33595	}
33596	return t.TriggerDependencyReference.unmarshalInternal(rawMsg)
33597}
33598
33599// TumblingWindowTriggerTypeProperties - Tumbling Window Trigger properties.
33600type TumblingWindowTriggerTypeProperties struct {
33601	// REQUIRED; The frequency of the time windows.
33602	Frequency *TumblingWindowFrequency `json:"frequency,omitempty"`
33603
33604	// REQUIRED; The interval of the time windows. The minimum interval allowed is 15 Minutes.
33605	Interval *int32 `json:"interval,omitempty"`
33606
33607	// REQUIRED; The max number of parallel time windows (ready for execution) for which a new run is triggered.
33608	MaxConcurrency *int32 `json:"maxConcurrency,omitempty"`
33609
33610	// REQUIRED; The start time for the time period for the trigger during which events are fired for windows that are ready. Only UTC time is currently supported.
33611	StartTime *time.Time `json:"startTime,omitempty"`
33612
33613	// Specifies how long the trigger waits past due time before triggering new run. It doesn't alter window start and end time. The default is 0. Type: string
33614	// (or Expression with resultType string),
33615	// pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
33616	Delay interface{} `json:"delay,omitempty"`
33617
33618	// Triggers that this trigger depends on. Only tumbling window triggers are supported.
33619	DependsOn []DependencyReferenceClassification `json:"dependsOn,omitempty"`
33620
33621	// The end time for the time period for the trigger during which events are fired for windows that are ready. Only UTC time is currently supported.
33622	EndTime *time.Time `json:"endTime,omitempty"`
33623
33624	// Retry policy that will be applied for failed pipeline runs.
33625	RetryPolicy *RetryPolicy `json:"retryPolicy,omitempty"`
33626}
33627
33628// MarshalJSON implements the json.Marshaller interface for type TumblingWindowTriggerTypeProperties.
33629func (t TumblingWindowTriggerTypeProperties) MarshalJSON() ([]byte, error) {
33630	objectMap := make(map[string]interface{})
33631	populate(objectMap, "delay", t.Delay)
33632	populate(objectMap, "dependsOn", t.DependsOn)
33633	populate(objectMap, "endTime", (*timeRFC3339)(t.EndTime))
33634	populate(objectMap, "frequency", t.Frequency)
33635	populate(objectMap, "interval", t.Interval)
33636	populate(objectMap, "maxConcurrency", t.MaxConcurrency)
33637	populate(objectMap, "retryPolicy", t.RetryPolicy)
33638	populate(objectMap, "startTime", (*timeRFC3339)(t.StartTime))
33639	return json.Marshal(objectMap)
33640}
33641
33642// UnmarshalJSON implements the json.Unmarshaller interface for type TumblingWindowTriggerTypeProperties.
33643func (t *TumblingWindowTriggerTypeProperties) UnmarshalJSON(data []byte) error {
33644	var rawMsg map[string]json.RawMessage
33645	if err := json.Unmarshal(data, &rawMsg); err != nil {
33646		return err
33647	}
33648	for key, val := range rawMsg {
33649		var err error
33650		switch key {
33651		case "delay":
33652			err = unpopulate(val, &t.Delay)
33653			delete(rawMsg, key)
33654		case "dependsOn":
33655			t.DependsOn, err = unmarshalDependencyReferenceClassificationArray(val)
33656			delete(rawMsg, key)
33657		case "endTime":
33658			var aux timeRFC3339
33659			err = unpopulate(val, &aux)
33660			t.EndTime = (*time.Time)(&aux)
33661			delete(rawMsg, key)
33662		case "frequency":
33663			err = unpopulate(val, &t.Frequency)
33664			delete(rawMsg, key)
33665		case "interval":
33666			err = unpopulate(val, &t.Interval)
33667			delete(rawMsg, key)
33668		case "maxConcurrency":
33669			err = unpopulate(val, &t.MaxConcurrency)
33670			delete(rawMsg, key)
33671		case "retryPolicy":
33672			err = unpopulate(val, &t.RetryPolicy)
33673			delete(rawMsg, key)
33674		case "startTime":
33675			var aux timeRFC3339
33676			err = unpopulate(val, &aux)
33677			t.StartTime = (*time.Time)(&aux)
33678			delete(rawMsg, key)
33679		}
33680		if err != nil {
33681			return err
33682		}
33683	}
33684	return nil
33685}
33686
33687// TypeConversionSettings - Type conversion settings
33688type TypeConversionSettings struct {
33689	// Whether to allow data truncation when converting the data. Type: boolean (or Expression with resultType boolean).
33690	AllowDataTruncation interface{} `json:"allowDataTruncation,omitempty"`
33691
33692	// The culture used to convert data from/to string. Type: string (or Expression with resultType string).
33693	Culture interface{} `json:"culture,omitempty"`
33694
33695	// The format for DateTime values. Type: string (or Expression with resultType string).
33696	DateTimeFormat interface{} `json:"dateTimeFormat,omitempty"`
33697
33698	// The format for DateTimeOffset values. Type: string (or Expression with resultType string).
33699	DateTimeOffsetFormat interface{} `json:"dateTimeOffsetFormat,omitempty"`
33700
33701	// The format for TimeSpan values. Type: string (or Expression with resultType string).
33702	TimeSpanFormat interface{} `json:"timeSpanFormat,omitempty"`
33703
33704	// Whether to treat boolean values as numbers. Type: boolean (or Expression with resultType boolean).
33705	TreatBooleanAsNumber interface{} `json:"treatBooleanAsNumber,omitempty"`
33706}
33707
33708// UntilActivity - This activity executes inner activities until the specified boolean expression results to true or timeout is reached, whichever is earlier.
33709type UntilActivity struct {
33710	ControlActivity
33711	// REQUIRED; Until activity properties.
33712	TypeProperties *UntilActivityTypeProperties `json:"typeProperties,omitempty"`
33713}
33714
33715// MarshalJSON implements the json.Marshaller interface for type UntilActivity.
33716func (u UntilActivity) MarshalJSON() ([]byte, error) {
33717	objectMap := u.ControlActivity.marshalInternal("Until")
33718	populate(objectMap, "typeProperties", u.TypeProperties)
33719	return json.Marshal(objectMap)
33720}
33721
33722// UnmarshalJSON implements the json.Unmarshaller interface for type UntilActivity.
33723func (u *UntilActivity) UnmarshalJSON(data []byte) error {
33724	var rawMsg map[string]json.RawMessage
33725	if err := json.Unmarshal(data, &rawMsg); err != nil {
33726		return err
33727	}
33728	for key, val := range rawMsg {
33729		var err error
33730		switch key {
33731		case "typeProperties":
33732			err = unpopulate(val, &u.TypeProperties)
33733			delete(rawMsg, key)
33734		}
33735		if err != nil {
33736			return err
33737		}
33738	}
33739	return u.ControlActivity.unmarshalInternal(rawMsg)
33740}
33741
33742// UntilActivityTypeProperties - Until activity properties.
33743type UntilActivityTypeProperties struct {
33744	// REQUIRED; List of activities to execute.
33745	Activities []ActivityClassification `json:"activities,omitempty"`
33746
33747	// REQUIRED; An expression that would evaluate to Boolean. The loop will continue until this expression evaluates to true
33748	Expression *Expression `json:"expression,omitempty"`
33749
33750	// Specifies the timeout for the activity to run. If there is no value specified, it takes the value of TimeSpan.FromDays(7) which is 1 week as default.
33751	// Type: string (or Expression with resultType
33752	// string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])). Type: string (or Expression with resultType string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
33753	Timeout interface{} `json:"timeout,omitempty"`
33754}
33755
33756// MarshalJSON implements the json.Marshaller interface for type UntilActivityTypeProperties.
33757func (u UntilActivityTypeProperties) MarshalJSON() ([]byte, error) {
33758	objectMap := make(map[string]interface{})
33759	populate(objectMap, "activities", u.Activities)
33760	populate(objectMap, "expression", u.Expression)
33761	populate(objectMap, "timeout", u.Timeout)
33762	return json.Marshal(objectMap)
33763}
33764
33765// UnmarshalJSON implements the json.Unmarshaller interface for type UntilActivityTypeProperties.
33766func (u *UntilActivityTypeProperties) UnmarshalJSON(data []byte) error {
33767	var rawMsg map[string]json.RawMessage
33768	if err := json.Unmarshal(data, &rawMsg); err != nil {
33769		return err
33770	}
33771	for key, val := range rawMsg {
33772		var err error
33773		switch key {
33774		case "activities":
33775			u.Activities, err = unmarshalActivityClassificationArray(val)
33776			delete(rawMsg, key)
33777		case "expression":
33778			err = unpopulate(val, &u.Expression)
33779			delete(rawMsg, key)
33780		case "timeout":
33781			err = unpopulate(val, &u.Timeout)
33782			delete(rawMsg, key)
33783		}
33784		if err != nil {
33785			return err
33786		}
33787	}
33788	return nil
33789}
33790
33791// UserProperty - User property.
33792type UserProperty struct {
33793	// REQUIRED; User property name.
33794	Name *string `json:"name,omitempty"`
33795
33796	// REQUIRED; User property value. Type: string (or Expression with resultType string).
33797	Value interface{} `json:"value,omitempty"`
33798}
33799
33800// ValidationActivity - This activity verifies that an external resource exists.
33801type ValidationActivity struct {
33802	ControlActivity
33803	// REQUIRED; Validation activity properties.
33804	TypeProperties *ValidationActivityTypeProperties `json:"typeProperties,omitempty"`
33805}
33806
33807// MarshalJSON implements the json.Marshaller interface for type ValidationActivity.
33808func (v ValidationActivity) MarshalJSON() ([]byte, error) {
33809	objectMap := v.ControlActivity.marshalInternal("Validation")
33810	populate(objectMap, "typeProperties", v.TypeProperties)
33811	return json.Marshal(objectMap)
33812}
33813
33814// UnmarshalJSON implements the json.Unmarshaller interface for type ValidationActivity.
33815func (v *ValidationActivity) UnmarshalJSON(data []byte) error {
33816	var rawMsg map[string]json.RawMessage
33817	if err := json.Unmarshal(data, &rawMsg); err != nil {
33818		return err
33819	}
33820	for key, val := range rawMsg {
33821		var err error
33822		switch key {
33823		case "typeProperties":
33824			err = unpopulate(val, &v.TypeProperties)
33825			delete(rawMsg, key)
33826		}
33827		if err != nil {
33828			return err
33829		}
33830	}
33831	return v.ControlActivity.unmarshalInternal(rawMsg)
33832}
33833
33834// ValidationActivityTypeProperties - Validation activity properties.
33835type ValidationActivityTypeProperties struct {
33836	// REQUIRED; Validation activity dataset reference.
33837	Dataset *DatasetReference `json:"dataset,omitempty"`
33838
33839	// Can be used if dataset points to a folder. If set to true, the folder must have at least one file. If set to false, the folder must be empty. Type: boolean
33840	// (or Expression with resultType boolean).
33841	ChildItems interface{} `json:"childItems,omitempty"`
33842
33843	// Can be used if dataset points to a file. The file must be greater than or equal in size to the value specified. Type: integer (or Expression with resultType
33844	// integer).
33845	MinimumSize interface{} `json:"minimumSize,omitempty"`
33846
33847	// A delay in seconds between validation attempts. If no value is specified, 10 seconds will be used as the default. Type: integer (or Expression with resultType
33848	// integer).
33849	Sleep interface{} `json:"sleep,omitempty"`
33850
33851	// Specifies the timeout for the activity to run. If there is no value specified, it takes the value of TimeSpan.FromDays(7) which is 1 week as default.
33852	// Type: string (or Expression with resultType
33853	// string), pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
33854	Timeout interface{} `json:"timeout,omitempty"`
33855}
33856
33857// VariableSpecification - Definition of a single variable for a Pipeline.
33858type VariableSpecification struct {
33859	// REQUIRED; Variable type.
33860	Type *VariableType `json:"type,omitempty"`
33861
33862	// Default value of variable.
33863	DefaultValue interface{} `json:"defaultValue,omitempty"`
33864}
33865
33866// VerticaDatasetTypeProperties - Vertica Properties
33867type VerticaDatasetTypeProperties struct {
33868	// The schema name of the Vertica. Type: string (or Expression with resultType string).
33869	Schema interface{} `json:"schema,omitempty"`
33870
33871	// The table name of the Vertica. Type: string (or Expression with resultType string).
33872	Table interface{} `json:"table,omitempty"`
33873
33874	// This property will be retired. Please consider using schema + table properties instead.
33875	TableName interface{} `json:"tableName,omitempty"`
33876}
33877
33878// VerticaLinkedService - Vertica linked service.
33879type VerticaLinkedService struct {
33880	LinkedService
33881	// REQUIRED; Vertica linked service properties.
33882	TypeProperties *VerticaLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
33883}
33884
33885// MarshalJSON implements the json.Marshaller interface for type VerticaLinkedService.
33886func (v VerticaLinkedService) MarshalJSON() ([]byte, error) {
33887	objectMap := v.LinkedService.marshalInternal("Vertica")
33888	populate(objectMap, "typeProperties", v.TypeProperties)
33889	return json.Marshal(objectMap)
33890}
33891
33892// UnmarshalJSON implements the json.Unmarshaller interface for type VerticaLinkedService.
33893func (v *VerticaLinkedService) UnmarshalJSON(data []byte) error {
33894	var rawMsg map[string]json.RawMessage
33895	if err := json.Unmarshal(data, &rawMsg); err != nil {
33896		return err
33897	}
33898	for key, val := range rawMsg {
33899		var err error
33900		switch key {
33901		case "typeProperties":
33902			err = unpopulate(val, &v.TypeProperties)
33903			delete(rawMsg, key)
33904		}
33905		if err != nil {
33906			return err
33907		}
33908	}
33909	return v.LinkedService.unmarshalInternal(rawMsg)
33910}
33911
33912// VerticaLinkedServiceTypeProperties - Vertica linked service properties.
33913type VerticaLinkedServiceTypeProperties struct {
33914	// An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
33915	ConnectionString interface{} `json:"connectionString,omitempty"`
33916
33917	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
33918	// with resultType string).
33919	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
33920
33921	// The Azure key vault secret reference of password in connection string.
33922	Pwd *AzureKeyVaultSecretReference `json:"pwd,omitempty"`
33923}
33924
33925// VerticaSource - A copy activity Vertica source.
33926type VerticaSource struct {
33927	TabularSource
33928	// A query to retrieve data from source. Type: string (or Expression with resultType string).
33929	Query interface{} `json:"query,omitempty"`
33930}
33931
33932// MarshalJSON implements the json.Marshaller interface for type VerticaSource.
33933func (v VerticaSource) MarshalJSON() ([]byte, error) {
33934	objectMap := v.TabularSource.marshalInternal("VerticaSource")
33935	populate(objectMap, "query", v.Query)
33936	return json.Marshal(objectMap)
33937}
33938
33939// UnmarshalJSON implements the json.Unmarshaller interface for type VerticaSource.
33940func (v *VerticaSource) UnmarshalJSON(data []byte) error {
33941	var rawMsg map[string]json.RawMessage
33942	if err := json.Unmarshal(data, &rawMsg); err != nil {
33943		return err
33944	}
33945	for key, val := range rawMsg {
33946		var err error
33947		switch key {
33948		case "query":
33949			err = unpopulate(val, &v.Query)
33950			delete(rawMsg, key)
33951		}
33952		if err != nil {
33953			return err
33954		}
33955	}
33956	return v.TabularSource.unmarshalInternal(rawMsg)
33957}
33958
33959// VerticaTableDataset - Vertica dataset.
33960type VerticaTableDataset struct {
33961	Dataset
33962	// Properties specific to this dataset type.
33963	TypeProperties *VerticaDatasetTypeProperties `json:"typeProperties,omitempty"`
33964}
33965
33966// MarshalJSON implements the json.Marshaller interface for type VerticaTableDataset.
33967func (v VerticaTableDataset) MarshalJSON() ([]byte, error) {
33968	objectMap := v.Dataset.marshalInternal("VerticaTable")
33969	populate(objectMap, "typeProperties", v.TypeProperties)
33970	return json.Marshal(objectMap)
33971}
33972
33973// UnmarshalJSON implements the json.Unmarshaller interface for type VerticaTableDataset.
33974func (v *VerticaTableDataset) UnmarshalJSON(data []byte) error {
33975	var rawMsg map[string]json.RawMessage
33976	if err := json.Unmarshal(data, &rawMsg); err != nil {
33977		return err
33978	}
33979	for key, val := range rawMsg {
33980		var err error
33981		switch key {
33982		case "typeProperties":
33983			err = unpopulate(val, &v.TypeProperties)
33984			delete(rawMsg, key)
33985		}
33986		if err != nil {
33987			return err
33988		}
33989	}
33990	return v.Dataset.unmarshalInternal(rawMsg)
33991}
33992
33993// VirtualNetworkProfile - Virtual Network Profile
33994type VirtualNetworkProfile struct {
33995	// Subnet ID used for computes in workspace
33996	ComputeSubnetID *string `json:"computeSubnetId,omitempty"`
33997}
33998
33999// WaitActivity - This activity suspends pipeline execution for the specified interval.
34000type WaitActivity struct {
34001	ControlActivity
34002	// REQUIRED; Wait activity properties.
34003	TypeProperties *WaitActivityTypeProperties `json:"typeProperties,omitempty"`
34004}
34005
34006// MarshalJSON implements the json.Marshaller interface for type WaitActivity.
34007func (w WaitActivity) MarshalJSON() ([]byte, error) {
34008	objectMap := w.ControlActivity.marshalInternal("Wait")
34009	populate(objectMap, "typeProperties", w.TypeProperties)
34010	return json.Marshal(objectMap)
34011}
34012
34013// UnmarshalJSON implements the json.Unmarshaller interface for type WaitActivity.
34014func (w *WaitActivity) UnmarshalJSON(data []byte) error {
34015	var rawMsg map[string]json.RawMessage
34016	if err := json.Unmarshal(data, &rawMsg); err != nil {
34017		return err
34018	}
34019	for key, val := range rawMsg {
34020		var err error
34021		switch key {
34022		case "typeProperties":
34023			err = unpopulate(val, &w.TypeProperties)
34024			delete(rawMsg, key)
34025		}
34026		if err != nil {
34027			return err
34028		}
34029	}
34030	return w.ControlActivity.unmarshalInternal(rawMsg)
34031}
34032
34033// WaitActivityTypeProperties - Wait activity properties.
34034type WaitActivityTypeProperties struct {
34035	// REQUIRED; Duration in seconds.
34036	WaitTimeInSeconds interface{} `json:"waitTimeInSeconds,omitempty"`
34037}
34038
34039// WebActivity - Web activity.
34040type WebActivity struct {
34041	ExecutionActivity
34042	// REQUIRED; Web activity properties.
34043	TypeProperties *WebActivityTypeProperties `json:"typeProperties,omitempty"`
34044}
34045
34046// MarshalJSON implements the json.Marshaller interface for type WebActivity.
34047func (w WebActivity) MarshalJSON() ([]byte, error) {
34048	objectMap := w.ExecutionActivity.marshalInternal("WebActivity")
34049	populate(objectMap, "typeProperties", w.TypeProperties)
34050	return json.Marshal(objectMap)
34051}
34052
34053// UnmarshalJSON implements the json.Unmarshaller interface for type WebActivity.
34054func (w *WebActivity) UnmarshalJSON(data []byte) error {
34055	var rawMsg map[string]json.RawMessage
34056	if err := json.Unmarshal(data, &rawMsg); err != nil {
34057		return err
34058	}
34059	for key, val := range rawMsg {
34060		var err error
34061		switch key {
34062		case "typeProperties":
34063			err = unpopulate(val, &w.TypeProperties)
34064			delete(rawMsg, key)
34065		}
34066		if err != nil {
34067			return err
34068		}
34069	}
34070	return w.ExecutionActivity.unmarshalInternal(rawMsg)
34071}
34072
34073// WebActivityAuthentication - Web activity authentication properties.
34074type WebActivityAuthentication struct {
34075	// REQUIRED; Web activity authentication (Basic/ClientCertificate/MSI)
34076	Type *string `json:"type,omitempty"`
34077
34078	// Password for the PFX file or basic authentication.
34079	Password SecretBaseClassification `json:"password,omitempty"`
34080
34081	// Base64-encoded contents of a PFX file.
34082	Pfx SecretBaseClassification `json:"pfx,omitempty"`
34083
34084	// Resource for which Azure Auth token will be requested when using MSI Authentication.
34085	Resource *string `json:"resource,omitempty"`
34086
34087	// Web activity authentication user name for basic authentication.
34088	Username *string `json:"username,omitempty"`
34089}
34090
34091// MarshalJSON implements the json.Marshaller interface for type WebActivityAuthentication.
34092func (w WebActivityAuthentication) MarshalJSON() ([]byte, error) {
34093	objectMap := make(map[string]interface{})
34094	populate(objectMap, "password", w.Password)
34095	populate(objectMap, "pfx", w.Pfx)
34096	populate(objectMap, "resource", w.Resource)
34097	populate(objectMap, "type", w.Type)
34098	populate(objectMap, "username", w.Username)
34099	return json.Marshal(objectMap)
34100}
34101
34102// UnmarshalJSON implements the json.Unmarshaller interface for type WebActivityAuthentication.
34103func (w *WebActivityAuthentication) UnmarshalJSON(data []byte) error {
34104	var rawMsg map[string]json.RawMessage
34105	if err := json.Unmarshal(data, &rawMsg); err != nil {
34106		return err
34107	}
34108	for key, val := range rawMsg {
34109		var err error
34110		switch key {
34111		case "password":
34112			w.Password, err = unmarshalSecretBaseClassification(val)
34113			delete(rawMsg, key)
34114		case "pfx":
34115			w.Pfx, err = unmarshalSecretBaseClassification(val)
34116			delete(rawMsg, key)
34117		case "resource":
34118			err = unpopulate(val, &w.Resource)
34119			delete(rawMsg, key)
34120		case "type":
34121			err = unpopulate(val, &w.Type)
34122			delete(rawMsg, key)
34123		case "username":
34124			err = unpopulate(val, &w.Username)
34125			delete(rawMsg, key)
34126		}
34127		if err != nil {
34128			return err
34129		}
34130	}
34131	return nil
34132}
34133
34134// WebActivityTypeProperties - Web activity type properties.
34135type WebActivityTypeProperties struct {
34136	// REQUIRED; Rest API method for target endpoint.
34137	Method *WebActivityMethod `json:"method,omitempty"`
34138
34139	// REQUIRED; Web activity target endpoint and path. Type: string (or Expression with resultType string).
34140	URL interface{} `json:"url,omitempty"`
34141
34142	// Authentication method used for calling the endpoint.
34143	Authentication *WebActivityAuthentication `json:"authentication,omitempty"`
34144
34145	// Represents the payload that will be sent to the endpoint. Required for POST/PUT method, not allowed for GET method Type: string (or Expression with resultType
34146	// string).
34147	Body interface{} `json:"body,omitempty"`
34148
34149	// The integration runtime reference.
34150	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
34151
34152	// List of datasets passed to web endpoint.
34153	Datasets []*DatasetReference `json:"datasets,omitempty"`
34154
34155	// Represents the headers that will be sent to the request. For example, to set the language and type on a request: "headers" : { "Accept-Language": "en-us",
34156	// "Content-Type": "application/json" }. Type:
34157	// string (or Expression with resultType string).
34158	Headers interface{} `json:"headers,omitempty"`
34159
34160	// List of linked services passed to web endpoint.
34161	LinkedServices []*LinkedServiceReference `json:"linkedServices,omitempty"`
34162}
34163
34164// MarshalJSON implements the json.Marshaller interface for type WebActivityTypeProperties.
34165func (w WebActivityTypeProperties) MarshalJSON() ([]byte, error) {
34166	objectMap := make(map[string]interface{})
34167	populate(objectMap, "authentication", w.Authentication)
34168	populate(objectMap, "body", w.Body)
34169	populate(objectMap, "connectVia", w.ConnectVia)
34170	populate(objectMap, "datasets", w.Datasets)
34171	populate(objectMap, "headers", w.Headers)
34172	populate(objectMap, "linkedServices", w.LinkedServices)
34173	populate(objectMap, "method", w.Method)
34174	populate(objectMap, "url", w.URL)
34175	return json.Marshal(objectMap)
34176}
34177
34178// WebAnonymousAuthentication - A WebLinkedService that uses anonymous authentication to communicate with an HTTP endpoint.
34179type WebAnonymousAuthentication struct {
34180	WebLinkedServiceTypeProperties
34181}
34182
34183// MarshalJSON implements the json.Marshaller interface for type WebAnonymousAuthentication.
34184func (w WebAnonymousAuthentication) MarshalJSON() ([]byte, error) {
34185	objectMap := w.WebLinkedServiceTypeProperties.marshalInternal(WebAuthenticationTypeAnonymous)
34186	return json.Marshal(objectMap)
34187}
34188
34189// WebBasicAuthentication - A WebLinkedService that uses basic authentication to communicate with an HTTP endpoint.
34190type WebBasicAuthentication struct {
34191	WebLinkedServiceTypeProperties
34192	// REQUIRED; The password for Basic authentication.
34193	Password SecretBaseClassification `json:"password,omitempty"`
34194
34195	// REQUIRED; User name for Basic authentication. Type: string (or Expression with resultType string).
34196	Username interface{} `json:"username,omitempty"`
34197}
34198
34199// MarshalJSON implements the json.Marshaller interface for type WebBasicAuthentication.
34200func (w WebBasicAuthentication) MarshalJSON() ([]byte, error) {
34201	objectMap := w.WebLinkedServiceTypeProperties.marshalInternal(WebAuthenticationTypeBasic)
34202	populate(objectMap, "password", w.Password)
34203	populate(objectMap, "username", w.Username)
34204	return json.Marshal(objectMap)
34205}
34206
34207// UnmarshalJSON implements the json.Unmarshaller interface for type WebBasicAuthentication.
34208func (w *WebBasicAuthentication) UnmarshalJSON(data []byte) error {
34209	var rawMsg map[string]json.RawMessage
34210	if err := json.Unmarshal(data, &rawMsg); err != nil {
34211		return err
34212	}
34213	for key, val := range rawMsg {
34214		var err error
34215		switch key {
34216		case "password":
34217			w.Password, err = unmarshalSecretBaseClassification(val)
34218			delete(rawMsg, key)
34219		case "username":
34220			err = unpopulate(val, &w.Username)
34221			delete(rawMsg, key)
34222		}
34223		if err != nil {
34224			return err
34225		}
34226	}
34227	return w.WebLinkedServiceTypeProperties.unmarshalInternal(rawMsg)
34228}
34229
34230// WebClientCertificateAuthentication - A WebLinkedService that uses client certificate based authentication to communicate with an HTTP endpoint. This
34231// scheme follows mutual authentication; the server must also provide valid credentials to
34232// the client.
34233type WebClientCertificateAuthentication struct {
34234	WebLinkedServiceTypeProperties
34235	// REQUIRED; Password for the PFX file.
34236	Password SecretBaseClassification `json:"password,omitempty"`
34237
34238	// REQUIRED; Base64-encoded contents of a PFX file.
34239	Pfx SecretBaseClassification `json:"pfx,omitempty"`
34240}
34241
34242// MarshalJSON implements the json.Marshaller interface for type WebClientCertificateAuthentication.
34243func (w WebClientCertificateAuthentication) MarshalJSON() ([]byte, error) {
34244	objectMap := w.WebLinkedServiceTypeProperties.marshalInternal(WebAuthenticationTypeClientCertificate)
34245	populate(objectMap, "password", w.Password)
34246	populate(objectMap, "pfx", w.Pfx)
34247	return json.Marshal(objectMap)
34248}
34249
34250// UnmarshalJSON implements the json.Unmarshaller interface for type WebClientCertificateAuthentication.
34251func (w *WebClientCertificateAuthentication) UnmarshalJSON(data []byte) error {
34252	var rawMsg map[string]json.RawMessage
34253	if err := json.Unmarshal(data, &rawMsg); err != nil {
34254		return err
34255	}
34256	for key, val := range rawMsg {
34257		var err error
34258		switch key {
34259		case "password":
34260			w.Password, err = unmarshalSecretBaseClassification(val)
34261			delete(rawMsg, key)
34262		case "pfx":
34263			w.Pfx, err = unmarshalSecretBaseClassification(val)
34264			delete(rawMsg, key)
34265		}
34266		if err != nil {
34267			return err
34268		}
34269	}
34270	return w.WebLinkedServiceTypeProperties.unmarshalInternal(rawMsg)
34271}
34272
34273// WebHookActivity - WebHook activity.
34274type WebHookActivity struct {
34275	ControlActivity
34276	// REQUIRED; WebHook activity properties.
34277	TypeProperties *WebHookActivityTypeProperties `json:"typeProperties,omitempty"`
34278}
34279
34280// MarshalJSON implements the json.Marshaller interface for type WebHookActivity.
34281func (w WebHookActivity) MarshalJSON() ([]byte, error) {
34282	objectMap := w.ControlActivity.marshalInternal("WebHook")
34283	populate(objectMap, "typeProperties", w.TypeProperties)
34284	return json.Marshal(objectMap)
34285}
34286
34287// UnmarshalJSON implements the json.Unmarshaller interface for type WebHookActivity.
34288func (w *WebHookActivity) UnmarshalJSON(data []byte) error {
34289	var rawMsg map[string]json.RawMessage
34290	if err := json.Unmarshal(data, &rawMsg); err != nil {
34291		return err
34292	}
34293	for key, val := range rawMsg {
34294		var err error
34295		switch key {
34296		case "typeProperties":
34297			err = unpopulate(val, &w.TypeProperties)
34298			delete(rawMsg, key)
34299		}
34300		if err != nil {
34301			return err
34302		}
34303	}
34304	return w.ControlActivity.unmarshalInternal(rawMsg)
34305}
34306
34307// WebHookActivityTypeProperties - WebHook activity type properties.
34308type WebHookActivityTypeProperties struct {
34309	// REQUIRED; Rest API method for target endpoint.
34310	Method *WebHookActivityMethod `json:"method,omitempty"`
34311
34312	// REQUIRED; WebHook activity target endpoint and path. Type: string (or Expression with resultType string).
34313	URL interface{} `json:"url,omitempty"`
34314
34315	// Authentication method used for calling the endpoint.
34316	Authentication *WebActivityAuthentication `json:"authentication,omitempty"`
34317
34318	// Represents the payload that will be sent to the endpoint. Required for POST/PUT method, not allowed for GET method Type: string (or Expression with resultType
34319	// string).
34320	Body interface{} `json:"body,omitempty"`
34321
34322	// Represents the headers that will be sent to the request. For example, to set the language and type on a request: "headers" : { "Accept-Language": "en-us",
34323	// "Content-Type": "application/json" }. Type:
34324	// string (or Expression with resultType string).
34325	Headers interface{} `json:"headers,omitempty"`
34326
34327	// When set to true, statusCode, output and error in callback request body will be consumed by activity. The activity can be marked as failed by setting
34328	// statusCode >= 400 in callback request. Default is
34329	// false. Type: boolean (or Expression with resultType boolean).
34330	ReportStatusOnCallBack interface{} `json:"reportStatusOnCallBack,omitempty"`
34331
34332	// The timeout within which the webhook should be called back. If there is no value specified, it defaults to 10 minutes. Type: string. Pattern: ((\d+).)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
34333	Timeout *string `json:"timeout,omitempty"`
34334}
34335
34336// WebLinkedService - Web linked service.
34337type WebLinkedService struct {
34338	LinkedService
34339	// REQUIRED; Web linked service properties.
34340	TypeProperties WebLinkedServiceTypePropertiesClassification `json:"typeProperties,omitempty"`
34341}
34342
34343// MarshalJSON implements the json.Marshaller interface for type WebLinkedService.
34344func (w WebLinkedService) MarshalJSON() ([]byte, error) {
34345	objectMap := w.LinkedService.marshalInternal("Web")
34346	populate(objectMap, "typeProperties", w.TypeProperties)
34347	return json.Marshal(objectMap)
34348}
34349
34350// UnmarshalJSON implements the json.Unmarshaller interface for type WebLinkedService.
34351func (w *WebLinkedService) UnmarshalJSON(data []byte) error {
34352	var rawMsg map[string]json.RawMessage
34353	if err := json.Unmarshal(data, &rawMsg); err != nil {
34354		return err
34355	}
34356	for key, val := range rawMsg {
34357		var err error
34358		switch key {
34359		case "typeProperties":
34360			w.TypeProperties, err = unmarshalWebLinkedServiceTypePropertiesClassification(val)
34361			delete(rawMsg, key)
34362		}
34363		if err != nil {
34364			return err
34365		}
34366	}
34367	return w.LinkedService.unmarshalInternal(rawMsg)
34368}
34369
34370// WebLinkedServiceTypePropertiesClassification provides polymorphic access to related types.
34371// Call the interface's GetWebLinkedServiceTypeProperties() method to access the common type.
34372// Use a type switch to determine the concrete type.  The possible types are:
34373// - *WebAnonymousAuthentication, *WebBasicAuthentication, *WebClientCertificateAuthentication, *WebLinkedServiceTypeProperties
34374type WebLinkedServiceTypePropertiesClassification interface {
34375	// GetWebLinkedServiceTypeProperties returns the WebLinkedServiceTypeProperties content of the underlying type.
34376	GetWebLinkedServiceTypeProperties() *WebLinkedServiceTypeProperties
34377}
34378
34379// WebLinkedServiceTypeProperties - Base definition of WebLinkedServiceTypeProperties, this typeProperties is polymorphic based on authenticationType, so
34380// not flattened in SDK models.
34381type WebLinkedServiceTypeProperties struct {
34382	// REQUIRED; Type of authentication used to connect to the web table source.
34383	AuthenticationType *WebAuthenticationType `json:"authenticationType,omitempty"`
34384
34385	// REQUIRED; The URL of the web service endpoint, e.g. http://www.microsoft.com . Type: string (or Expression with resultType string).
34386	URL interface{} `json:"url,omitempty"`
34387}
34388
34389// GetWebLinkedServiceTypeProperties implements the WebLinkedServiceTypePropertiesClassification interface for type WebLinkedServiceTypeProperties.
34390func (w *WebLinkedServiceTypeProperties) GetWebLinkedServiceTypeProperties() *WebLinkedServiceTypeProperties {
34391	return w
34392}
34393
34394// UnmarshalJSON implements the json.Unmarshaller interface for type WebLinkedServiceTypeProperties.
34395func (w *WebLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
34396	var rawMsg map[string]json.RawMessage
34397	if err := json.Unmarshal(data, &rawMsg); err != nil {
34398		return err
34399	}
34400	return w.unmarshalInternal(rawMsg)
34401}
34402
34403func (w WebLinkedServiceTypeProperties) marshalInternal(discValue WebAuthenticationType) map[string]interface{} {
34404	objectMap := make(map[string]interface{})
34405	w.AuthenticationType = &discValue
34406	objectMap["authenticationType"] = w.AuthenticationType
34407	populate(objectMap, "url", w.URL)
34408	return objectMap
34409}
34410
34411func (w *WebLinkedServiceTypeProperties) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
34412	for key, val := range rawMsg {
34413		var err error
34414		switch key {
34415		case "authenticationType":
34416			err = unpopulate(val, &w.AuthenticationType)
34417			delete(rawMsg, key)
34418		case "url":
34419			err = unpopulate(val, &w.URL)
34420			delete(rawMsg, key)
34421		}
34422		if err != nil {
34423			return err
34424		}
34425	}
34426	return nil
34427}
34428
34429// WebSource - A copy activity source for web page table.
34430type WebSource struct {
34431	CopySource
34432	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
34433	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
34434}
34435
34436// MarshalJSON implements the json.Marshaller interface for type WebSource.
34437func (w WebSource) MarshalJSON() ([]byte, error) {
34438	objectMap := w.CopySource.marshalInternal("WebSource")
34439	populate(objectMap, "additionalColumns", w.AdditionalColumns)
34440	return json.Marshal(objectMap)
34441}
34442
34443// UnmarshalJSON implements the json.Unmarshaller interface for type WebSource.
34444func (w *WebSource) UnmarshalJSON(data []byte) error {
34445	var rawMsg map[string]json.RawMessage
34446	if err := json.Unmarshal(data, &rawMsg); err != nil {
34447		return err
34448	}
34449	for key, val := range rawMsg {
34450		var err error
34451		switch key {
34452		case "additionalColumns":
34453			err = unpopulate(val, &w.AdditionalColumns)
34454			delete(rawMsg, key)
34455		}
34456		if err != nil {
34457			return err
34458		}
34459	}
34460	return w.CopySource.unmarshalInternal(rawMsg)
34461}
34462
34463// WebTableDataset - The dataset points to a HTML table in the web page.
34464type WebTableDataset struct {
34465	Dataset
34466	// REQUIRED; Web table dataset properties.
34467	TypeProperties *WebTableDatasetTypeProperties `json:"typeProperties,omitempty"`
34468}
34469
34470// MarshalJSON implements the json.Marshaller interface for type WebTableDataset.
34471func (w WebTableDataset) MarshalJSON() ([]byte, error) {
34472	objectMap := w.Dataset.marshalInternal("WebTable")
34473	populate(objectMap, "typeProperties", w.TypeProperties)
34474	return json.Marshal(objectMap)
34475}
34476
34477// UnmarshalJSON implements the json.Unmarshaller interface for type WebTableDataset.
34478func (w *WebTableDataset) UnmarshalJSON(data []byte) error {
34479	var rawMsg map[string]json.RawMessage
34480	if err := json.Unmarshal(data, &rawMsg); err != nil {
34481		return err
34482	}
34483	for key, val := range rawMsg {
34484		var err error
34485		switch key {
34486		case "typeProperties":
34487			err = unpopulate(val, &w.TypeProperties)
34488			delete(rawMsg, key)
34489		}
34490		if err != nil {
34491			return err
34492		}
34493	}
34494	return w.Dataset.unmarshalInternal(rawMsg)
34495}
34496
34497// WebTableDatasetTypeProperties - Web table dataset properties.
34498type WebTableDatasetTypeProperties struct {
34499	// REQUIRED; The zero-based index of the table in the web page. Type: integer (or Expression with resultType integer), minimum: 0.
34500	Index interface{} `json:"index,omitempty"`
34501
34502	// The relative URL to the web page from the linked service URL. Type: string (or Expression with resultType string).
34503	Path interface{} `json:"path,omitempty"`
34504}
34505
34506// Workspace - A workspace
34507type Workspace struct {
34508	TrackedResource
34509	// Identity of the workspace
34510	Identity *ManagedIdentity `json:"identity,omitempty"`
34511
34512	// Workspace resource properties
34513	Properties *WorkspaceProperties `json:"properties,omitempty"`
34514}
34515
34516// MarshalJSON implements the json.Marshaller interface for type Workspace.
34517func (w Workspace) MarshalJSON() ([]byte, error) {
34518	objectMap := w.TrackedResource.marshalInternal()
34519	populate(objectMap, "identity", w.Identity)
34520	populate(objectMap, "properties", w.Properties)
34521	return json.Marshal(objectMap)
34522}
34523
34524// WorkspaceGetOptions contains the optional parameters for the Workspace.Get method.
34525type WorkspaceGetOptions struct {
34526	// placeholder for future optional parameters
34527}
34528
34529// WorkspaceGitRepoManagementGetGitHubAccessTokenOptions contains the optional parameters for the WorkspaceGitRepoManagement.GetGitHubAccessToken method.
34530type WorkspaceGitRepoManagementGetGitHubAccessTokenOptions struct {
34531	// Can provide a guid, which is helpful for debugging and to provide better customer support
34532	ClientRequestID *string
34533}
34534
34535// WorkspaceIdentity - Identity properties of the workspace resource.
34536type WorkspaceIdentity struct {
34537	// REQUIRED; The identity type. Currently the only supported type is 'SystemAssigned'.
34538	Type *string `json:"type,omitempty"`
34539
34540	// READ-ONLY; The principal id of the identity.
34541	PrincipalID *string `json:"principalId,omitempty" azure:"ro"`
34542
34543	// READ-ONLY; The client tenant id of the identity.
34544	TenantID *string `json:"tenantId,omitempty" azure:"ro"`
34545}
34546
34547// WorkspaceKeyDetails - Details of the customer managed key associated with the workspace
34548type WorkspaceKeyDetails struct {
34549	// Workspace Key sub-resource key vault url
34550	KeyVaultURL *string `json:"keyVaultUrl,omitempty"`
34551
34552	// Workspace Key sub-resource name
34553	Name *string `json:"name,omitempty"`
34554}
34555
34556// WorkspaceProperties - Workspace properties
34557type WorkspaceProperties struct {
34558	// Connectivity endpoints
34559	ConnectivityEndpoints map[string]*string `json:"connectivityEndpoints,omitempty"`
34560
34561	// Workspace default data lake storage account details
34562	DefaultDataLakeStorage *DataLakeStorageAccountDetails `json:"defaultDataLakeStorage,omitempty"`
34563
34564	// The encryption details of the workspace
34565	Encryption *EncryptionDetails `json:"encryption,omitempty"`
34566
34567	// Workspace managed resource group. The resource group name uniquely identifies the resource group within the user subscriptionId. The resource group name
34568	// must be no longer than 90 characters long, and
34569	// must be alphanumeric characters (Char.IsLetterOrDigit()) and '-', '_', '(', ')' and'.'. Note that the name cannot end with '.'
34570	ManagedResourceGroupName *string `json:"managedResourceGroupName,omitempty"`
34571
34572	// Setting this to 'default' will ensure that all compute for this workspace is in a virtual network managed on behalf of the user.
34573	ManagedVirtualNetwork *string `json:"managedVirtualNetwork,omitempty"`
34574
34575	// Managed Virtual Network Settings
34576	ManagedVirtualNetworkSettings *ManagedVirtualNetworkSettings `json:"managedVirtualNetworkSettings,omitempty"`
34577
34578	// Private endpoint connections to the workspace
34579	PrivateEndpointConnections []*PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"`
34580
34581	// Purview Configuration
34582	PurviewConfiguration *PurviewConfiguration `json:"purviewConfiguration,omitempty"`
34583
34584	// Login for workspace SQL active directory administrator
34585	SQLAdministratorLogin *string `json:"sqlAdministratorLogin,omitempty"`
34586
34587	// SQL administrator login password
34588	SQLAdministratorLoginPassword *string `json:"sqlAdministratorLoginPassword,omitempty"`
34589
34590	// Virtual Network profile
34591	VirtualNetworkProfile *VirtualNetworkProfile `json:"virtualNetworkProfile,omitempty"`
34592
34593	// Git integration settings
34594	WorkspaceRepositoryConfiguration *WorkspaceRepositoryConfiguration `json:"workspaceRepositoryConfiguration,omitempty"`
34595
34596	// READ-ONLY; The ADLA resource ID.
34597	AdlaResourceID *string `json:"adlaResourceId,omitempty" azure:"ro"`
34598
34599	// READ-ONLY; Workspace level configs and feature flags
34600	ExtraProperties map[string]interface{} `json:"extraProperties,omitempty" azure:"ro"`
34601
34602	// READ-ONLY; Resource provisioning state
34603	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
34604
34605	// READ-ONLY; The workspace unique identifier
34606	WorkspaceUID *string `json:"workspaceUID,omitempty" azure:"ro"`
34607}
34608
34609// MarshalJSON implements the json.Marshaller interface for type WorkspaceProperties.
34610func (w WorkspaceProperties) MarshalJSON() ([]byte, error) {
34611	objectMap := make(map[string]interface{})
34612	populate(objectMap, "adlaResourceId", w.AdlaResourceID)
34613	populate(objectMap, "connectivityEndpoints", w.ConnectivityEndpoints)
34614	populate(objectMap, "defaultDataLakeStorage", w.DefaultDataLakeStorage)
34615	populate(objectMap, "encryption", w.Encryption)
34616	populate(objectMap, "extraProperties", w.ExtraProperties)
34617	populate(objectMap, "managedResourceGroupName", w.ManagedResourceGroupName)
34618	populate(objectMap, "managedVirtualNetwork", w.ManagedVirtualNetwork)
34619	populate(objectMap, "managedVirtualNetworkSettings", w.ManagedVirtualNetworkSettings)
34620	populate(objectMap, "privateEndpointConnections", w.PrivateEndpointConnections)
34621	populate(objectMap, "provisioningState", w.ProvisioningState)
34622	populate(objectMap, "purviewConfiguration", w.PurviewConfiguration)
34623	populate(objectMap, "sqlAdministratorLogin", w.SQLAdministratorLogin)
34624	populate(objectMap, "sqlAdministratorLoginPassword", w.SQLAdministratorLoginPassword)
34625	populate(objectMap, "virtualNetworkProfile", w.VirtualNetworkProfile)
34626	populate(objectMap, "workspaceRepositoryConfiguration", w.WorkspaceRepositoryConfiguration)
34627	populate(objectMap, "workspaceUID", w.WorkspaceUID)
34628	return json.Marshal(objectMap)
34629}
34630
34631// WorkspaceRepositoryConfiguration - Git integration settings
34632type WorkspaceRepositoryConfiguration struct {
34633	// Account name
34634	AccountName *string `json:"accountName,omitempty"`
34635
34636	// Collaboration branch
34637	CollaborationBranch *string `json:"collaborationBranch,omitempty"`
34638
34639	// GitHub Enterprise host name. For example: https://github.mydomain.com
34640	HostName *string `json:"hostName,omitempty"`
34641
34642	// The last commit ID
34643	LastCommitID *string `json:"lastCommitId,omitempty"`
34644
34645	// VSTS project name
34646	ProjectName *string `json:"projectName,omitempty"`
34647
34648	// Repository name
34649	RepositoryName *string `json:"repositoryName,omitempty"`
34650
34651	// Root folder to use in the repository
34652	RootFolder *string `json:"rootFolder,omitempty"`
34653
34654	// The VSTS tenant ID
34655	TenantID *string `json:"tenantId,omitempty"`
34656
34657	// Type of workspace repositoryID configuration. Example WorkspaceVSTSConfiguration, WorkspaceGitHubConfiguration
34658	Type *string `json:"type,omitempty"`
34659}
34660
34661// WorkspaceUpdateParameters - Parameters for updating a workspace resource.
34662type WorkspaceUpdateParameters struct {
34663	// Managed service identity of the workspace.
34664	Identity *WorkspaceIdentity `json:"identity,omitempty"`
34665
34666	// The resource tags.
34667	Tags map[string]*string `json:"tags,omitempty"`
34668}
34669
34670// MarshalJSON implements the json.Marshaller interface for type WorkspaceUpdateParameters.
34671func (w WorkspaceUpdateParameters) MarshalJSON() ([]byte, error) {
34672	objectMap := make(map[string]interface{})
34673	populate(objectMap, "identity", w.Identity)
34674	populate(objectMap, "tags", w.Tags)
34675	return json.Marshal(objectMap)
34676}
34677
34678// XMLDataset - Xml dataset.
34679type XMLDataset struct {
34680	Dataset
34681	// Xml dataset properties.
34682	TypeProperties *XMLDatasetTypeProperties `json:"typeProperties,omitempty"`
34683}
34684
34685// MarshalJSON implements the json.Marshaller interface for type XMLDataset.
34686func (x XMLDataset) MarshalJSON() ([]byte, error) {
34687	objectMap := x.Dataset.marshalInternal("Xml")
34688	populate(objectMap, "typeProperties", x.TypeProperties)
34689	return json.Marshal(objectMap)
34690}
34691
34692// UnmarshalJSON implements the json.Unmarshaller interface for type XMLDataset.
34693func (x *XMLDataset) UnmarshalJSON(data []byte) error {
34694	var rawMsg map[string]json.RawMessage
34695	if err := json.Unmarshal(data, &rawMsg); err != nil {
34696		return err
34697	}
34698	for key, val := range rawMsg {
34699		var err error
34700		switch key {
34701		case "typeProperties":
34702			err = unpopulate(val, &x.TypeProperties)
34703			delete(rawMsg, key)
34704		}
34705		if err != nil {
34706			return err
34707		}
34708	}
34709	return x.Dataset.unmarshalInternal(rawMsg)
34710}
34711
34712// XMLDatasetTypeProperties - Xml dataset properties.
34713type XMLDatasetTypeProperties struct {
34714	// REQUIRED; The location of the json data storage.
34715	Location DatasetLocationClassification `json:"location,omitempty"`
34716
34717	// The data compression method used for the json dataset.
34718	Compression DatasetCompressionClassification `json:"compression,omitempty"`
34719
34720	// The code page name of the preferred encoding. If not specified, the default value is UTF-8, unless BOM denotes another Unicode encoding. Refer to the
34721	// name column of the table in the following link to
34722	// set supported values: https://msdn.microsoft.com/library/system.text.encoding.aspx. Type: string (or Expression with resultType string).
34723	EncodingName interface{} `json:"encodingName,omitempty"`
34724
34725	// The null value string. Type: string (or Expression with resultType string).
34726	NullValue interface{} `json:"nullValue,omitempty"`
34727}
34728
34729// MarshalJSON implements the json.Marshaller interface for type XMLDatasetTypeProperties.
34730func (x XMLDatasetTypeProperties) MarshalJSON() ([]byte, error) {
34731	objectMap := make(map[string]interface{})
34732	populate(objectMap, "compression", x.Compression)
34733	populate(objectMap, "encodingName", x.EncodingName)
34734	populate(objectMap, "location", x.Location)
34735	populate(objectMap, "nullValue", x.NullValue)
34736	return json.Marshal(objectMap)
34737}
34738
34739// UnmarshalJSON implements the json.Unmarshaller interface for type XMLDatasetTypeProperties.
34740func (x *XMLDatasetTypeProperties) UnmarshalJSON(data []byte) error {
34741	var rawMsg map[string]json.RawMessage
34742	if err := json.Unmarshal(data, &rawMsg); err != nil {
34743		return err
34744	}
34745	for key, val := range rawMsg {
34746		var err error
34747		switch key {
34748		case "compression":
34749			x.Compression, err = unmarshalDatasetCompressionClassification(val)
34750			delete(rawMsg, key)
34751		case "encodingName":
34752			err = unpopulate(val, &x.EncodingName)
34753			delete(rawMsg, key)
34754		case "location":
34755			x.Location, err = unmarshalDatasetLocationClassification(val)
34756			delete(rawMsg, key)
34757		case "nullValue":
34758			err = unpopulate(val, &x.NullValue)
34759			delete(rawMsg, key)
34760		}
34761		if err != nil {
34762			return err
34763		}
34764	}
34765	return nil
34766}
34767
34768// XMLReadSettings - Xml read settings.
34769type XMLReadSettings struct {
34770	FormatReadSettings
34771	// Compression settings.
34772	CompressionProperties CompressionReadSettingsClassification `json:"compressionProperties,omitempty"`
34773
34774	// Indicates whether type detection is enabled when reading the xml files. Type: boolean (or Expression with resultType boolean).
34775	DetectDataType interface{} `json:"detectDataType,omitempty"`
34776
34777	// Namespace uri to prefix mappings to override the prefixes in column names when namespace is enabled, if no prefix is defined for a namespace uri, the
34778	// prefix of xml element/attribute name in the xml
34779	// data file will be used. Example: "{"http://www.example.com/xml":"prefix"}" Type: object (or Expression with resultType object).
34780	NamespacePrefixes interface{} `json:"namespacePrefixes,omitempty"`
34781
34782	// Indicates whether namespace is enabled when reading the xml files. Type: boolean (or Expression with resultType boolean).
34783	Namespaces interface{} `json:"namespaces,omitempty"`
34784
34785	// Indicates what validation method is used when reading the xml files. Allowed values: 'none', 'xsd', or 'dtd'. Type: string (or Expression with resultType
34786	// string).
34787	ValidationMode interface{} `json:"validationMode,omitempty"`
34788}
34789
34790// MarshalJSON implements the json.Marshaller interface for type XMLReadSettings.
34791func (x XMLReadSettings) MarshalJSON() ([]byte, error) {
34792	objectMap := x.FormatReadSettings.marshalInternal("XmlReadSettings")
34793	populate(objectMap, "compressionProperties", x.CompressionProperties)
34794	populate(objectMap, "detectDataType", x.DetectDataType)
34795	populate(objectMap, "namespacePrefixes", x.NamespacePrefixes)
34796	populate(objectMap, "namespaces", x.Namespaces)
34797	populate(objectMap, "validationMode", x.ValidationMode)
34798	return json.Marshal(objectMap)
34799}
34800
34801// UnmarshalJSON implements the json.Unmarshaller interface for type XMLReadSettings.
34802func (x *XMLReadSettings) UnmarshalJSON(data []byte) error {
34803	var rawMsg map[string]json.RawMessage
34804	if err := json.Unmarshal(data, &rawMsg); err != nil {
34805		return err
34806	}
34807	for key, val := range rawMsg {
34808		var err error
34809		switch key {
34810		case "compressionProperties":
34811			x.CompressionProperties, err = unmarshalCompressionReadSettingsClassification(val)
34812			delete(rawMsg, key)
34813		case "detectDataType":
34814			err = unpopulate(val, &x.DetectDataType)
34815			delete(rawMsg, key)
34816		case "namespacePrefixes":
34817			err = unpopulate(val, &x.NamespacePrefixes)
34818			delete(rawMsg, key)
34819		case "namespaces":
34820			err = unpopulate(val, &x.Namespaces)
34821			delete(rawMsg, key)
34822		case "validationMode":
34823			err = unpopulate(val, &x.ValidationMode)
34824			delete(rawMsg, key)
34825		}
34826		if err != nil {
34827			return err
34828		}
34829	}
34830	return x.FormatReadSettings.unmarshalInternal(rawMsg)
34831}
34832
34833// XMLSource - A copy activity Xml source.
34834type XMLSource struct {
34835	CopySource
34836	// Specifies the additional columns to be added to source data. Type: array of objects (or Expression with resultType array of objects).
34837	AdditionalColumns []*AdditionalColumns `json:"additionalColumns,omitempty"`
34838
34839	// Xml format settings.
34840	FormatSettings *XMLReadSettings `json:"formatSettings,omitempty"`
34841
34842	// Xml store settings.
34843	StoreSettings StoreReadSettingsClassification `json:"storeSettings,omitempty"`
34844}
34845
34846// MarshalJSON implements the json.Marshaller interface for type XMLSource.
34847func (x XMLSource) MarshalJSON() ([]byte, error) {
34848	objectMap := x.CopySource.marshalInternal("XmlSource")
34849	populate(objectMap, "additionalColumns", x.AdditionalColumns)
34850	populate(objectMap, "formatSettings", x.FormatSettings)
34851	populate(objectMap, "storeSettings", x.StoreSettings)
34852	return json.Marshal(objectMap)
34853}
34854
34855// UnmarshalJSON implements the json.Unmarshaller interface for type XMLSource.
34856func (x *XMLSource) UnmarshalJSON(data []byte) error {
34857	var rawMsg map[string]json.RawMessage
34858	if err := json.Unmarshal(data, &rawMsg); err != nil {
34859		return err
34860	}
34861	for key, val := range rawMsg {
34862		var err error
34863		switch key {
34864		case "additionalColumns":
34865			err = unpopulate(val, &x.AdditionalColumns)
34866			delete(rawMsg, key)
34867		case "formatSettings":
34868			err = unpopulate(val, &x.FormatSettings)
34869			delete(rawMsg, key)
34870		case "storeSettings":
34871			x.StoreSettings, err = unmarshalStoreReadSettingsClassification(val)
34872			delete(rawMsg, key)
34873		}
34874		if err != nil {
34875			return err
34876		}
34877	}
34878	return x.CopySource.unmarshalInternal(rawMsg)
34879}
34880
34881// XeroLinkedService - Xero Service linked service.
34882type XeroLinkedService struct {
34883	LinkedService
34884	// REQUIRED; Xero Service linked service properties.
34885	TypeProperties *XeroLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
34886}
34887
34888// MarshalJSON implements the json.Marshaller interface for type XeroLinkedService.
34889func (x XeroLinkedService) MarshalJSON() ([]byte, error) {
34890	objectMap := x.LinkedService.marshalInternal("Xero")
34891	populate(objectMap, "typeProperties", x.TypeProperties)
34892	return json.Marshal(objectMap)
34893}
34894
34895// UnmarshalJSON implements the json.Unmarshaller interface for type XeroLinkedService.
34896func (x *XeroLinkedService) UnmarshalJSON(data []byte) error {
34897	var rawMsg map[string]json.RawMessage
34898	if err := json.Unmarshal(data, &rawMsg); err != nil {
34899		return err
34900	}
34901	for key, val := range rawMsg {
34902		var err error
34903		switch key {
34904		case "typeProperties":
34905			err = unpopulate(val, &x.TypeProperties)
34906			delete(rawMsg, key)
34907		}
34908		if err != nil {
34909			return err
34910		}
34911	}
34912	return x.LinkedService.unmarshalInternal(rawMsg)
34913}
34914
34915// XeroLinkedServiceTypeProperties - Xero Service linked service properties.
34916type XeroLinkedServiceTypeProperties struct {
34917	// REQUIRED; The endpoint of the Xero server. (i.e. api.xero.com)
34918	Host interface{} `json:"host,omitempty"`
34919
34920	// Properties used to connect to Xero. It is mutually exclusive with any other properties in the linked service. Type: object.
34921	ConnectionProperties interface{} `json:"connectionProperties,omitempty"`
34922
34923	// The consumer key associated with the Xero application.
34924	ConsumerKey SecretBaseClassification `json:"consumerKey,omitempty"`
34925
34926	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
34927	// with resultType string).
34928	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
34929
34930	// The private key from the .pem file that was generated for your Xero private application. You must include all the text from the .pem file, including
34931	// the Unix line endings( ).
34932	PrivateKey SecretBaseClassification `json:"privateKey,omitempty"`
34933
34934	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
34935	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
34936
34937	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
34938	// is true.
34939	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
34940
34941	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
34942	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
34943}
34944
34945// MarshalJSON implements the json.Marshaller interface for type XeroLinkedServiceTypeProperties.
34946func (x XeroLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
34947	objectMap := make(map[string]interface{})
34948	populate(objectMap, "connectionProperties", x.ConnectionProperties)
34949	populate(objectMap, "consumerKey", x.ConsumerKey)
34950	populate(objectMap, "encryptedCredential", x.EncryptedCredential)
34951	populate(objectMap, "host", x.Host)
34952	populate(objectMap, "privateKey", x.PrivateKey)
34953	populate(objectMap, "useEncryptedEndpoints", x.UseEncryptedEndpoints)
34954	populate(objectMap, "useHostVerification", x.UseHostVerification)
34955	populate(objectMap, "usePeerVerification", x.UsePeerVerification)
34956	return json.Marshal(objectMap)
34957}
34958
34959// UnmarshalJSON implements the json.Unmarshaller interface for type XeroLinkedServiceTypeProperties.
34960func (x *XeroLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
34961	var rawMsg map[string]json.RawMessage
34962	if err := json.Unmarshal(data, &rawMsg); err != nil {
34963		return err
34964	}
34965	for key, val := range rawMsg {
34966		var err error
34967		switch key {
34968		case "connectionProperties":
34969			err = unpopulate(val, &x.ConnectionProperties)
34970			delete(rawMsg, key)
34971		case "consumerKey":
34972			x.ConsumerKey, err = unmarshalSecretBaseClassification(val)
34973			delete(rawMsg, key)
34974		case "encryptedCredential":
34975			err = unpopulate(val, &x.EncryptedCredential)
34976			delete(rawMsg, key)
34977		case "host":
34978			err = unpopulate(val, &x.Host)
34979			delete(rawMsg, key)
34980		case "privateKey":
34981			x.PrivateKey, err = unmarshalSecretBaseClassification(val)
34982			delete(rawMsg, key)
34983		case "useEncryptedEndpoints":
34984			err = unpopulate(val, &x.UseEncryptedEndpoints)
34985			delete(rawMsg, key)
34986		case "useHostVerification":
34987			err = unpopulate(val, &x.UseHostVerification)
34988			delete(rawMsg, key)
34989		case "usePeerVerification":
34990			err = unpopulate(val, &x.UsePeerVerification)
34991			delete(rawMsg, key)
34992		}
34993		if err != nil {
34994			return err
34995		}
34996	}
34997	return nil
34998}
34999
35000// XeroObjectDataset - Xero Service dataset.
35001type XeroObjectDataset struct {
35002	Dataset
35003	// Properties specific to this dataset type.
35004	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
35005}
35006
35007// MarshalJSON implements the json.Marshaller interface for type XeroObjectDataset.
35008func (x XeroObjectDataset) MarshalJSON() ([]byte, error) {
35009	objectMap := x.Dataset.marshalInternal("XeroObject")
35010	populate(objectMap, "typeProperties", x.TypeProperties)
35011	return json.Marshal(objectMap)
35012}
35013
35014// UnmarshalJSON implements the json.Unmarshaller interface for type XeroObjectDataset.
35015func (x *XeroObjectDataset) UnmarshalJSON(data []byte) error {
35016	var rawMsg map[string]json.RawMessage
35017	if err := json.Unmarshal(data, &rawMsg); err != nil {
35018		return err
35019	}
35020	for key, val := range rawMsg {
35021		var err error
35022		switch key {
35023		case "typeProperties":
35024			err = unpopulate(val, &x.TypeProperties)
35025			delete(rawMsg, key)
35026		}
35027		if err != nil {
35028			return err
35029		}
35030	}
35031	return x.Dataset.unmarshalInternal(rawMsg)
35032}
35033
35034// XeroSource - A copy activity Xero Service source.
35035type XeroSource struct {
35036	TabularSource
35037	// A query to retrieve data from source. Type: string (or Expression with resultType string).
35038	Query interface{} `json:"query,omitempty"`
35039}
35040
35041// MarshalJSON implements the json.Marshaller interface for type XeroSource.
35042func (x XeroSource) MarshalJSON() ([]byte, error) {
35043	objectMap := x.TabularSource.marshalInternal("XeroSource")
35044	populate(objectMap, "query", x.Query)
35045	return json.Marshal(objectMap)
35046}
35047
35048// UnmarshalJSON implements the json.Unmarshaller interface for type XeroSource.
35049func (x *XeroSource) UnmarshalJSON(data []byte) error {
35050	var rawMsg map[string]json.RawMessage
35051	if err := json.Unmarshal(data, &rawMsg); err != nil {
35052		return err
35053	}
35054	for key, val := range rawMsg {
35055		var err error
35056		switch key {
35057		case "query":
35058			err = unpopulate(val, &x.Query)
35059			delete(rawMsg, key)
35060		}
35061		if err != nil {
35062			return err
35063		}
35064	}
35065	return x.TabularSource.unmarshalInternal(rawMsg)
35066}
35067
35068// ZipDeflateReadSettings - The ZipDeflate compression read settings.
35069type ZipDeflateReadSettings struct {
35070	CompressionReadSettings
35071	// Preserve the zip file name as folder path. Type: boolean (or Expression with resultType boolean).
35072	PreserveZipFileNameAsFolder interface{} `json:"preserveZipFileNameAsFolder,omitempty"`
35073}
35074
35075// MarshalJSON implements the json.Marshaller interface for type ZipDeflateReadSettings.
35076func (z ZipDeflateReadSettings) MarshalJSON() ([]byte, error) {
35077	objectMap := z.CompressionReadSettings.marshalInternal("ZipDeflateReadSettings")
35078	populate(objectMap, "preserveZipFileNameAsFolder", z.PreserveZipFileNameAsFolder)
35079	return json.Marshal(objectMap)
35080}
35081
35082// UnmarshalJSON implements the json.Unmarshaller interface for type ZipDeflateReadSettings.
35083func (z *ZipDeflateReadSettings) UnmarshalJSON(data []byte) error {
35084	var rawMsg map[string]json.RawMessage
35085	if err := json.Unmarshal(data, &rawMsg); err != nil {
35086		return err
35087	}
35088	for key, val := range rawMsg {
35089		var err error
35090		switch key {
35091		case "preserveZipFileNameAsFolder":
35092			err = unpopulate(val, &z.PreserveZipFileNameAsFolder)
35093			delete(rawMsg, key)
35094		}
35095		if err != nil {
35096			return err
35097		}
35098	}
35099	return z.CompressionReadSettings.unmarshalInternal(rawMsg)
35100}
35101
35102// ZohoLinkedService - Zoho server linked service.
35103type ZohoLinkedService struct {
35104	LinkedService
35105	// REQUIRED; Zoho server linked service properties.
35106	TypeProperties *ZohoLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
35107}
35108
35109// MarshalJSON implements the json.Marshaller interface for type ZohoLinkedService.
35110func (z ZohoLinkedService) MarshalJSON() ([]byte, error) {
35111	objectMap := z.LinkedService.marshalInternal("Zoho")
35112	populate(objectMap, "typeProperties", z.TypeProperties)
35113	return json.Marshal(objectMap)
35114}
35115
35116// UnmarshalJSON implements the json.Unmarshaller interface for type ZohoLinkedService.
35117func (z *ZohoLinkedService) UnmarshalJSON(data []byte) error {
35118	var rawMsg map[string]json.RawMessage
35119	if err := json.Unmarshal(data, &rawMsg); err != nil {
35120		return err
35121	}
35122	for key, val := range rawMsg {
35123		var err error
35124		switch key {
35125		case "typeProperties":
35126			err = unpopulate(val, &z.TypeProperties)
35127			delete(rawMsg, key)
35128		}
35129		if err != nil {
35130			return err
35131		}
35132	}
35133	return z.LinkedService.unmarshalInternal(rawMsg)
35134}
35135
35136// ZohoLinkedServiceTypeProperties - Zoho server linked service properties.
35137type ZohoLinkedServiceTypeProperties struct {
35138	// REQUIRED; The endpoint of the Zoho server. (i.e. crm.zoho.com/crm/private)
35139	Endpoint interface{} `json:"endpoint,omitempty"`
35140
35141	// The access token for Zoho authentication.
35142	AccessToken SecretBaseClassification `json:"accessToken,omitempty"`
35143
35144	// Properties used to connect to Zoho. It is mutually exclusive with any other properties in the linked service. Type: object.
35145	ConnectionProperties interface{} `json:"connectionProperties,omitempty"`
35146
35147	// The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression
35148	// with resultType string).
35149	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
35150
35151	// Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
35152	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
35153
35154	// Specifies whether to require the host name in the server's certificate to match the host name of the server when connecting over SSL. The default value
35155	// is true.
35156	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
35157
35158	// Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
35159	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
35160}
35161
35162// MarshalJSON implements the json.Marshaller interface for type ZohoLinkedServiceTypeProperties.
35163func (z ZohoLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
35164	objectMap := make(map[string]interface{})
35165	populate(objectMap, "accessToken", z.AccessToken)
35166	populate(objectMap, "connectionProperties", z.ConnectionProperties)
35167	populate(objectMap, "encryptedCredential", z.EncryptedCredential)
35168	populate(objectMap, "endpoint", z.Endpoint)
35169	populate(objectMap, "useEncryptedEndpoints", z.UseEncryptedEndpoints)
35170	populate(objectMap, "useHostVerification", z.UseHostVerification)
35171	populate(objectMap, "usePeerVerification", z.UsePeerVerification)
35172	return json.Marshal(objectMap)
35173}
35174
35175// UnmarshalJSON implements the json.Unmarshaller interface for type ZohoLinkedServiceTypeProperties.
35176func (z *ZohoLinkedServiceTypeProperties) UnmarshalJSON(data []byte) error {
35177	var rawMsg map[string]json.RawMessage
35178	if err := json.Unmarshal(data, &rawMsg); err != nil {
35179		return err
35180	}
35181	for key, val := range rawMsg {
35182		var err error
35183		switch key {
35184		case "accessToken":
35185			z.AccessToken, err = unmarshalSecretBaseClassification(val)
35186			delete(rawMsg, key)
35187		case "connectionProperties":
35188			err = unpopulate(val, &z.ConnectionProperties)
35189			delete(rawMsg, key)
35190		case "encryptedCredential":
35191			err = unpopulate(val, &z.EncryptedCredential)
35192			delete(rawMsg, key)
35193		case "endpoint":
35194			err = unpopulate(val, &z.Endpoint)
35195			delete(rawMsg, key)
35196		case "useEncryptedEndpoints":
35197			err = unpopulate(val, &z.UseEncryptedEndpoints)
35198			delete(rawMsg, key)
35199		case "useHostVerification":
35200			err = unpopulate(val, &z.UseHostVerification)
35201			delete(rawMsg, key)
35202		case "usePeerVerification":
35203			err = unpopulate(val, &z.UsePeerVerification)
35204			delete(rawMsg, key)
35205		}
35206		if err != nil {
35207			return err
35208		}
35209	}
35210	return nil
35211}
35212
35213// ZohoObjectDataset - Zoho server dataset.
35214type ZohoObjectDataset struct {
35215	Dataset
35216	// Properties specific to this dataset type.
35217	TypeProperties *GenericDatasetTypeProperties `json:"typeProperties,omitempty"`
35218}
35219
35220// MarshalJSON implements the json.Marshaller interface for type ZohoObjectDataset.
35221func (z ZohoObjectDataset) MarshalJSON() ([]byte, error) {
35222	objectMap := z.Dataset.marshalInternal("ZohoObject")
35223	populate(objectMap, "typeProperties", z.TypeProperties)
35224	return json.Marshal(objectMap)
35225}
35226
35227// UnmarshalJSON implements the json.Unmarshaller interface for type ZohoObjectDataset.
35228func (z *ZohoObjectDataset) UnmarshalJSON(data []byte) error {
35229	var rawMsg map[string]json.RawMessage
35230	if err := json.Unmarshal(data, &rawMsg); err != nil {
35231		return err
35232	}
35233	for key, val := range rawMsg {
35234		var err error
35235		switch key {
35236		case "typeProperties":
35237			err = unpopulate(val, &z.TypeProperties)
35238			delete(rawMsg, key)
35239		}
35240		if err != nil {
35241			return err
35242		}
35243	}
35244	return z.Dataset.unmarshalInternal(rawMsg)
35245}
35246
35247// ZohoSource - A copy activity Zoho server source.
35248type ZohoSource struct {
35249	TabularSource
35250	// A query to retrieve data from source. Type: string (or Expression with resultType string).
35251	Query interface{} `json:"query,omitempty"`
35252}
35253
35254// MarshalJSON implements the json.Marshaller interface for type ZohoSource.
35255func (z ZohoSource) MarshalJSON() ([]byte, error) {
35256	objectMap := z.TabularSource.marshalInternal("ZohoSource")
35257	populate(objectMap, "query", z.Query)
35258	return json.Marshal(objectMap)
35259}
35260
35261// UnmarshalJSON implements the json.Unmarshaller interface for type ZohoSource.
35262func (z *ZohoSource) UnmarshalJSON(data []byte) error {
35263	var rawMsg map[string]json.RawMessage
35264	if err := json.Unmarshal(data, &rawMsg); err != nil {
35265		return err
35266	}
35267	for key, val := range rawMsg {
35268		var err error
35269		switch key {
35270		case "query":
35271			err = unpopulate(val, &z.Query)
35272			delete(rawMsg, key)
35273		}
35274		if err != nil {
35275			return err
35276		}
35277	}
35278	return z.TabularSource.unmarshalInternal(rawMsg)
35279}
35280
35281func populate(m map[string]interface{}, k string, v interface{}) {
35282	if v == nil {
35283		return
35284	} else if azcore.IsNullValue(v) {
35285		m[k] = nil
35286	} else if !reflect.ValueOf(v).IsNil() {
35287		m[k] = v
35288	}
35289}
35290
35291func unpopulate(data json.RawMessage, v interface{}) error {
35292	if data == nil {
35293		return nil
35294	}
35295	return json.Unmarshal(data, v)
35296}
35297