package datafactory

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

import (
	"context"
	"encoding/json"
	"github.com/Azure/go-autorest/autorest"
	"github.com/Azure/go-autorest/autorest/azure"
	"github.com/Azure/go-autorest/autorest/date"
	"github.com/Azure/go-autorest/autorest/to"
	"github.com/Azure/go-autorest/tracing"
	"github.com/gofrs/uuid"
	"net/http"
)

// The package's fully qualified name.
const fqdn = "github.com/Azure/azure-sdk-for-go/services/preview/datafactory/mgmt/2017-09-01-preview/datafactory"

// BasicActivity a pipeline activity.
type BasicActivity interface {
	AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool)
	AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool)
	AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool)
	AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool)
	AsGetMetadataActivity() (*GetMetadataActivity, bool)
	AsWebActivity() (*WebActivity, bool)
	AsLookupActivity() (*LookupActivity, bool)
	AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool)
	AsCustomActivity() (*CustomActivity, bool)
	AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool)
	AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool)
	AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool)
	AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool)
	AsHDInsightPigActivity() (*HDInsightPigActivity, bool)
	AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool)
	AsCopyActivity() (*CopyActivity, bool)
	AsExecutionActivity() (*ExecutionActivity, bool)
	AsBasicExecutionActivity() (BasicExecutionActivity, bool)
	AsFilterActivity() (*FilterActivity, bool)
	AsUntilActivity() (*UntilActivity, bool)
	AsWaitActivity() (*WaitActivity, bool)
	AsForEachActivity() (*ForEachActivity, bool)
	AsIfConditionActivity() (*IfConditionActivity, bool)
	AsExecutePipelineActivity() (*ExecutePipelineActivity, bool)
	AsControlActivity() (*ControlActivity, bool)
	AsBasicControlActivity() (BasicControlActivity, bool)
	AsActivity() (*Activity, bool)
}

// Activity a pipeline activity.
type Activity struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

func unmarshalBasicActivity(body []byte) (BasicActivity, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeDatabricksNotebook):
		var dna DatabricksNotebookActivity
		err := json.Unmarshal(body, &dna)
		return dna, err
	case string(TypeDataLakeAnalyticsUSQL):
		var dlaua DataLakeAnalyticsUSQLActivity
		err := json.Unmarshal(body, &dlaua)
		return dlaua, err
	case string(TypeAzureMLUpdateResource):
		var amura AzureMLUpdateResourceActivity
		err := json.Unmarshal(body, &amura)
		return amura, err
	case string(TypeAzureMLBatchExecution):
		var ambea AzureMLBatchExecutionActivity
		err := json.Unmarshal(body, &ambea)
		return ambea, err
	case string(TypeGetMetadata):
		var gma GetMetadataActivity
		err := json.Unmarshal(body, &gma)
		return gma, err
	case string(TypeWebActivity):
		var wa WebActivity
		err := json.Unmarshal(body, &wa)
		return wa, err
	case string(TypeLookup):
		var la LookupActivity
		err := json.Unmarshal(body, &la)
		return la, err
	case string(TypeSQLServerStoredProcedure):
		var ssspa SQLServerStoredProcedureActivity
		err := json.Unmarshal(body, &ssspa)
		return ssspa, err
	case string(TypeCustom):
		var ca CustomActivity
		err := json.Unmarshal(body, &ca)
		return ca, err
	case string(TypeExecuteSSISPackage):
		var espa ExecuteSSISPackageActivity
		err := json.Unmarshal(body, &espa)
		return espa, err
	case string(TypeHDInsightSpark):
		var hisa HDInsightSparkActivity
		err := json.Unmarshal(body, &hisa)
		return hisa, err
	case string(TypeHDInsightStreaming):
		var hisa HDInsightStreamingActivity
		err := json.Unmarshal(body, &hisa)
		return hisa, err
	case string(TypeHDInsightMapReduce):
		var himra HDInsightMapReduceActivity
		err := json.Unmarshal(body, &himra)
		return himra, err
	case string(TypeHDInsightPig):
		var hipa HDInsightPigActivity
		err := json.Unmarshal(body, &hipa)
		return hipa, err
	case string(TypeHDInsightHive):
		var hiha HDInsightHiveActivity
		err := json.Unmarshal(body, &hiha)
		return hiha, err
	case string(TypeCopy):
		var ca CopyActivity
		err := json.Unmarshal(body, &ca)
		return ca, err
	case string(TypeExecution):
		var ea ExecutionActivity
		err := json.Unmarshal(body, &ea)
		return ea, err
	case string(TypeFilter):
		var fa FilterActivity
		err := json.Unmarshal(body, &fa)
		return fa, err
	case string(TypeUntil):
		var ua UntilActivity
		err := json.Unmarshal(body, &ua)
		return ua, err
	case string(TypeWait):
		var wa WaitActivity
		err := json.Unmarshal(body, &wa)
		return wa, err
	case string(TypeForEach):
		var fea ForEachActivity
		err := json.Unmarshal(body, &fea)
		return fea, err
	case string(TypeIfCondition):
		var ica IfConditionActivity
		err := json.Unmarshal(body, &ica)
		return ica, err
	case string(TypeExecutePipeline):
		var epa ExecutePipelineActivity
		err := json.Unmarshal(body, &epa)
		return epa, err
	case string(TypeContainer):
		var ca ControlActivity
		err := json.Unmarshal(body, &ca)
		return ca, err
	default:
		var a Activity
		err := json.Unmarshal(body, &a)
		return a, err
	}
}
func unmarshalBasicActivityArray(body []byte) ([]BasicActivity, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	aArray := make([]BasicActivity, len(rawMessages))

	for index, rawMessage := range rawMessages {
		a, err := unmarshalBasicActivity(*rawMessage)
		if err != nil {
			return nil, err
		}
		aArray[index] = a
	}
	return aArray, nil
}

// MarshalJSON is the custom marshaler for Activity.
func (a Activity) MarshalJSON() ([]byte, error) {
	a.Type = TypeActivity
	objectMap := make(map[string]interface{})
	if a.Name != nil {
		objectMap["name"] = a.Name
	}
	if a.Description != nil {
		objectMap["description"] = a.Description
	}
	if a.DependsOn != nil {
		objectMap["dependsOn"] = a.DependsOn
	}
	if a.Type != "" {
		objectMap["type"] = a.Type
	}
	for k, v := range a.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for Activity.
func (a Activity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for Activity.
func (a Activity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for Activity.
func (a Activity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for Activity.
func (a Activity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for Activity.
func (a Activity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for Activity.
func (a Activity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for Activity.
func (a Activity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for Activity.
func (a Activity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for Activity.
func (a Activity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for Activity.
func (a Activity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for Activity.
func (a Activity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for Activity.
func (a Activity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for Activity.
func (a Activity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for Activity.
func (a Activity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for Activity.
func (a Activity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for Activity.
func (a Activity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for Activity.
func (a Activity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for Activity.
func (a Activity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return nil, false
}

// AsFilterActivity is the BasicActivity implementation for Activity.
func (a Activity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for Activity.
func (a Activity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for Activity.
func (a Activity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for Activity.
func (a Activity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for Activity.
func (a Activity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for Activity.
func (a Activity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for Activity.
func (a Activity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for Activity.
func (a Activity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for Activity.
func (a Activity) AsActivity() (*Activity, bool) {
	return &a, true
}

// AsBasicActivity is the BasicActivity implementation for Activity.
func (a Activity) AsBasicActivity() (BasicActivity, bool) {
	return &a, true
}

// UnmarshalJSON is the custom unmarshaler for Activity struct.
func (a *Activity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if a.AdditionalProperties == nil {
					a.AdditionalProperties = make(map[string]interface{})
				}
				a.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				a.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				a.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				a.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				a.Type = typeVar
			}
		}
	}

	return nil
}

// ActivityDependency activity dependency information.
type ActivityDependency struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Activity - Activity name.
	Activity *string `json:"activity,omitempty"`
	// DependencyConditions - Match-Condition for the dependency.
	DependencyConditions *[]DependencyCondition `json:"dependencyConditions,omitempty"`
}

// MarshalJSON is the custom marshaler for ActivityDependency.
func (ad ActivityDependency) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if ad.Activity != nil {
		objectMap["activity"] = ad.Activity
	}
	if ad.DependencyConditions != nil {
		objectMap["dependencyConditions"] = ad.DependencyConditions
	}
	for k, v := range ad.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for ActivityDependency struct.
func (ad *ActivityDependency) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ad.AdditionalProperties == nil {
					ad.AdditionalProperties = make(map[string]interface{})
				}
				ad.AdditionalProperties[k] = additionalProperties
			}
		case "activity":
			if v != nil {
				var activity string
				err = json.Unmarshal(*v, &activity)
				if err != nil {
					return err
				}
				ad.Activity = &activity
			}
		case "dependencyConditions":
			if v != nil {
				var dependencyConditions []DependencyCondition
				err = json.Unmarshal(*v, &dependencyConditions)
				if err != nil {
					return err
				}
				ad.DependencyConditions = &dependencyConditions
			}
		}
	}

	return nil
}

// ActivityPolicy execution policy for an activity.
type ActivityPolicy struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Timeout - 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])).
	Timeout interface{} `json:"timeout,omitempty"`
	// Retry - Maximum ordinary retry attempts. Default is 0. Type: integer (or Expression with resultType integer), minimum: 0.
	Retry interface{} `json:"retry,omitempty"`
	// RetryIntervalInSeconds - Interval between each retry attempt (in seconds). The default is 30 sec.
	RetryIntervalInSeconds *int32 `json:"retryIntervalInSeconds,omitempty"`
	// SecureOutput - When set to true, Output from activity is considered as secure and will not be logged to monitoring.
	SecureOutput *bool `json:"secureOutput,omitempty"`
}

// MarshalJSON is the custom marshaler for ActivityPolicy.
func (ap ActivityPolicy) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if ap.Timeout != nil {
		objectMap["timeout"] = ap.Timeout
	}
	if ap.Retry != nil {
		objectMap["retry"] = ap.Retry
	}
	if ap.RetryIntervalInSeconds != nil {
		objectMap["retryIntervalInSeconds"] = ap.RetryIntervalInSeconds
	}
	if ap.SecureOutput != nil {
		objectMap["secureOutput"] = ap.SecureOutput
	}
	for k, v := range ap.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for ActivityPolicy struct.
func (ap *ActivityPolicy) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ap.AdditionalProperties == nil {
					ap.AdditionalProperties = make(map[string]interface{})
				}
				ap.AdditionalProperties[k] = additionalProperties
			}
		case "timeout":
			if v != nil {
				var timeout interface{}
				err = json.Unmarshal(*v, &timeout)
				if err != nil {
					return err
				}
				ap.Timeout = timeout
			}
		case "retry":
			if v != nil {
				var retry interface{}
				err = json.Unmarshal(*v, &retry)
				if err != nil {
					return err
				}
				ap.Retry = retry
			}
		case "retryIntervalInSeconds":
			if v != nil {
				var retryIntervalInSeconds int32
				err = json.Unmarshal(*v, &retryIntervalInSeconds)
				if err != nil {
					return err
				}
				ap.RetryIntervalInSeconds = &retryIntervalInSeconds
			}
		case "secureOutput":
			if v != nil {
				var secureOutput bool
				err = json.Unmarshal(*v, &secureOutput)
				if err != nil {
					return err
				}
				ap.SecureOutput = &secureOutput
			}
		}
	}

	return nil
}

// ActivityRun information about an activity run in a pipeline.
type ActivityRun struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// PipelineName - READ-ONLY; The name of the pipeline.
	PipelineName *string `json:"pipelineName,omitempty"`
	// PipelineRunID - READ-ONLY; The id of the pipeline run.
	PipelineRunID *string `json:"pipelineRunId,omitempty"`
	// ActivityName - READ-ONLY; The name of the activity.
	ActivityName *string `json:"activityName,omitempty"`
	// ActivityType - READ-ONLY; The type of the activity.
	ActivityType *string `json:"activityType,omitempty"`
	// ActivityRunID - READ-ONLY; The id of the activity run.
	ActivityRunID *string `json:"activityRunId,omitempty"`
	// LinkedServiceName - READ-ONLY; The name of the compute linked service.
	LinkedServiceName *string `json:"linkedServiceName,omitempty"`
	// Status - READ-ONLY; The status of the activity run.
	Status *string `json:"status,omitempty"`
	// ActivityRunStart - READ-ONLY; The start time of the activity run in 'ISO 8601' format.
	ActivityRunStart *date.Time `json:"activityRunStart,omitempty"`
	// ActivityRunEnd - READ-ONLY; The end time of the activity run in 'ISO 8601' format.
	ActivityRunEnd *date.Time `json:"activityRunEnd,omitempty"`
	// DurationInMs - READ-ONLY; The duration of the activity run.
	DurationInMs *int32 `json:"durationInMs,omitempty"`
	// Input - READ-ONLY; The input for the activity.
	Input interface{} `json:"input,omitempty"`
	// Output - READ-ONLY; The output for the activity.
	Output interface{} `json:"output,omitempty"`
	// Error - READ-ONLY; The error if any from the activity run.
	Error interface{} `json:"error,omitempty"`
}

// MarshalJSON is the custom marshaler for ActivityRun.
func (ar ActivityRun) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	for k, v := range ar.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for ActivityRun struct.
func (ar *ActivityRun) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ar.AdditionalProperties == nil {
					ar.AdditionalProperties = make(map[string]interface{})
				}
				ar.AdditionalProperties[k] = additionalProperties
			}
		case "pipelineName":
			if v != nil {
				var pipelineName string
				err = json.Unmarshal(*v, &pipelineName)
				if err != nil {
					return err
				}
				ar.PipelineName = &pipelineName
			}
		case "pipelineRunId":
			if v != nil {
				var pipelineRunID string
				err = json.Unmarshal(*v, &pipelineRunID)
				if err != nil {
					return err
				}
				ar.PipelineRunID = &pipelineRunID
			}
		case "activityName":
			if v != nil {
				var activityName string
				err = json.Unmarshal(*v, &activityName)
				if err != nil {
					return err
				}
				ar.ActivityName = &activityName
			}
		case "activityType":
			if v != nil {
				var activityType string
				err = json.Unmarshal(*v, &activityType)
				if err != nil {
					return err
				}
				ar.ActivityType = &activityType
			}
		case "activityRunId":
			if v != nil {
				var activityRunID string
				err = json.Unmarshal(*v, &activityRunID)
				if err != nil {
					return err
				}
				ar.ActivityRunID = &activityRunID
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName string
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				ar.LinkedServiceName = &linkedServiceName
			}
		case "status":
			if v != nil {
				var status string
				err = json.Unmarshal(*v, &status)
				if err != nil {
					return err
				}
				ar.Status = &status
			}
		case "activityRunStart":
			if v != nil {
				var activityRunStart date.Time
				err = json.Unmarshal(*v, &activityRunStart)
				if err != nil {
					return err
				}
				ar.ActivityRunStart = &activityRunStart
			}
		case "activityRunEnd":
			if v != nil {
				var activityRunEnd date.Time
				err = json.Unmarshal(*v, &activityRunEnd)
				if err != nil {
					return err
				}
				ar.ActivityRunEnd = &activityRunEnd
			}
		case "durationInMs":
			if v != nil {
				var durationInMs int32
				err = json.Unmarshal(*v, &durationInMs)
				if err != nil {
					return err
				}
				ar.DurationInMs = &durationInMs
			}
		case "input":
			if v != nil {
				var input interface{}
				err = json.Unmarshal(*v, &input)
				if err != nil {
					return err
				}
				ar.Input = input
			}
		case "output":
			if v != nil {
				var output interface{}
				err = json.Unmarshal(*v, &output)
				if err != nil {
					return err
				}
				ar.Output = output
			}
		case "error":
			if v != nil {
				var errorVar interface{}
				err = json.Unmarshal(*v, &errorVar)
				if err != nil {
					return err
				}
				ar.Error = errorVar
			}
		}
	}

	return nil
}

// ActivityRunsListResponse a list activity runs.
type ActivityRunsListResponse struct {
	autorest.Response `json:"-"`
	// Value - List of activity runs.
	Value *[]ActivityRun `json:"value,omitempty"`
	// NextLink - The link to the next page of results, if any remaining results exist.
	NextLink *string `json:"nextLink,omitempty"`
}

// ActivityRunsListResponseIterator provides access to a complete listing of ActivityRun values.
type ActivityRunsListResponseIterator struct {
	i    int
	page ActivityRunsListResponsePage
}

// NextWithContext advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
func (iter *ActivityRunsListResponseIterator) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/ActivityRunsListResponseIterator.NextWithContext")
		defer func() {
			sc := -1
			if iter.Response().Response.Response != nil {
				sc = iter.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	iter.i++
	if iter.i < len(iter.page.Values()) {
		return nil
	}
	err = iter.page.NextWithContext(ctx)
	if err != nil {
		iter.i--
		return err
	}
	iter.i = 0
	return nil
}

// Next advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (iter *ActivityRunsListResponseIterator) Next() error {
	return iter.NextWithContext(context.Background())
}

// NotDone returns true if the enumeration should be started or is not yet complete.
func (iter ActivityRunsListResponseIterator) NotDone() bool {
	return iter.page.NotDone() && iter.i < len(iter.page.Values())
}

// Response returns the raw server response from the last page request.
func (iter ActivityRunsListResponseIterator) Response() ActivityRunsListResponse {
	return iter.page.Response()
}

// Value returns the current value or a zero-initialized value if the
// iterator has advanced beyond the end of the collection.
func (iter ActivityRunsListResponseIterator) Value() ActivityRun {
	if !iter.page.NotDone() {
		return ActivityRun{}
	}
	return iter.page.Values()[iter.i]
}

// Creates a new instance of the ActivityRunsListResponseIterator type.
func NewActivityRunsListResponseIterator(page ActivityRunsListResponsePage) ActivityRunsListResponseIterator {
	return ActivityRunsListResponseIterator{page: page}
}

// IsEmpty returns true if the ListResult contains no values.
func (arlr ActivityRunsListResponse) IsEmpty() bool {
	return arlr.Value == nil || len(*arlr.Value) == 0
}

// hasNextLink returns true if the NextLink is not empty.
func (arlr ActivityRunsListResponse) hasNextLink() bool {
	return arlr.NextLink != nil && len(*arlr.NextLink) != 0
}

// activityRunsListResponsePreparer prepares a request to retrieve the next set of results.
// It returns nil if no more results exist.
func (arlr ActivityRunsListResponse) activityRunsListResponsePreparer(ctx context.Context) (*http.Request, error) {
	if !arlr.hasNextLink() {
		return nil, nil
	}
	return autorest.Prepare((&http.Request{}).WithContext(ctx),
		autorest.AsJSON(),
		autorest.AsGet(),
		autorest.WithBaseURL(to.String(arlr.NextLink)))
}

// ActivityRunsListResponsePage contains a page of ActivityRun values.
type ActivityRunsListResponsePage struct {
	fn   func(context.Context, ActivityRunsListResponse) (ActivityRunsListResponse, error)
	arlr ActivityRunsListResponse
}

// NextWithContext advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
func (page *ActivityRunsListResponsePage) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/ActivityRunsListResponsePage.NextWithContext")
		defer func() {
			sc := -1
			if page.Response().Response.Response != nil {
				sc = page.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	for {
		next, err := page.fn(ctx, page.arlr)
		if err != nil {
			return err
		}
		page.arlr = next
		if !next.hasNextLink() || !next.IsEmpty() {
			break
		}
	}
	return nil
}

// Next advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (page *ActivityRunsListResponsePage) Next() error {
	return page.NextWithContext(context.Background())
}

// NotDone returns true if the page enumeration should be started or is not yet complete.
func (page ActivityRunsListResponsePage) NotDone() bool {
	return !page.arlr.IsEmpty()
}

// Response returns the raw server response from the last page request.
func (page ActivityRunsListResponsePage) Response() ActivityRunsListResponse {
	return page.arlr
}

// Values returns the slice of values for the current page or nil if there are no values.
func (page ActivityRunsListResponsePage) Values() []ActivityRun {
	if page.arlr.IsEmpty() {
		return nil
	}
	return *page.arlr.Value
}

// Creates a new instance of the ActivityRunsListResponsePage type.
func NewActivityRunsListResponsePage(cur ActivityRunsListResponse, getNextPage func(context.Context, ActivityRunsListResponse) (ActivityRunsListResponse, error)) ActivityRunsListResponsePage {
	return ActivityRunsListResponsePage{
		fn:   getNextPage,
		arlr: cur,
	}
}

// AmazonMWSLinkedService amazon Marketplace Web Service linked service.
type AmazonMWSLinkedService struct {
	// AmazonMWSLinkedServiceTypeProperties - Amazon Marketplace Web Service linked service properties.
	*AmazonMWSLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) MarshalJSON() ([]byte, error) {
	amls.Type = TypeAmazonMWS
	objectMap := make(map[string]interface{})
	if amls.AmazonMWSLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = amls.AmazonMWSLinkedServiceTypeProperties
	}
	if amls.ConnectVia != nil {
		objectMap["connectVia"] = amls.ConnectVia
	}
	if amls.Description != nil {
		objectMap["description"] = amls.Description
	}
	if amls.Parameters != nil {
		objectMap["parameters"] = amls.Parameters
	}
	if amls.Annotations != nil {
		objectMap["annotations"] = amls.Annotations
	}
	if amls.Type != "" {
		objectMap["type"] = amls.Type
	}
	for k, v := range amls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return &amls, true
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AmazonMWSLinkedService.
func (amls AmazonMWSLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &amls, true
}

// UnmarshalJSON is the custom unmarshaler for AmazonMWSLinkedService struct.
func (amls *AmazonMWSLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var amazonMWSLinkedServiceTypeProperties AmazonMWSLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &amazonMWSLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				amls.AmazonMWSLinkedServiceTypeProperties = &amazonMWSLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if amls.AdditionalProperties == nil {
					amls.AdditionalProperties = make(map[string]interface{})
				}
				amls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				amls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				amls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				amls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				amls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				amls.Type = typeVar
			}
		}
	}

	return nil
}

// AmazonMWSLinkedServiceTypeProperties amazon Marketplace Web Service linked service properties.
type AmazonMWSLinkedServiceTypeProperties struct {
	// Endpoint - The endpoint of the Amazon MWS server, (i.e. mws.amazonservices.com)
	Endpoint interface{} `json:"endpoint,omitempty"`
	// MarketplaceID - The Amazon Marketplace ID you want to retrieve data from. To retrieve data from multiple Marketplace IDs, separate them with a comma (,). (i.e. A2EUQ1WTGCTBG2)
	MarketplaceID interface{} `json:"marketplaceID,omitempty"`
	// SellerID - The Amazon seller ID.
	SellerID interface{} `json:"sellerID,omitempty"`
	// MwsAuthToken - The Amazon MWS authentication token.
	MwsAuthToken BasicSecretBase `json:"mwsAuthToken,omitempty"`
	// AccessKeyID - The access key id used to access data.
	AccessKeyID interface{} `json:"accessKeyId,omitempty"`
	// SecretKey - The secret key used to access data.
	SecretKey BasicSecretBase `json:"secretKey,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true.
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AmazonMWSLinkedServiceTypeProperties struct.
func (amlstp *AmazonMWSLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "endpoint":
			if v != nil {
				var endpoint interface{}
				err = json.Unmarshal(*v, &endpoint)
				if err != nil {
					return err
				}
				amlstp.Endpoint = endpoint
			}
		case "marketplaceID":
			if v != nil {
				var marketplaceID interface{}
				err = json.Unmarshal(*v, &marketplaceID)
				if err != nil {
					return err
				}
				amlstp.MarketplaceID = marketplaceID
			}
		case "sellerID":
			if v != nil {
				var sellerID interface{}
				err = json.Unmarshal(*v, &sellerID)
				if err != nil {
					return err
				}
				amlstp.SellerID = sellerID
			}
		case "mwsAuthToken":
			if v != nil {
				mwsAuthToken, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				amlstp.MwsAuthToken = mwsAuthToken
			}
		case "accessKeyId":
			if v != nil {
				var accessKeyID interface{}
				err = json.Unmarshal(*v, &accessKeyID)
				if err != nil {
					return err
				}
				amlstp.AccessKeyID = accessKeyID
			}
		case "secretKey":
			if v != nil {
				secretKey, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				amlstp.SecretKey = secretKey
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				amlstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				amlstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				amlstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				amlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// AmazonMWSObjectDataset amazon Marketplace Web Service dataset.
type AmazonMWSObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) MarshalJSON() ([]byte, error) {
	amod.Type = TypeAmazonMWSObject
	objectMap := make(map[string]interface{})
	if amod.Description != nil {
		objectMap["description"] = amod.Description
	}
	if amod.Structure != nil {
		objectMap["structure"] = amod.Structure
	}
	if amod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = amod.LinkedServiceName
	}
	if amod.Parameters != nil {
		objectMap["parameters"] = amod.Parameters
	}
	if amod.Annotations != nil {
		objectMap["annotations"] = amod.Annotations
	}
	if amod.Type != "" {
		objectMap["type"] = amod.Type
	}
	for k, v := range amod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return &amod, true
}

// AsHTTPDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for AmazonMWSObjectDataset.
func (amod AmazonMWSObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &amod, true
}

// UnmarshalJSON is the custom unmarshaler for AmazonMWSObjectDataset struct.
func (amod *AmazonMWSObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if amod.AdditionalProperties == nil {
					amod.AdditionalProperties = make(map[string]interface{})
				}
				amod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				amod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				amod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				amod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				amod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				amod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				amod.Type = typeVar
			}
		}
	}

	return nil
}

// AmazonMWSSource a copy activity Amazon Marketplace Web Service source.
type AmazonMWSSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AmazonMWSSource.
func (ams AmazonMWSSource) MarshalJSON() ([]byte, error) {
	ams.Type = TypeAmazonMWSSource
	objectMap := make(map[string]interface{})
	if ams.Query != nil {
		objectMap["query"] = ams.Query
	}
	if ams.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ams.SourceRetryCount
	}
	if ams.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ams.SourceRetryWait
	}
	if ams.Type != "" {
		objectMap["type"] = ams.Type
	}
	for k, v := range ams.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return &ams, true
}

// AsHTTPSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for AmazonMWSSource.
func (ams AmazonMWSSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ams, true
}

// UnmarshalJSON is the custom unmarshaler for AmazonMWSSource struct.
func (ams *AmazonMWSSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ams.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ams.AdditionalProperties == nil {
					ams.AdditionalProperties = make(map[string]interface{})
				}
				ams.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ams.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ams.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ams.Type = typeVar
			}
		}
	}

	return nil
}

// AmazonRedshiftLinkedService linked service for Amazon Redshift.
type AmazonRedshiftLinkedService struct {
	// AmazonRedshiftLinkedServiceTypeProperties - Amazon Redshift linked service properties.
	*AmazonRedshiftLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) MarshalJSON() ([]byte, error) {
	arls.Type = TypeAmazonRedshift
	objectMap := make(map[string]interface{})
	if arls.AmazonRedshiftLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = arls.AmazonRedshiftLinkedServiceTypeProperties
	}
	if arls.ConnectVia != nil {
		objectMap["connectVia"] = arls.ConnectVia
	}
	if arls.Description != nil {
		objectMap["description"] = arls.Description
	}
	if arls.Parameters != nil {
		objectMap["parameters"] = arls.Parameters
	}
	if arls.Annotations != nil {
		objectMap["annotations"] = arls.Annotations
	}
	if arls.Type != "" {
		objectMap["type"] = arls.Type
	}
	for k, v := range arls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return &arls, true
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AmazonRedshiftLinkedService.
func (arls AmazonRedshiftLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &arls, true
}

// UnmarshalJSON is the custom unmarshaler for AmazonRedshiftLinkedService struct.
func (arls *AmazonRedshiftLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var amazonRedshiftLinkedServiceTypeProperties AmazonRedshiftLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &amazonRedshiftLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				arls.AmazonRedshiftLinkedServiceTypeProperties = &amazonRedshiftLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if arls.AdditionalProperties == nil {
					arls.AdditionalProperties = make(map[string]interface{})
				}
				arls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				arls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				arls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				arls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				arls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				arls.Type = typeVar
			}
		}
	}

	return nil
}

// AmazonRedshiftLinkedServiceTypeProperties amazon Redshift linked service properties.
type AmazonRedshiftLinkedServiceTypeProperties struct {
	// Server - The name of the Amazon Redshift server. Type: string (or Expression with resultType string).
	Server interface{} `json:"server,omitempty"`
	// Username - The username of the Amazon Redshift source. Type: string (or Expression with resultType string).
	Username interface{} `json:"username,omitempty"`
	// Password - The password of the Amazon Redshift source.
	Password BasicSecretBase `json:"password,omitempty"`
	// Database - The database name of the Amazon Redshift source. Type: string (or Expression with resultType string).
	Database interface{} `json:"database,omitempty"`
	// Port - 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 resultType integer).
	Port interface{} `json:"port,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AmazonRedshiftLinkedServiceTypeProperties struct.
func (arlstp *AmazonRedshiftLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "server":
			if v != nil {
				var server interface{}
				err = json.Unmarshal(*v, &server)
				if err != nil {
					return err
				}
				arlstp.Server = server
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				arlstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				arlstp.Password = password
			}
		case "database":
			if v != nil {
				var databaseVar interface{}
				err = json.Unmarshal(*v, &databaseVar)
				if err != nil {
					return err
				}
				arlstp.Database = databaseVar
			}
		case "port":
			if v != nil {
				var port interface{}
				err = json.Unmarshal(*v, &port)
				if err != nil {
					return err
				}
				arlstp.Port = port
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				arlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// AmazonRedshiftSource a copy activity source for Amazon Redshift Source.
type AmazonRedshiftSource struct {
	// Query - Database query. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// RedshiftUnloadSettings - 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 be unloaded into S3 first and then copied into the targeted sink from the interim S3.
	RedshiftUnloadSettings *RedshiftUnloadSettings `json:"redshiftUnloadSettings,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) MarshalJSON() ([]byte, error) {
	ars.Type = TypeAmazonRedshiftSource
	objectMap := make(map[string]interface{})
	if ars.Query != nil {
		objectMap["query"] = ars.Query
	}
	if ars.RedshiftUnloadSettings != nil {
		objectMap["redshiftUnloadSettings"] = ars.RedshiftUnloadSettings
	}
	if ars.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ars.SourceRetryCount
	}
	if ars.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ars.SourceRetryWait
	}
	if ars.Type != "" {
		objectMap["type"] = ars.Type
	}
	for k, v := range ars.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return &ars, true
}

// AsResponsysSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for AmazonRedshiftSource.
func (ars AmazonRedshiftSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ars, true
}

// UnmarshalJSON is the custom unmarshaler for AmazonRedshiftSource struct.
func (ars *AmazonRedshiftSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ars.Query = query
			}
		case "redshiftUnloadSettings":
			if v != nil {
				var redshiftUnloadSettings RedshiftUnloadSettings
				err = json.Unmarshal(*v, &redshiftUnloadSettings)
				if err != nil {
					return err
				}
				ars.RedshiftUnloadSettings = &redshiftUnloadSettings
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ars.AdditionalProperties == nil {
					ars.AdditionalProperties = make(map[string]interface{})
				}
				ars.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ars.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ars.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ars.Type = typeVar
			}
		}
	}

	return nil
}

// AmazonS3Dataset a single Amazon Simple Storage Service (S3) object or a set of S3 objects.
type AmazonS3Dataset struct {
	// AmazonS3DatasetTypeProperties - Amazon S3 dataset properties.
	*AmazonS3DatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AmazonS3Dataset.
func (asd AmazonS3Dataset) MarshalJSON() ([]byte, error) {
	asd.Type = TypeAmazonS3Object
	objectMap := make(map[string]interface{})
	if asd.AmazonS3DatasetTypeProperties != nil {
		objectMap["typeProperties"] = asd.AmazonS3DatasetTypeProperties
	}
	if asd.Description != nil {
		objectMap["description"] = asd.Description
	}
	if asd.Structure != nil {
		objectMap["structure"] = asd.Structure
	}
	if asd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = asd.LinkedServiceName
	}
	if asd.Parameters != nil {
		objectMap["parameters"] = asd.Parameters
	}
	if asd.Annotations != nil {
		objectMap["annotations"] = asd.Annotations
	}
	if asd.Type != "" {
		objectMap["type"] = asd.Type
	}
	for k, v := range asd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return &asd, true
}

// AsDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for AmazonS3Dataset.
func (asd AmazonS3Dataset) AsBasicDataset() (BasicDataset, bool) {
	return &asd, true
}

// UnmarshalJSON is the custom unmarshaler for AmazonS3Dataset struct.
func (asd *AmazonS3Dataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var amazonS3DatasetTypeProperties AmazonS3DatasetTypeProperties
				err = json.Unmarshal(*v, &amazonS3DatasetTypeProperties)
				if err != nil {
					return err
				}
				asd.AmazonS3DatasetTypeProperties = &amazonS3DatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if asd.AdditionalProperties == nil {
					asd.AdditionalProperties = make(map[string]interface{})
				}
				asd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				asd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				asd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				asd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				asd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				asd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				asd.Type = typeVar
			}
		}
	}

	return nil
}

// AmazonS3DatasetTypeProperties amazon S3 dataset properties.
type AmazonS3DatasetTypeProperties struct {
	// BucketName - The name of the Amazon S3 bucket. Type: string (or Expression with resultType string).
	BucketName interface{} `json:"bucketName,omitempty"`
	// Key - The key of the Amazon S3 object. Type: string (or Expression with resultType string).
	Key interface{} `json:"key,omitempty"`
	// Prefix - The prefix filter for the S3 object name. Type: string (or Expression with resultType string).
	Prefix interface{} `json:"prefix,omitempty"`
	// Version - The version for the S3 object. Type: string (or Expression with resultType string).
	Version interface{} `json:"version,omitempty"`
	// Format - The format of files.
	Format BasicDatasetStorageFormat `json:"format,omitempty"`
	// Compression - The data compression method used for the Amazon S3 object.
	Compression BasicDatasetCompression `json:"compression,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AmazonS3DatasetTypeProperties struct.
func (asdtp *AmazonS3DatasetTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "bucketName":
			if v != nil {
				var bucketName interface{}
				err = json.Unmarshal(*v, &bucketName)
				if err != nil {
					return err
				}
				asdtp.BucketName = bucketName
			}
		case "key":
			if v != nil {
				var key interface{}
				err = json.Unmarshal(*v, &key)
				if err != nil {
					return err
				}
				asdtp.Key = key
			}
		case "prefix":
			if v != nil {
				var prefix interface{}
				err = json.Unmarshal(*v, &prefix)
				if err != nil {
					return err
				}
				asdtp.Prefix = prefix
			}
		case "version":
			if v != nil {
				var version interface{}
				err = json.Unmarshal(*v, &version)
				if err != nil {
					return err
				}
				asdtp.Version = version
			}
		case "format":
			if v != nil {
				formatVar, err := unmarshalBasicDatasetStorageFormat(*v)
				if err != nil {
					return err
				}
				asdtp.Format = formatVar
			}
		case "compression":
			if v != nil {
				compression, err := unmarshalBasicDatasetCompression(*v)
				if err != nil {
					return err
				}
				asdtp.Compression = compression
			}
		}
	}

	return nil
}

// AmazonS3LinkedService linked service for Amazon S3.
type AmazonS3LinkedService struct {
	// AmazonS3LinkedServiceTypeProperties - Amazon S3 linked service properties.
	*AmazonS3LinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) MarshalJSON() ([]byte, error) {
	asls.Type = TypeAmazonS3
	objectMap := make(map[string]interface{})
	if asls.AmazonS3LinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = asls.AmazonS3LinkedServiceTypeProperties
	}
	if asls.ConnectVia != nil {
		objectMap["connectVia"] = asls.ConnectVia
	}
	if asls.Description != nil {
		objectMap["description"] = asls.Description
	}
	if asls.Parameters != nil {
		objectMap["parameters"] = asls.Parameters
	}
	if asls.Annotations != nil {
		objectMap["annotations"] = asls.Annotations
	}
	if asls.Type != "" {
		objectMap["type"] = asls.Type
	}
	for k, v := range asls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return &asls, true
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AmazonS3LinkedService.
func (asls AmazonS3LinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &asls, true
}

// UnmarshalJSON is the custom unmarshaler for AmazonS3LinkedService struct.
func (asls *AmazonS3LinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var amazonS3LinkedServiceTypeProperties AmazonS3LinkedServiceTypeProperties
				err = json.Unmarshal(*v, &amazonS3LinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				asls.AmazonS3LinkedServiceTypeProperties = &amazonS3LinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if asls.AdditionalProperties == nil {
					asls.AdditionalProperties = make(map[string]interface{})
				}
				asls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				asls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				asls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				asls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				asls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				asls.Type = typeVar
			}
		}
	}

	return nil
}

// AmazonS3LinkedServiceTypeProperties amazon S3 linked service properties.
type AmazonS3LinkedServiceTypeProperties struct {
	// AccessKeyID - The access key identifier of the Amazon S3 Identity and Access Management (IAM) user. Type: string (or Expression with resultType string).
	AccessKeyID interface{} `json:"accessKeyId,omitempty"`
	// SecretAccessKey - The secret access key of the Amazon S3 Identity and Access Management (IAM) user.
	SecretAccessKey BasicSecretBase `json:"secretAccessKey,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AmazonS3LinkedServiceTypeProperties struct.
func (aslstp *AmazonS3LinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "accessKeyId":
			if v != nil {
				var accessKeyID interface{}
				err = json.Unmarshal(*v, &accessKeyID)
				if err != nil {
					return err
				}
				aslstp.AccessKeyID = accessKeyID
			}
		case "secretAccessKey":
			if v != nil {
				secretAccessKey, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				aslstp.SecretAccessKey = secretAccessKey
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				aslstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// AvroFormat the data stored in Avro format.
type AvroFormat struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Serializer - Serializer. Type: string (or Expression with resultType string).
	Serializer interface{} `json:"serializer,omitempty"`
	// Deserializer - Deserializer. Type: string (or Expression with resultType string).
	Deserializer interface{} `json:"deserializer,omitempty"`
	// Type - Possible values include: 'TypeDatasetStorageFormat', 'TypeParquetFormat', 'TypeOrcFormat', 'TypeAvroFormat', 'TypeJSONFormat', 'TypeTextFormat'
	Type TypeBasicDatasetStorageFormat `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AvroFormat.
func (af AvroFormat) MarshalJSON() ([]byte, error) {
	af.Type = TypeAvroFormat
	objectMap := make(map[string]interface{})
	if af.Serializer != nil {
		objectMap["serializer"] = af.Serializer
	}
	if af.Deserializer != nil {
		objectMap["deserializer"] = af.Deserializer
	}
	if af.Type != "" {
		objectMap["type"] = af.Type
	}
	for k, v := range af.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsParquetFormat is the BasicDatasetStorageFormat implementation for AvroFormat.
func (af AvroFormat) AsParquetFormat() (*ParquetFormat, bool) {
	return nil, false
}

// AsOrcFormat is the BasicDatasetStorageFormat implementation for AvroFormat.
func (af AvroFormat) AsOrcFormat() (*OrcFormat, bool) {
	return nil, false
}

// AsAvroFormat is the BasicDatasetStorageFormat implementation for AvroFormat.
func (af AvroFormat) AsAvroFormat() (*AvroFormat, bool) {
	return &af, true
}

// AsJSONFormat is the BasicDatasetStorageFormat implementation for AvroFormat.
func (af AvroFormat) AsJSONFormat() (*JSONFormat, bool) {
	return nil, false
}

// AsTextFormat is the BasicDatasetStorageFormat implementation for AvroFormat.
func (af AvroFormat) AsTextFormat() (*TextFormat, bool) {
	return nil, false
}

// AsDatasetStorageFormat is the BasicDatasetStorageFormat implementation for AvroFormat.
func (af AvroFormat) AsDatasetStorageFormat() (*DatasetStorageFormat, bool) {
	return nil, false
}

// AsBasicDatasetStorageFormat is the BasicDatasetStorageFormat implementation for AvroFormat.
func (af AvroFormat) AsBasicDatasetStorageFormat() (BasicDatasetStorageFormat, bool) {
	return &af, true
}

// UnmarshalJSON is the custom unmarshaler for AvroFormat struct.
func (af *AvroFormat) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if af.AdditionalProperties == nil {
					af.AdditionalProperties = make(map[string]interface{})
				}
				af.AdditionalProperties[k] = additionalProperties
			}
		case "serializer":
			if v != nil {
				var serializer interface{}
				err = json.Unmarshal(*v, &serializer)
				if err != nil {
					return err
				}
				af.Serializer = serializer
			}
		case "deserializer":
			if v != nil {
				var deserializer interface{}
				err = json.Unmarshal(*v, &deserializer)
				if err != nil {
					return err
				}
				af.Deserializer = deserializer
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDatasetStorageFormat
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				af.Type = typeVar
			}
		}
	}

	return nil
}

// AzureBatchLinkedService azure Batch linked service.
type AzureBatchLinkedService struct {
	// AzureBatchLinkedServiceTypeProperties - Azure Batch linked service properties.
	*AzureBatchLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) MarshalJSON() ([]byte, error) {
	abls.Type = TypeAzureBatch
	objectMap := make(map[string]interface{})
	if abls.AzureBatchLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = abls.AzureBatchLinkedServiceTypeProperties
	}
	if abls.ConnectVia != nil {
		objectMap["connectVia"] = abls.ConnectVia
	}
	if abls.Description != nil {
		objectMap["description"] = abls.Description
	}
	if abls.Parameters != nil {
		objectMap["parameters"] = abls.Parameters
	}
	if abls.Annotations != nil {
		objectMap["annotations"] = abls.Annotations
	}
	if abls.Type != "" {
		objectMap["type"] = abls.Type
	}
	for k, v := range abls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return &abls, true
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AzureBatchLinkedService.
func (abls AzureBatchLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &abls, true
}

// UnmarshalJSON is the custom unmarshaler for AzureBatchLinkedService struct.
func (abls *AzureBatchLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureBatchLinkedServiceTypeProperties AzureBatchLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &azureBatchLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				abls.AzureBatchLinkedServiceTypeProperties = &azureBatchLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if abls.AdditionalProperties == nil {
					abls.AdditionalProperties = make(map[string]interface{})
				}
				abls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				abls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				abls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				abls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				abls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				abls.Type = typeVar
			}
		}
	}

	return nil
}

// AzureBatchLinkedServiceTypeProperties azure Batch linked service properties.
type AzureBatchLinkedServiceTypeProperties struct {
	// AccountName - The Azure Batch account name. Type: string (or Expression with resultType string).
	AccountName interface{} `json:"accountName,omitempty"`
	// AccessKey - The Azure Batch account access key.
	AccessKey BasicSecretBase `json:"accessKey,omitempty"`
	// BatchURI - The Azure Batch URI. Type: string (or Expression with resultType string).
	BatchURI interface{} `json:"batchUri,omitempty"`
	// PoolName - The Azure Batch pool name. Type: string (or Expression with resultType string).
	PoolName interface{} `json:"poolName,omitempty"`
	// LinkedServiceName - The Azure Storage linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AzureBatchLinkedServiceTypeProperties struct.
func (ablstp *AzureBatchLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "accountName":
			if v != nil {
				var accountName interface{}
				err = json.Unmarshal(*v, &accountName)
				if err != nil {
					return err
				}
				ablstp.AccountName = accountName
			}
		case "accessKey":
			if v != nil {
				accessKey, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				ablstp.AccessKey = accessKey
			}
		case "batchUri":
			if v != nil {
				var batchURI interface{}
				err = json.Unmarshal(*v, &batchURI)
				if err != nil {
					return err
				}
				ablstp.BatchURI = batchURI
			}
		case "poolName":
			if v != nil {
				var poolName interface{}
				err = json.Unmarshal(*v, &poolName)
				if err != nil {
					return err
				}
				ablstp.PoolName = poolName
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				ablstp.LinkedServiceName = &linkedServiceName
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				ablstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// AzureBlobDataset the Azure Blob storage.
type AzureBlobDataset struct {
	// AzureBlobDatasetTypeProperties - Azure Blob dataset properties.
	*AzureBlobDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureBlobDataset.
func (abd AzureBlobDataset) MarshalJSON() ([]byte, error) {
	abd.Type = TypeAzureBlob
	objectMap := make(map[string]interface{})
	if abd.AzureBlobDatasetTypeProperties != nil {
		objectMap["typeProperties"] = abd.AzureBlobDatasetTypeProperties
	}
	if abd.Description != nil {
		objectMap["description"] = abd.Description
	}
	if abd.Structure != nil {
		objectMap["structure"] = abd.Structure
	}
	if abd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = abd.LinkedServiceName
	}
	if abd.Parameters != nil {
		objectMap["parameters"] = abd.Parameters
	}
	if abd.Annotations != nil {
		objectMap["annotations"] = abd.Annotations
	}
	if abd.Type != "" {
		objectMap["type"] = abd.Type
	}
	for k, v := range abd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return &abd, true
}

// AsAmazonS3Dataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for AzureBlobDataset.
func (abd AzureBlobDataset) AsBasicDataset() (BasicDataset, bool) {
	return &abd, true
}

// UnmarshalJSON is the custom unmarshaler for AzureBlobDataset struct.
func (abd *AzureBlobDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureBlobDatasetTypeProperties AzureBlobDatasetTypeProperties
				err = json.Unmarshal(*v, &azureBlobDatasetTypeProperties)
				if err != nil {
					return err
				}
				abd.AzureBlobDatasetTypeProperties = &azureBlobDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if abd.AdditionalProperties == nil {
					abd.AdditionalProperties = make(map[string]interface{})
				}
				abd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				abd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				abd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				abd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				abd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				abd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				abd.Type = typeVar
			}
		}
	}

	return nil
}

// AzureBlobDatasetTypeProperties azure Blob dataset properties.
type AzureBlobDatasetTypeProperties struct {
	// FolderPath - The path of the Azure Blob storage. Type: string (or Expression with resultType string).
	FolderPath interface{} `json:"folderPath,omitempty"`
	// TableRootLocation - The root of blob path. Type: string (or Expression with resultType string).
	TableRootLocation interface{} `json:"tableRootLocation,omitempty"`
	// FileName - The name of the Azure Blob. Type: string (or Expression with resultType string).
	FileName interface{} `json:"fileName,omitempty"`
	// Format - The format of the Azure Blob storage.
	Format BasicDatasetStorageFormat `json:"format,omitempty"`
	// Compression - The data compression method used for the blob storage.
	Compression BasicDatasetCompression `json:"compression,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AzureBlobDatasetTypeProperties struct.
func (abdtp *AzureBlobDatasetTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "folderPath":
			if v != nil {
				var folderPath interface{}
				err = json.Unmarshal(*v, &folderPath)
				if err != nil {
					return err
				}
				abdtp.FolderPath = folderPath
			}
		case "tableRootLocation":
			if v != nil {
				var tableRootLocation interface{}
				err = json.Unmarshal(*v, &tableRootLocation)
				if err != nil {
					return err
				}
				abdtp.TableRootLocation = tableRootLocation
			}
		case "fileName":
			if v != nil {
				var fileName interface{}
				err = json.Unmarshal(*v, &fileName)
				if err != nil {
					return err
				}
				abdtp.FileName = fileName
			}
		case "format":
			if v != nil {
				formatVar, err := unmarshalBasicDatasetStorageFormat(*v)
				if err != nil {
					return err
				}
				abdtp.Format = formatVar
			}
		case "compression":
			if v != nil {
				compression, err := unmarshalBasicDatasetCompression(*v)
				if err != nil {
					return err
				}
				abdtp.Compression = compression
			}
		}
	}

	return nil
}

// AzureDatabricksLinkedService azure Databricks linked service.
type AzureDatabricksLinkedService struct {
	// AzureDatabricksLinkedServiceTypeProperties - Azure Databricks linked service properties.
	*AzureDatabricksLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) MarshalJSON() ([]byte, error) {
	adls.Type = TypeAzureDatabricks
	objectMap := make(map[string]interface{})
	if adls.AzureDatabricksLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = adls.AzureDatabricksLinkedServiceTypeProperties
	}
	if adls.ConnectVia != nil {
		objectMap["connectVia"] = adls.ConnectVia
	}
	if adls.Description != nil {
		objectMap["description"] = adls.Description
	}
	if adls.Parameters != nil {
		objectMap["parameters"] = adls.Parameters
	}
	if adls.Annotations != nil {
		objectMap["annotations"] = adls.Annotations
	}
	if adls.Type != "" {
		objectMap["type"] = adls.Type
	}
	for k, v := range adls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return &adls, true
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AzureDatabricksLinkedService.
func (adls AzureDatabricksLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &adls, true
}

// UnmarshalJSON is the custom unmarshaler for AzureDatabricksLinkedService struct.
func (adls *AzureDatabricksLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureDatabricksLinkedServiceTypeProperties AzureDatabricksLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &azureDatabricksLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				adls.AzureDatabricksLinkedServiceTypeProperties = &azureDatabricksLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if adls.AdditionalProperties == nil {
					adls.AdditionalProperties = make(map[string]interface{})
				}
				adls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				adls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				adls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				adls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				adls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				adls.Type = typeVar
			}
		}
	}

	return nil
}

// AzureDatabricksLinkedServiceTypeProperties azure Databricks linked service properties.
type AzureDatabricksLinkedServiceTypeProperties struct {
	// Domain - <REGION>.azuredatabricks.net, domain name of your Databricks deployment. Type: string (or Expression with resultType string).
	Domain interface{} `json:"domain,omitempty"`
	// AccessToken - Access token for databricks REST API. Refer to https://docs.azuredatabricks.net/api/latest/authentication.html. Type: string (or Expression with resultType string).
	AccessToken BasicSecretBase `json:"accessToken,omitempty"`
	// ExistingClusterID - The id of an existing cluster that will be used for all runs of this job. Type: string (or Expression with resultType string).
	ExistingClusterID interface{} `json:"existingClusterId,omitempty"`
	// NewClusterVersion - The Spark version of new cluster. Type: string (or Expression with resultType string).
	NewClusterVersion interface{} `json:"newClusterVersion,omitempty"`
	// NewClusterNumOfWorker - Number of worker nodes that new cluster should have. A string formatted Int32, like '1' means numOfWorker is 1 or '1:10' means auto-scale from 1 as min and 10 as max. Type: string (or Expression with resultType string).
	NewClusterNumOfWorker interface{} `json:"newClusterNumOfWorker,omitempty"`
	// NewClusterNodeType - The node types of new cluster. Type: string (or Expression with resultType string).
	NewClusterNodeType interface{} `json:"newClusterNodeType,omitempty"`
	// NewClusterSparkConf - a set of optional, user-specified Spark configuration key-value pairs.
	NewClusterSparkConf map[string]interface{} `json:"newClusterSparkConf"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureDatabricksLinkedServiceTypeProperties.
func (adlstp AzureDatabricksLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if adlstp.Domain != nil {
		objectMap["domain"] = adlstp.Domain
	}
	objectMap["accessToken"] = adlstp.AccessToken
	if adlstp.ExistingClusterID != nil {
		objectMap["existingClusterId"] = adlstp.ExistingClusterID
	}
	if adlstp.NewClusterVersion != nil {
		objectMap["newClusterVersion"] = adlstp.NewClusterVersion
	}
	if adlstp.NewClusterNumOfWorker != nil {
		objectMap["newClusterNumOfWorker"] = adlstp.NewClusterNumOfWorker
	}
	if adlstp.NewClusterNodeType != nil {
		objectMap["newClusterNodeType"] = adlstp.NewClusterNodeType
	}
	if adlstp.NewClusterSparkConf != nil {
		objectMap["newClusterSparkConf"] = adlstp.NewClusterSparkConf
	}
	if adlstp.EncryptedCredential != nil {
		objectMap["encryptedCredential"] = adlstp.EncryptedCredential
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for AzureDatabricksLinkedServiceTypeProperties struct.
func (adlstp *AzureDatabricksLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "domain":
			if v != nil {
				var domain interface{}
				err = json.Unmarshal(*v, &domain)
				if err != nil {
					return err
				}
				adlstp.Domain = domain
			}
		case "accessToken":
			if v != nil {
				accessToken, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				adlstp.AccessToken = accessToken
			}
		case "existingClusterId":
			if v != nil {
				var existingClusterID interface{}
				err = json.Unmarshal(*v, &existingClusterID)
				if err != nil {
					return err
				}
				adlstp.ExistingClusterID = existingClusterID
			}
		case "newClusterVersion":
			if v != nil {
				var newClusterVersion interface{}
				err = json.Unmarshal(*v, &newClusterVersion)
				if err != nil {
					return err
				}
				adlstp.NewClusterVersion = newClusterVersion
			}
		case "newClusterNumOfWorker":
			if v != nil {
				var newClusterNumOfWorker interface{}
				err = json.Unmarshal(*v, &newClusterNumOfWorker)
				if err != nil {
					return err
				}
				adlstp.NewClusterNumOfWorker = newClusterNumOfWorker
			}
		case "newClusterNodeType":
			if v != nil {
				var newClusterNodeType interface{}
				err = json.Unmarshal(*v, &newClusterNodeType)
				if err != nil {
					return err
				}
				adlstp.NewClusterNodeType = newClusterNodeType
			}
		case "newClusterSparkConf":
			if v != nil {
				var newClusterSparkConf map[string]interface{}
				err = json.Unmarshal(*v, &newClusterSparkConf)
				if err != nil {
					return err
				}
				adlstp.NewClusterSparkConf = newClusterSparkConf
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				adlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// AzureDataLakeAnalyticsLinkedService azure Data Lake Analytics linked service.
type AzureDataLakeAnalyticsLinkedService struct {
	// AzureDataLakeAnalyticsLinkedServiceTypeProperties - Azure Data Lake Analytics linked service properties.
	*AzureDataLakeAnalyticsLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) MarshalJSON() ([]byte, error) {
	adlals.Type = TypeAzureDataLakeAnalytics
	objectMap := make(map[string]interface{})
	if adlals.AzureDataLakeAnalyticsLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = adlals.AzureDataLakeAnalyticsLinkedServiceTypeProperties
	}
	if adlals.ConnectVia != nil {
		objectMap["connectVia"] = adlals.ConnectVia
	}
	if adlals.Description != nil {
		objectMap["description"] = adlals.Description
	}
	if adlals.Parameters != nil {
		objectMap["parameters"] = adlals.Parameters
	}
	if adlals.Annotations != nil {
		objectMap["annotations"] = adlals.Annotations
	}
	if adlals.Type != "" {
		objectMap["type"] = adlals.Type
	}
	for k, v := range adlals.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return &adlals, true
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AzureDataLakeAnalyticsLinkedService.
func (adlals AzureDataLakeAnalyticsLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &adlals, true
}

// UnmarshalJSON is the custom unmarshaler for AzureDataLakeAnalyticsLinkedService struct.
func (adlals *AzureDataLakeAnalyticsLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureDataLakeAnalyticsLinkedServiceTypeProperties AzureDataLakeAnalyticsLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &azureDataLakeAnalyticsLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				adlals.AzureDataLakeAnalyticsLinkedServiceTypeProperties = &azureDataLakeAnalyticsLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if adlals.AdditionalProperties == nil {
					adlals.AdditionalProperties = make(map[string]interface{})
				}
				adlals.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				adlals.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				adlals.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				adlals.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				adlals.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				adlals.Type = typeVar
			}
		}
	}

	return nil
}

// AzureDataLakeAnalyticsLinkedServiceTypeProperties azure Data Lake Analytics linked service properties.
type AzureDataLakeAnalyticsLinkedServiceTypeProperties struct {
	// AccountName - The Azure Data Lake Analytics account name. Type: string (or Expression with resultType string).
	AccountName interface{} `json:"accountName,omitempty"`
	// ServicePrincipalID - The ID of the application used to authenticate against the Azure Data Lake Analytics account. Type: string (or Expression with resultType string).
	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
	// ServicePrincipalKey - The Key of the application used to authenticate against the Azure Data Lake Analytics account.
	ServicePrincipalKey BasicSecretBase `json:"servicePrincipalKey,omitempty"`
	// Tenant - The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
	Tenant interface{} `json:"tenant,omitempty"`
	// SubscriptionID - Data Lake Analytics account subscription ID (if different from Data Factory account). Type: string (or Expression with resultType string).
	SubscriptionID interface{} `json:"subscriptionId,omitempty"`
	// ResourceGroupName - Data Lake Analytics account resource group name (if different from Data Factory account). Type: string (or Expression with resultType string).
	ResourceGroupName interface{} `json:"resourceGroupName,omitempty"`
	// DataLakeAnalyticsURI - Azure Data Lake Analytics URI Type: string (or Expression with resultType string).
	DataLakeAnalyticsURI interface{} `json:"dataLakeAnalyticsUri,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AzureDataLakeAnalyticsLinkedServiceTypeProperties struct.
func (adlalstp *AzureDataLakeAnalyticsLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "accountName":
			if v != nil {
				var accountName interface{}
				err = json.Unmarshal(*v, &accountName)
				if err != nil {
					return err
				}
				adlalstp.AccountName = accountName
			}
		case "servicePrincipalId":
			if v != nil {
				var servicePrincipalID interface{}
				err = json.Unmarshal(*v, &servicePrincipalID)
				if err != nil {
					return err
				}
				adlalstp.ServicePrincipalID = servicePrincipalID
			}
		case "servicePrincipalKey":
			if v != nil {
				servicePrincipalKey, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				adlalstp.ServicePrincipalKey = servicePrincipalKey
			}
		case "tenant":
			if v != nil {
				var tenant interface{}
				err = json.Unmarshal(*v, &tenant)
				if err != nil {
					return err
				}
				adlalstp.Tenant = tenant
			}
		case "subscriptionId":
			if v != nil {
				var subscriptionID interface{}
				err = json.Unmarshal(*v, &subscriptionID)
				if err != nil {
					return err
				}
				adlalstp.SubscriptionID = subscriptionID
			}
		case "resourceGroupName":
			if v != nil {
				var resourceGroupName interface{}
				err = json.Unmarshal(*v, &resourceGroupName)
				if err != nil {
					return err
				}
				adlalstp.ResourceGroupName = resourceGroupName
			}
		case "dataLakeAnalyticsUri":
			if v != nil {
				var dataLakeAnalyticsURI interface{}
				err = json.Unmarshal(*v, &dataLakeAnalyticsURI)
				if err != nil {
					return err
				}
				adlalstp.DataLakeAnalyticsURI = dataLakeAnalyticsURI
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				adlalstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// AzureDataLakeStoreDataset azure Data Lake Store dataset.
type AzureDataLakeStoreDataset struct {
	// AzureDataLakeStoreDatasetTypeProperties - Azure Data Lake Store dataset properties.
	*AzureDataLakeStoreDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) MarshalJSON() ([]byte, error) {
	adlsd.Type = TypeAzureDataLakeStoreFile
	objectMap := make(map[string]interface{})
	if adlsd.AzureDataLakeStoreDatasetTypeProperties != nil {
		objectMap["typeProperties"] = adlsd.AzureDataLakeStoreDatasetTypeProperties
	}
	if adlsd.Description != nil {
		objectMap["description"] = adlsd.Description
	}
	if adlsd.Structure != nil {
		objectMap["structure"] = adlsd.Structure
	}
	if adlsd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = adlsd.LinkedServiceName
	}
	if adlsd.Parameters != nil {
		objectMap["parameters"] = adlsd.Parameters
	}
	if adlsd.Annotations != nil {
		objectMap["annotations"] = adlsd.Annotations
	}
	if adlsd.Type != "" {
		objectMap["type"] = adlsd.Type
	}
	for k, v := range adlsd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return &adlsd, true
}

// AsDynamicsEntityDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for AzureDataLakeStoreDataset.
func (adlsd AzureDataLakeStoreDataset) AsBasicDataset() (BasicDataset, bool) {
	return &adlsd, true
}

// UnmarshalJSON is the custom unmarshaler for AzureDataLakeStoreDataset struct.
func (adlsd *AzureDataLakeStoreDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureDataLakeStoreDatasetTypeProperties AzureDataLakeStoreDatasetTypeProperties
				err = json.Unmarshal(*v, &azureDataLakeStoreDatasetTypeProperties)
				if err != nil {
					return err
				}
				adlsd.AzureDataLakeStoreDatasetTypeProperties = &azureDataLakeStoreDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if adlsd.AdditionalProperties == nil {
					adlsd.AdditionalProperties = make(map[string]interface{})
				}
				adlsd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				adlsd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				adlsd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				adlsd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				adlsd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				adlsd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				adlsd.Type = typeVar
			}
		}
	}

	return nil
}

// AzureDataLakeStoreDatasetTypeProperties azure Data Lake Store dataset properties.
type AzureDataLakeStoreDatasetTypeProperties struct {
	// FolderPath - Path to the folder in the Azure Data Lake Store. Type: string (or Expression with resultType string).
	FolderPath interface{} `json:"folderPath,omitempty"`
	// FileName - The name of the file in the Azure Data Lake Store. Type: string (or Expression with resultType string).
	FileName interface{} `json:"fileName,omitempty"`
	// Format - The format of the Data Lake Store.
	Format BasicDatasetStorageFormat `json:"format,omitempty"`
	// Compression - The data compression method used for the item(s) in the Azure Data Lake Store.
	Compression BasicDatasetCompression `json:"compression,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AzureDataLakeStoreDatasetTypeProperties struct.
func (adlsdtp *AzureDataLakeStoreDatasetTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "folderPath":
			if v != nil {
				var folderPath interface{}
				err = json.Unmarshal(*v, &folderPath)
				if err != nil {
					return err
				}
				adlsdtp.FolderPath = folderPath
			}
		case "fileName":
			if v != nil {
				var fileName interface{}
				err = json.Unmarshal(*v, &fileName)
				if err != nil {
					return err
				}
				adlsdtp.FileName = fileName
			}
		case "format":
			if v != nil {
				formatVar, err := unmarshalBasicDatasetStorageFormat(*v)
				if err != nil {
					return err
				}
				adlsdtp.Format = formatVar
			}
		case "compression":
			if v != nil {
				compression, err := unmarshalBasicDatasetCompression(*v)
				if err != nil {
					return err
				}
				adlsdtp.Compression = compression
			}
		}
	}

	return nil
}

// AzureDataLakeStoreLinkedService azure Data Lake Store linked service.
type AzureDataLakeStoreLinkedService struct {
	// AzureDataLakeStoreLinkedServiceTypeProperties - Azure Data Lake Store linked service properties.
	*AzureDataLakeStoreLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) MarshalJSON() ([]byte, error) {
	adlsls.Type = TypeAzureDataLakeStore
	objectMap := make(map[string]interface{})
	if adlsls.AzureDataLakeStoreLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = adlsls.AzureDataLakeStoreLinkedServiceTypeProperties
	}
	if adlsls.ConnectVia != nil {
		objectMap["connectVia"] = adlsls.ConnectVia
	}
	if adlsls.Description != nil {
		objectMap["description"] = adlsls.Description
	}
	if adlsls.Parameters != nil {
		objectMap["parameters"] = adlsls.Parameters
	}
	if adlsls.Annotations != nil {
		objectMap["annotations"] = adlsls.Annotations
	}
	if adlsls.Type != "" {
		objectMap["type"] = adlsls.Type
	}
	for k, v := range adlsls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return &adlsls, true
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AzureDataLakeStoreLinkedService.
func (adlsls AzureDataLakeStoreLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &adlsls, true
}

// UnmarshalJSON is the custom unmarshaler for AzureDataLakeStoreLinkedService struct.
func (adlsls *AzureDataLakeStoreLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureDataLakeStoreLinkedServiceTypeProperties AzureDataLakeStoreLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &azureDataLakeStoreLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				adlsls.AzureDataLakeStoreLinkedServiceTypeProperties = &azureDataLakeStoreLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if adlsls.AdditionalProperties == nil {
					adlsls.AdditionalProperties = make(map[string]interface{})
				}
				adlsls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				adlsls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				adlsls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				adlsls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				adlsls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				adlsls.Type = typeVar
			}
		}
	}

	return nil
}

// AzureDataLakeStoreLinkedServiceTypeProperties azure Data Lake Store linked service properties.
type AzureDataLakeStoreLinkedServiceTypeProperties struct {
	// DataLakeStoreURI - Data Lake Store service URI. Type: string (or Expression with resultType string).
	DataLakeStoreURI interface{} `json:"dataLakeStoreUri,omitempty"`
	// ServicePrincipalID - The ID of the application used to authenticate against the Azure Data Lake Store account. Type: string (or Expression with resultType string).
	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
	// ServicePrincipalKey - The Key of the application used to authenticate against the Azure Data Lake Store account.
	ServicePrincipalKey BasicSecretBase `json:"servicePrincipalKey,omitempty"`
	// Tenant - The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
	Tenant interface{} `json:"tenant,omitempty"`
	// AccountName - Data Lake Store account name. Type: string (or Expression with resultType string).
	AccountName interface{} `json:"accountName,omitempty"`
	// SubscriptionID - Data Lake Store account subscription ID (if different from Data Factory account). Type: string (or Expression with resultType string).
	SubscriptionID interface{} `json:"subscriptionId,omitempty"`
	// ResourceGroupName - Data Lake Store account resource group name (if different from Data Factory account). Type: string (or Expression with resultType string).
	ResourceGroupName interface{} `json:"resourceGroupName,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AzureDataLakeStoreLinkedServiceTypeProperties struct.
func (adlslstp *AzureDataLakeStoreLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "dataLakeStoreUri":
			if v != nil {
				var dataLakeStoreURI interface{}
				err = json.Unmarshal(*v, &dataLakeStoreURI)
				if err != nil {
					return err
				}
				adlslstp.DataLakeStoreURI = dataLakeStoreURI
			}
		case "servicePrincipalId":
			if v != nil {
				var servicePrincipalID interface{}
				err = json.Unmarshal(*v, &servicePrincipalID)
				if err != nil {
					return err
				}
				adlslstp.ServicePrincipalID = servicePrincipalID
			}
		case "servicePrincipalKey":
			if v != nil {
				servicePrincipalKey, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				adlslstp.ServicePrincipalKey = servicePrincipalKey
			}
		case "tenant":
			if v != nil {
				var tenant interface{}
				err = json.Unmarshal(*v, &tenant)
				if err != nil {
					return err
				}
				adlslstp.Tenant = tenant
			}
		case "accountName":
			if v != nil {
				var accountName interface{}
				err = json.Unmarshal(*v, &accountName)
				if err != nil {
					return err
				}
				adlslstp.AccountName = accountName
			}
		case "subscriptionId":
			if v != nil {
				var subscriptionID interface{}
				err = json.Unmarshal(*v, &subscriptionID)
				if err != nil {
					return err
				}
				adlslstp.SubscriptionID = subscriptionID
			}
		case "resourceGroupName":
			if v != nil {
				var resourceGroupName interface{}
				err = json.Unmarshal(*v, &resourceGroupName)
				if err != nil {
					return err
				}
				adlslstp.ResourceGroupName = resourceGroupName
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				adlslstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// AzureDataLakeStoreSink a copy activity Azure Data Lake Store sink.
type AzureDataLakeStoreSink struct {
	// CopyBehavior - The type of copy behavior for copy sink.
	CopyBehavior interface{} `json:"copyBehavior,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) MarshalJSON() ([]byte, error) {
	adlss.Type = TypeAzureDataLakeStoreSink
	objectMap := make(map[string]interface{})
	if adlss.CopyBehavior != nil {
		objectMap["copyBehavior"] = adlss.CopyBehavior
	}
	if adlss.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = adlss.WriteBatchSize
	}
	if adlss.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = adlss.WriteBatchTimeout
	}
	if adlss.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = adlss.SinkRetryCount
	}
	if adlss.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = adlss.SinkRetryWait
	}
	if adlss.Type != "" {
		objectMap["type"] = adlss.Type
	}
	for k, v := range adlss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return &adlss, true
}

// AsOracleSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for AzureDataLakeStoreSink.
func (adlss AzureDataLakeStoreSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &adlss, true
}

// UnmarshalJSON is the custom unmarshaler for AzureDataLakeStoreSink struct.
func (adlss *AzureDataLakeStoreSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "copyBehavior":
			if v != nil {
				var copyBehavior interface{}
				err = json.Unmarshal(*v, &copyBehavior)
				if err != nil {
					return err
				}
				adlss.CopyBehavior = copyBehavior
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if adlss.AdditionalProperties == nil {
					adlss.AdditionalProperties = make(map[string]interface{})
				}
				adlss.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				adlss.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				adlss.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				adlss.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				adlss.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				adlss.Type = typeVar
			}
		}
	}

	return nil
}

// AzureDataLakeStoreSource a copy activity Azure Data Lake source.
type AzureDataLakeStoreSource struct {
	// Recursive - If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
	Recursive interface{} `json:"recursive,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) MarshalJSON() ([]byte, error) {
	adlss.Type = TypeAzureDataLakeStoreSource
	objectMap := make(map[string]interface{})
	if adlss.Recursive != nil {
		objectMap["recursive"] = adlss.Recursive
	}
	if adlss.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = adlss.SourceRetryCount
	}
	if adlss.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = adlss.SourceRetryWait
	}
	if adlss.Type != "" {
		objectMap["type"] = adlss.Type
	}
	for k, v := range adlss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return &adlss, true
}

// AsMongoDbSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for AzureDataLakeStoreSource.
func (adlss AzureDataLakeStoreSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &adlss, true
}

// UnmarshalJSON is the custom unmarshaler for AzureDataLakeStoreSource struct.
func (adlss *AzureDataLakeStoreSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "recursive":
			if v != nil {
				var recursive interface{}
				err = json.Unmarshal(*v, &recursive)
				if err != nil {
					return err
				}
				adlss.Recursive = recursive
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if adlss.AdditionalProperties == nil {
					adlss.AdditionalProperties = make(map[string]interface{})
				}
				adlss.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				adlss.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				adlss.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				adlss.Type = typeVar
			}
		}
	}

	return nil
}

// AzureKeyVaultLinkedService azure Key Vault linked service.
type AzureKeyVaultLinkedService struct {
	// AzureKeyVaultLinkedServiceTypeProperties - Azure Key Vault linked service properties.
	*AzureKeyVaultLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) MarshalJSON() ([]byte, error) {
	akvls.Type = TypeAzureKeyVault
	objectMap := make(map[string]interface{})
	if akvls.AzureKeyVaultLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = akvls.AzureKeyVaultLinkedServiceTypeProperties
	}
	if akvls.ConnectVia != nil {
		objectMap["connectVia"] = akvls.ConnectVia
	}
	if akvls.Description != nil {
		objectMap["description"] = akvls.Description
	}
	if akvls.Parameters != nil {
		objectMap["parameters"] = akvls.Parameters
	}
	if akvls.Annotations != nil {
		objectMap["annotations"] = akvls.Annotations
	}
	if akvls.Type != "" {
		objectMap["type"] = akvls.Type
	}
	for k, v := range akvls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return &akvls, true
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AzureKeyVaultLinkedService.
func (akvls AzureKeyVaultLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &akvls, true
}

// UnmarshalJSON is the custom unmarshaler for AzureKeyVaultLinkedService struct.
func (akvls *AzureKeyVaultLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureKeyVaultLinkedServiceTypeProperties AzureKeyVaultLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &azureKeyVaultLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				akvls.AzureKeyVaultLinkedServiceTypeProperties = &azureKeyVaultLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if akvls.AdditionalProperties == nil {
					akvls.AdditionalProperties = make(map[string]interface{})
				}
				akvls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				akvls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				akvls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				akvls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				akvls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				akvls.Type = typeVar
			}
		}
	}

	return nil
}

// AzureKeyVaultLinkedServiceTypeProperties azure Key Vault linked service properties.
type AzureKeyVaultLinkedServiceTypeProperties struct {
	// BaseURL - The base URL of the Azure Key Vault. e.g. https://myakv.vault.azure.net Type: string (or Expression with resultType string).
	BaseURL interface{} `json:"baseUrl,omitempty"`
}

// AzureKeyVaultSecretReference azure Key Vault secret reference.
type AzureKeyVaultSecretReference struct {
	// Store - The Azure Key Vault linked service reference.
	Store *LinkedServiceReference `json:"store,omitempty"`
	// SecretName - The name of the secret in Azure Key Vault. Type: string (or Expression with resultType string).
	SecretName interface{} `json:"secretName,omitempty"`
	// SecretVersion - 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).
	SecretVersion interface{} `json:"secretVersion,omitempty"`
	// Type - Possible values include: 'TypeSecretBase', 'TypeSecureString', 'TypeAzureKeyVaultSecret'
	Type Type `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureKeyVaultSecretReference.
func (akvsr AzureKeyVaultSecretReference) MarshalJSON() ([]byte, error) {
	akvsr.Type = TypeAzureKeyVaultSecret
	objectMap := make(map[string]interface{})
	if akvsr.Store != nil {
		objectMap["store"] = akvsr.Store
	}
	if akvsr.SecretName != nil {
		objectMap["secretName"] = akvsr.SecretName
	}
	if akvsr.SecretVersion != nil {
		objectMap["secretVersion"] = akvsr.SecretVersion
	}
	if akvsr.Type != "" {
		objectMap["type"] = akvsr.Type
	}
	return json.Marshal(objectMap)
}

// AsSecureString is the BasicSecretBase implementation for AzureKeyVaultSecretReference.
func (akvsr AzureKeyVaultSecretReference) AsSecureString() (*SecureString, bool) {
	return nil, false
}

// AsAzureKeyVaultSecretReference is the BasicSecretBase implementation for AzureKeyVaultSecretReference.
func (akvsr AzureKeyVaultSecretReference) AsAzureKeyVaultSecretReference() (*AzureKeyVaultSecretReference, bool) {
	return &akvsr, true
}

// AsSecretBase is the BasicSecretBase implementation for AzureKeyVaultSecretReference.
func (akvsr AzureKeyVaultSecretReference) AsSecretBase() (*SecretBase, bool) {
	return nil, false
}

// AsBasicSecretBase is the BasicSecretBase implementation for AzureKeyVaultSecretReference.
func (akvsr AzureKeyVaultSecretReference) AsBasicSecretBase() (BasicSecretBase, bool) {
	return &akvsr, true
}

// AzureMLBatchExecutionActivity azure ML Batch Execution activity.
type AzureMLBatchExecutionActivity struct {
	// AzureMLBatchExecutionActivityTypeProperties - Azure ML Batch Execution activity properties.
	*AzureMLBatchExecutionActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) MarshalJSON() ([]byte, error) {
	ambea.Type = TypeAzureMLBatchExecution
	objectMap := make(map[string]interface{})
	if ambea.AzureMLBatchExecutionActivityTypeProperties != nil {
		objectMap["typeProperties"] = ambea.AzureMLBatchExecutionActivityTypeProperties
	}
	if ambea.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = ambea.LinkedServiceName
	}
	if ambea.Policy != nil {
		objectMap["policy"] = ambea.Policy
	}
	if ambea.Name != nil {
		objectMap["name"] = ambea.Name
	}
	if ambea.Description != nil {
		objectMap["description"] = ambea.Description
	}
	if ambea.DependsOn != nil {
		objectMap["dependsOn"] = ambea.DependsOn
	}
	if ambea.Type != "" {
		objectMap["type"] = ambea.Type
	}
	for k, v := range ambea.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return &ambea, true
}

// AsGetMetadataActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &ambea, true
}

// AsFilterActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for AzureMLBatchExecutionActivity.
func (ambea AzureMLBatchExecutionActivity) AsBasicActivity() (BasicActivity, bool) {
	return &ambea, true
}

// UnmarshalJSON is the custom unmarshaler for AzureMLBatchExecutionActivity struct.
func (ambea *AzureMLBatchExecutionActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureMLBatchExecutionActivityTypeProperties AzureMLBatchExecutionActivityTypeProperties
				err = json.Unmarshal(*v, &azureMLBatchExecutionActivityTypeProperties)
				if err != nil {
					return err
				}
				ambea.AzureMLBatchExecutionActivityTypeProperties = &azureMLBatchExecutionActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				ambea.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				ambea.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ambea.AdditionalProperties == nil {
					ambea.AdditionalProperties = make(map[string]interface{})
				}
				ambea.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				ambea.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ambea.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				ambea.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ambea.Type = typeVar
			}
		}
	}

	return nil
}

// AzureMLBatchExecutionActivityTypeProperties azure ML Batch Execution activity properties.
type AzureMLBatchExecutionActivityTypeProperties struct {
	// GlobalParameters - 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 Azure ML web service. Values will be passed in the GlobalParameters property of the Azure ML batch execution request.
	GlobalParameters map[string]interface{} `json:"globalParameters"`
	// WebServiceOutputs - Key,Value pairs, mapping the names of Azure ML endpoint's Web Service Outputs to AzureMLWebServiceFile objects specifying the output Blob locations. This information will be passed in the WebServiceOutputs property of the Azure ML batch execution request.
	WebServiceOutputs map[string]*AzureMLWebServiceFile `json:"webServiceOutputs"`
	// WebServiceInputs - Key,Value pairs, mapping the names of Azure ML endpoint's Web Service Inputs to AzureMLWebServiceFile objects specifying the input Blob locations.. This information will be passed in the WebServiceInputs property of the Azure ML batch execution request.
	WebServiceInputs map[string]*AzureMLWebServiceFile `json:"webServiceInputs"`
}

// MarshalJSON is the custom marshaler for AzureMLBatchExecutionActivityTypeProperties.
func (ambeatp AzureMLBatchExecutionActivityTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if ambeatp.GlobalParameters != nil {
		objectMap["globalParameters"] = ambeatp.GlobalParameters
	}
	if ambeatp.WebServiceOutputs != nil {
		objectMap["webServiceOutputs"] = ambeatp.WebServiceOutputs
	}
	if ambeatp.WebServiceInputs != nil {
		objectMap["webServiceInputs"] = ambeatp.WebServiceInputs
	}
	return json.Marshal(objectMap)
}

// AzureMLLinkedService azure ML Web Service linked service.
type AzureMLLinkedService struct {
	// AzureMLLinkedServiceTypeProperties - Azure ML Web Service linked service properties.
	*AzureMLLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureMLLinkedService.
func (amls AzureMLLinkedService) MarshalJSON() ([]byte, error) {
	amls.Type = TypeAzureML
	objectMap := make(map[string]interface{})
	if amls.AzureMLLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = amls.AzureMLLinkedServiceTypeProperties
	}
	if amls.ConnectVia != nil {
		objectMap["connectVia"] = amls.ConnectVia
	}
	if amls.Description != nil {
		objectMap["description"] = amls.Description
	}
	if amls.Parameters != nil {
		objectMap["parameters"] = amls.Parameters
	}
	if amls.Annotations != nil {
		objectMap["annotations"] = amls.Annotations
	}
	if amls.Type != "" {
		objectMap["type"] = amls.Type
	}
	for k, v := range amls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return &amls, true
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AzureMLLinkedService.
func (amls AzureMLLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &amls, true
}

// UnmarshalJSON is the custom unmarshaler for AzureMLLinkedService struct.
func (amls *AzureMLLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureMLLinkedServiceTypeProperties AzureMLLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &azureMLLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				amls.AzureMLLinkedServiceTypeProperties = &azureMLLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if amls.AdditionalProperties == nil {
					amls.AdditionalProperties = make(map[string]interface{})
				}
				amls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				amls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				amls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				amls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				amls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				amls.Type = typeVar
			}
		}
	}

	return nil
}

// AzureMLLinkedServiceTypeProperties azure ML Web Service linked service properties.
type AzureMLLinkedServiceTypeProperties struct {
	// MlEndpoint - The Batch Execution REST URL for an Azure ML Web Service endpoint. Type: string (or Expression with resultType string).
	MlEndpoint interface{} `json:"mlEndpoint,omitempty"`
	// APIKey - The API key for accessing the Azure ML model endpoint.
	APIKey BasicSecretBase `json:"apiKey,omitempty"`
	// UpdateResourceEndpoint - The Update Resource REST URL for an Azure ML Web Service endpoint. Type: string (or Expression with resultType string).
	UpdateResourceEndpoint interface{} `json:"updateResourceEndpoint,omitempty"`
	// ServicePrincipalID - The ID of the service principal used to authenticate against the ARM-based updateResourceEndpoint of an Azure ML web service. Type: string (or Expression with resultType string).
	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
	// ServicePrincipalKey - The key of the service principal used to authenticate against the ARM-based updateResourceEndpoint of an Azure ML web service.
	ServicePrincipalKey BasicSecretBase `json:"servicePrincipalKey,omitempty"`
	// Tenant - The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
	Tenant interface{} `json:"tenant,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AzureMLLinkedServiceTypeProperties struct.
func (amlstp *AzureMLLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "mlEndpoint":
			if v != nil {
				var mlEndpoint interface{}
				err = json.Unmarshal(*v, &mlEndpoint)
				if err != nil {
					return err
				}
				amlstp.MlEndpoint = mlEndpoint
			}
		case "apiKey":
			if v != nil {
				APIKey, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				amlstp.APIKey = APIKey
			}
		case "updateResourceEndpoint":
			if v != nil {
				var updateResourceEndpoint interface{}
				err = json.Unmarshal(*v, &updateResourceEndpoint)
				if err != nil {
					return err
				}
				amlstp.UpdateResourceEndpoint = updateResourceEndpoint
			}
		case "servicePrincipalId":
			if v != nil {
				var servicePrincipalID interface{}
				err = json.Unmarshal(*v, &servicePrincipalID)
				if err != nil {
					return err
				}
				amlstp.ServicePrincipalID = servicePrincipalID
			}
		case "servicePrincipalKey":
			if v != nil {
				servicePrincipalKey, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				amlstp.ServicePrincipalKey = servicePrincipalKey
			}
		case "tenant":
			if v != nil {
				var tenant interface{}
				err = json.Unmarshal(*v, &tenant)
				if err != nil {
					return err
				}
				amlstp.Tenant = tenant
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				amlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// AzureMLUpdateResourceActivity azure ML Update Resource management activity.
type AzureMLUpdateResourceActivity struct {
	// AzureMLUpdateResourceActivityTypeProperties - Azure ML Update Resource management activity properties.
	*AzureMLUpdateResourceActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) MarshalJSON() ([]byte, error) {
	amura.Type = TypeAzureMLUpdateResource
	objectMap := make(map[string]interface{})
	if amura.AzureMLUpdateResourceActivityTypeProperties != nil {
		objectMap["typeProperties"] = amura.AzureMLUpdateResourceActivityTypeProperties
	}
	if amura.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = amura.LinkedServiceName
	}
	if amura.Policy != nil {
		objectMap["policy"] = amura.Policy
	}
	if amura.Name != nil {
		objectMap["name"] = amura.Name
	}
	if amura.Description != nil {
		objectMap["description"] = amura.Description
	}
	if amura.DependsOn != nil {
		objectMap["dependsOn"] = amura.DependsOn
	}
	if amura.Type != "" {
		objectMap["type"] = amura.Type
	}
	for k, v := range amura.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return &amura, true
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &amura, true
}

// AsFilterActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for AzureMLUpdateResourceActivity.
func (amura AzureMLUpdateResourceActivity) AsBasicActivity() (BasicActivity, bool) {
	return &amura, true
}

// UnmarshalJSON is the custom unmarshaler for AzureMLUpdateResourceActivity struct.
func (amura *AzureMLUpdateResourceActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureMLUpdateResourceActivityTypeProperties AzureMLUpdateResourceActivityTypeProperties
				err = json.Unmarshal(*v, &azureMLUpdateResourceActivityTypeProperties)
				if err != nil {
					return err
				}
				amura.AzureMLUpdateResourceActivityTypeProperties = &azureMLUpdateResourceActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				amura.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				amura.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if amura.AdditionalProperties == nil {
					amura.AdditionalProperties = make(map[string]interface{})
				}
				amura.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				amura.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				amura.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				amura.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				amura.Type = typeVar
			}
		}
	}

	return nil
}

// AzureMLUpdateResourceActivityTypeProperties azure ML Update Resource activity properties.
type AzureMLUpdateResourceActivityTypeProperties struct {
	// TrainedModelName - Name of the Trained Model module in the Web Service experiment to be updated. Type: string (or Expression with resultType string).
	TrainedModelName interface{} `json:"trainedModelName,omitempty"`
	// TrainedModelLinkedServiceName - Name of Azure Storage linked service holding the .ilearner file that will be uploaded by the update operation.
	TrainedModelLinkedServiceName *LinkedServiceReference `json:"trainedModelLinkedServiceName,omitempty"`
	// TrainedModelFilePath - The relative file path in trainedModelLinkedService to represent the .ilearner file that will be uploaded by the update operation.  Type: string (or Expression with resultType string).
	TrainedModelFilePath interface{} `json:"trainedModelFilePath,omitempty"`
}

// AzureMLWebServiceFile azure ML WebService Input/Output file
type AzureMLWebServiceFile struct {
	// FilePath - The relative file path, including container name, in the Azure Blob Storage specified by the LinkedService. Type: string (or Expression with resultType string).
	FilePath interface{} `json:"filePath,omitempty"`
	// LinkedServiceName - Reference to an Azure Storage LinkedService, where Azure ML WebService Input/Output file located.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
}

// AzureMySQLLinkedService azure MySQL database linked service.
type AzureMySQLLinkedService struct {
	// AzureMySQLLinkedServiceTypeProperties - Azure MySQL database linked service properties.
	*AzureMySQLLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) MarshalJSON() ([]byte, error) {
	amsls.Type = TypeAzureMySQL
	objectMap := make(map[string]interface{})
	if amsls.AzureMySQLLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = amsls.AzureMySQLLinkedServiceTypeProperties
	}
	if amsls.ConnectVia != nil {
		objectMap["connectVia"] = amsls.ConnectVia
	}
	if amsls.Description != nil {
		objectMap["description"] = amsls.Description
	}
	if amsls.Parameters != nil {
		objectMap["parameters"] = amsls.Parameters
	}
	if amsls.Annotations != nil {
		objectMap["annotations"] = amsls.Annotations
	}
	if amsls.Type != "" {
		objectMap["type"] = amsls.Type
	}
	for k, v := range amsls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return &amsls, true
}

// AsOracleLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AzureMySQLLinkedService.
func (amsls AzureMySQLLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &amsls, true
}

// UnmarshalJSON is the custom unmarshaler for AzureMySQLLinkedService struct.
func (amsls *AzureMySQLLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureMySQLLinkedServiceTypeProperties AzureMySQLLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &azureMySQLLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				amsls.AzureMySQLLinkedServiceTypeProperties = &azureMySQLLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if amsls.AdditionalProperties == nil {
					amsls.AdditionalProperties = make(map[string]interface{})
				}
				amsls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				amsls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				amsls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				amsls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				amsls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				amsls.Type = typeVar
			}
		}
	}

	return nil
}

// AzureMySQLLinkedServiceTypeProperties azure MySQL database linked service properties.
type AzureMySQLLinkedServiceTypeProperties struct {
	// ConnectionString - The connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// AzureMySQLSource a copy activity Azure MySQL source.
type AzureMySQLSource struct {
	// Query - Database query. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureMySQLSource.
func (amss AzureMySQLSource) MarshalJSON() ([]byte, error) {
	amss.Type = TypeAzureMySQLSource
	objectMap := make(map[string]interface{})
	if amss.Query != nil {
		objectMap["query"] = amss.Query
	}
	if amss.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = amss.SourceRetryCount
	}
	if amss.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = amss.SourceRetryWait
	}
	if amss.Type != "" {
		objectMap["type"] = amss.Type
	}
	for k, v := range amss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return &amss, true
}

// AsHdfsSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for AzureMySQLSource.
func (amss AzureMySQLSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &amss, true
}

// UnmarshalJSON is the custom unmarshaler for AzureMySQLSource struct.
func (amss *AzureMySQLSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				amss.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if amss.AdditionalProperties == nil {
					amss.AdditionalProperties = make(map[string]interface{})
				}
				amss.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				amss.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				amss.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				amss.Type = typeVar
			}
		}
	}

	return nil
}

// AzureMySQLTableDataset the Azure MySQL database dataset.
type AzureMySQLTableDataset struct {
	// AzureMySQLTableDatasetTypeProperties - Azure MySQL database dataset properties.
	*AzureMySQLTableDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) MarshalJSON() ([]byte, error) {
	amstd.Type = TypeAzureMySQLTable
	objectMap := make(map[string]interface{})
	if amstd.AzureMySQLTableDatasetTypeProperties != nil {
		objectMap["typeProperties"] = amstd.AzureMySQLTableDatasetTypeProperties
	}
	if amstd.Description != nil {
		objectMap["description"] = amstd.Description
	}
	if amstd.Structure != nil {
		objectMap["structure"] = amstd.Structure
	}
	if amstd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = amstd.LinkedServiceName
	}
	if amstd.Parameters != nil {
		objectMap["parameters"] = amstd.Parameters
	}
	if amstd.Annotations != nil {
		objectMap["annotations"] = amstd.Annotations
	}
	if amstd.Type != "" {
		objectMap["type"] = amstd.Type
	}
	for k, v := range amstd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return &amstd, true
}

// AsOracleTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for AzureMySQLTableDataset.
func (amstd AzureMySQLTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &amstd, true
}

// UnmarshalJSON is the custom unmarshaler for AzureMySQLTableDataset struct.
func (amstd *AzureMySQLTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureMySQLTableDatasetTypeProperties AzureMySQLTableDatasetTypeProperties
				err = json.Unmarshal(*v, &azureMySQLTableDatasetTypeProperties)
				if err != nil {
					return err
				}
				amstd.AzureMySQLTableDatasetTypeProperties = &azureMySQLTableDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if amstd.AdditionalProperties == nil {
					amstd.AdditionalProperties = make(map[string]interface{})
				}
				amstd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				amstd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				amstd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				amstd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				amstd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				amstd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				amstd.Type = typeVar
			}
		}
	}

	return nil
}

// AzureMySQLTableDatasetTypeProperties azure MySQL database dataset properties.
type AzureMySQLTableDatasetTypeProperties struct {
	// TableName - The Azure MySQL database table name. Type: string (or Expression with resultType string).
	TableName interface{} `json:"tableName,omitempty"`
}

// AzurePostgreSQLLinkedService azure PostgreSQL linked service.
type AzurePostgreSQLLinkedService struct {
	// AzurePostgreSQLLinkedServiceTypeProperties - Azure PostgreSQL linked service properties.
	*AzurePostgreSQLLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) MarshalJSON() ([]byte, error) {
	apsls.Type = TypeAzurePostgreSQL
	objectMap := make(map[string]interface{})
	if apsls.AzurePostgreSQLLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = apsls.AzurePostgreSQLLinkedServiceTypeProperties
	}
	if apsls.ConnectVia != nil {
		objectMap["connectVia"] = apsls.ConnectVia
	}
	if apsls.Description != nil {
		objectMap["description"] = apsls.Description
	}
	if apsls.Parameters != nil {
		objectMap["parameters"] = apsls.Parameters
	}
	if apsls.Annotations != nil {
		objectMap["annotations"] = apsls.Annotations
	}
	if apsls.Type != "" {
		objectMap["type"] = apsls.Type
	}
	for k, v := range apsls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return &apsls, true
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AzurePostgreSQLLinkedService.
func (apsls AzurePostgreSQLLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &apsls, true
}

// UnmarshalJSON is the custom unmarshaler for AzurePostgreSQLLinkedService struct.
func (apsls *AzurePostgreSQLLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azurePostgreSQLLinkedServiceTypeProperties AzurePostgreSQLLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &azurePostgreSQLLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				apsls.AzurePostgreSQLLinkedServiceTypeProperties = &azurePostgreSQLLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if apsls.AdditionalProperties == nil {
					apsls.AdditionalProperties = make(map[string]interface{})
				}
				apsls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				apsls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				apsls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				apsls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				apsls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				apsls.Type = typeVar
			}
		}
	}

	return nil
}

// AzurePostgreSQLLinkedServiceTypeProperties azure PostgreSQL linked service properties.
type AzurePostgreSQLLinkedServiceTypeProperties struct {
	// ConnectionString - An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// AzurePostgreSQLSource a copy activity Azure PostgreSQL source.
type AzurePostgreSQLSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) MarshalJSON() ([]byte, error) {
	apss.Type = TypeAzurePostgreSQLSource
	objectMap := make(map[string]interface{})
	if apss.Query != nil {
		objectMap["query"] = apss.Query
	}
	if apss.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = apss.SourceRetryCount
	}
	if apss.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = apss.SourceRetryWait
	}
	if apss.Type != "" {
		objectMap["type"] = apss.Type
	}
	for k, v := range apss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return &apss, true
}

// AsAmazonMWSSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for AzurePostgreSQLSource.
func (apss AzurePostgreSQLSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &apss, true
}

// UnmarshalJSON is the custom unmarshaler for AzurePostgreSQLSource struct.
func (apss *AzurePostgreSQLSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				apss.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if apss.AdditionalProperties == nil {
					apss.AdditionalProperties = make(map[string]interface{})
				}
				apss.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				apss.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				apss.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				apss.Type = typeVar
			}
		}
	}

	return nil
}

// AzurePostgreSQLTableDataset azure PostgreSQL dataset.
type AzurePostgreSQLTableDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) MarshalJSON() ([]byte, error) {
	apstd.Type = TypeAzurePostgreSQLTable
	objectMap := make(map[string]interface{})
	if apstd.Description != nil {
		objectMap["description"] = apstd.Description
	}
	if apstd.Structure != nil {
		objectMap["structure"] = apstd.Structure
	}
	if apstd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = apstd.LinkedServiceName
	}
	if apstd.Parameters != nil {
		objectMap["parameters"] = apstd.Parameters
	}
	if apstd.Annotations != nil {
		objectMap["annotations"] = apstd.Annotations
	}
	if apstd.Type != "" {
		objectMap["type"] = apstd.Type
	}
	for k, v := range apstd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return &apstd, true
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for AzurePostgreSQLTableDataset.
func (apstd AzurePostgreSQLTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &apstd, true
}

// UnmarshalJSON is the custom unmarshaler for AzurePostgreSQLTableDataset struct.
func (apstd *AzurePostgreSQLTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if apstd.AdditionalProperties == nil {
					apstd.AdditionalProperties = make(map[string]interface{})
				}
				apstd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				apstd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				apstd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				apstd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				apstd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				apstd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				apstd.Type = typeVar
			}
		}
	}

	return nil
}

// AzureQueueSink a copy activity Azure Queue sink.
type AzureQueueSink struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureQueueSink.
func (aqs AzureQueueSink) MarshalJSON() ([]byte, error) {
	aqs.Type = TypeAzureQueueSink
	objectMap := make(map[string]interface{})
	if aqs.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = aqs.WriteBatchSize
	}
	if aqs.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = aqs.WriteBatchTimeout
	}
	if aqs.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = aqs.SinkRetryCount
	}
	if aqs.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = aqs.SinkRetryWait
	}
	if aqs.Type != "" {
		objectMap["type"] = aqs.Type
	}
	for k, v := range aqs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return &aqs, true
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for AzureQueueSink.
func (aqs AzureQueueSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &aqs, true
}

// UnmarshalJSON is the custom unmarshaler for AzureQueueSink struct.
func (aqs *AzureQueueSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if aqs.AdditionalProperties == nil {
					aqs.AdditionalProperties = make(map[string]interface{})
				}
				aqs.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				aqs.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				aqs.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				aqs.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				aqs.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				aqs.Type = typeVar
			}
		}
	}

	return nil
}

// AzureSearchIndexDataset the Azure Search Index.
type AzureSearchIndexDataset struct {
	// AzureSearchIndexDatasetTypeProperties - Properties specific to this dataset type.
	*AzureSearchIndexDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) MarshalJSON() ([]byte, error) {
	asid.Type = TypeAzureSearchIndex
	objectMap := make(map[string]interface{})
	if asid.AzureSearchIndexDatasetTypeProperties != nil {
		objectMap["typeProperties"] = asid.AzureSearchIndexDatasetTypeProperties
	}
	if asid.Description != nil {
		objectMap["description"] = asid.Description
	}
	if asid.Structure != nil {
		objectMap["structure"] = asid.Structure
	}
	if asid.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = asid.LinkedServiceName
	}
	if asid.Parameters != nil {
		objectMap["parameters"] = asid.Parameters
	}
	if asid.Annotations != nil {
		objectMap["annotations"] = asid.Annotations
	}
	if asid.Type != "" {
		objectMap["type"] = asid.Type
	}
	for k, v := range asid.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return &asid, true
}

// AsWebTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for AzureSearchIndexDataset.
func (asid AzureSearchIndexDataset) AsBasicDataset() (BasicDataset, bool) {
	return &asid, true
}

// UnmarshalJSON is the custom unmarshaler for AzureSearchIndexDataset struct.
func (asid *AzureSearchIndexDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureSearchIndexDatasetTypeProperties AzureSearchIndexDatasetTypeProperties
				err = json.Unmarshal(*v, &azureSearchIndexDatasetTypeProperties)
				if err != nil {
					return err
				}
				asid.AzureSearchIndexDatasetTypeProperties = &azureSearchIndexDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if asid.AdditionalProperties == nil {
					asid.AdditionalProperties = make(map[string]interface{})
				}
				asid.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				asid.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				asid.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				asid.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				asid.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				asid.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				asid.Type = typeVar
			}
		}
	}

	return nil
}

// AzureSearchIndexDatasetTypeProperties properties specific to this dataset type.
type AzureSearchIndexDatasetTypeProperties struct {
	// IndexName - The name of the Azure Search Index. Type: string (or Expression with resultType string).
	IndexName interface{} `json:"indexName,omitempty"`
}

// AzureSearchIndexSink a copy activity Azure Search Index sink.
type AzureSearchIndexSink struct {
	// WriteBehavior - Specify the write behavior when upserting documents into Azure Search Index.
	WriteBehavior interface{} `json:"writeBehavior,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) MarshalJSON() ([]byte, error) {
	asis.Type = TypeAzureSearchIndexSink
	objectMap := make(map[string]interface{})
	if asis.WriteBehavior != nil {
		objectMap["writeBehavior"] = asis.WriteBehavior
	}
	if asis.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = asis.WriteBatchSize
	}
	if asis.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = asis.WriteBatchTimeout
	}
	if asis.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = asis.SinkRetryCount
	}
	if asis.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = asis.SinkRetryWait
	}
	if asis.Type != "" {
		objectMap["type"] = asis.Type
	}
	for k, v := range asis.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return &asis, true
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for AzureSearchIndexSink.
func (asis AzureSearchIndexSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &asis, true
}

// UnmarshalJSON is the custom unmarshaler for AzureSearchIndexSink struct.
func (asis *AzureSearchIndexSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "writeBehavior":
			if v != nil {
				var writeBehavior interface{}
				err = json.Unmarshal(*v, &writeBehavior)
				if err != nil {
					return err
				}
				asis.WriteBehavior = writeBehavior
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if asis.AdditionalProperties == nil {
					asis.AdditionalProperties = make(map[string]interface{})
				}
				asis.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				asis.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				asis.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				asis.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				asis.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				asis.Type = typeVar
			}
		}
	}

	return nil
}

// AzureSearchLinkedService linked service for Windows Azure Search Service.
type AzureSearchLinkedService struct {
	// AzureSearchLinkedServiceTypeProperties - Windows Azure Search Service linked service properties.
	*AzureSearchLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) MarshalJSON() ([]byte, error) {
	asls.Type = TypeAzureSearch
	objectMap := make(map[string]interface{})
	if asls.AzureSearchLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = asls.AzureSearchLinkedServiceTypeProperties
	}
	if asls.ConnectVia != nil {
		objectMap["connectVia"] = asls.ConnectVia
	}
	if asls.Description != nil {
		objectMap["description"] = asls.Description
	}
	if asls.Parameters != nil {
		objectMap["parameters"] = asls.Parameters
	}
	if asls.Annotations != nil {
		objectMap["annotations"] = asls.Annotations
	}
	if asls.Type != "" {
		objectMap["type"] = asls.Type
	}
	for k, v := range asls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return &asls, true
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AzureSearchLinkedService.
func (asls AzureSearchLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &asls, true
}

// UnmarshalJSON is the custom unmarshaler for AzureSearchLinkedService struct.
func (asls *AzureSearchLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureSearchLinkedServiceTypeProperties AzureSearchLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &azureSearchLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				asls.AzureSearchLinkedServiceTypeProperties = &azureSearchLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if asls.AdditionalProperties == nil {
					asls.AdditionalProperties = make(map[string]interface{})
				}
				asls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				asls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				asls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				asls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				asls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				asls.Type = typeVar
			}
		}
	}

	return nil
}

// AzureSearchLinkedServiceTypeProperties windows Azure Search Service linked service properties.
type AzureSearchLinkedServiceTypeProperties struct {
	// URL - URL for Azure Search service. Type: string (or Expression with resultType string).
	URL interface{} `json:"url,omitempty"`
	// Key - Admin Key for Azure Search service
	Key BasicSecretBase `json:"key,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AzureSearchLinkedServiceTypeProperties struct.
func (aslstp *AzureSearchLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "url":
			if v != nil {
				var URL interface{}
				err = json.Unmarshal(*v, &URL)
				if err != nil {
					return err
				}
				aslstp.URL = URL
			}
		case "key":
			if v != nil {
				key, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				aslstp.Key = key
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				aslstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// AzureSQLDatabaseLinkedService microsoft Azure SQL Database linked service.
type AzureSQLDatabaseLinkedService struct {
	// AzureSQLDatabaseLinkedServiceTypeProperties - Azure SQL Database linked service properties.
	*AzureSQLDatabaseLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) MarshalJSON() ([]byte, error) {
	asdls.Type = TypeAzureSQLDatabase
	objectMap := make(map[string]interface{})
	if asdls.AzureSQLDatabaseLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = asdls.AzureSQLDatabaseLinkedServiceTypeProperties
	}
	if asdls.ConnectVia != nil {
		objectMap["connectVia"] = asdls.ConnectVia
	}
	if asdls.Description != nil {
		objectMap["description"] = asdls.Description
	}
	if asdls.Parameters != nil {
		objectMap["parameters"] = asdls.Parameters
	}
	if asdls.Annotations != nil {
		objectMap["annotations"] = asdls.Annotations
	}
	if asdls.Type != "" {
		objectMap["type"] = asdls.Type
	}
	for k, v := range asdls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return &asdls, true
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AzureSQLDatabaseLinkedService.
func (asdls AzureSQLDatabaseLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &asdls, true
}

// UnmarshalJSON is the custom unmarshaler for AzureSQLDatabaseLinkedService struct.
func (asdls *AzureSQLDatabaseLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureSQLDatabaseLinkedServiceTypeProperties AzureSQLDatabaseLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &azureSQLDatabaseLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				asdls.AzureSQLDatabaseLinkedServiceTypeProperties = &azureSQLDatabaseLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if asdls.AdditionalProperties == nil {
					asdls.AdditionalProperties = make(map[string]interface{})
				}
				asdls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				asdls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				asdls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				asdls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				asdls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				asdls.Type = typeVar
			}
		}
	}

	return nil
}

// AzureSQLDatabaseLinkedServiceTypeProperties azure SQL Database linked service properties.
type AzureSQLDatabaseLinkedServiceTypeProperties struct {
	// ConnectionString - The connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// ServicePrincipalID - The ID of the service principal used to authenticate against Azure SQL Database. Type: string (or Expression with resultType string).
	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
	// ServicePrincipalKey - The key of the service principal used to authenticate against Azure SQL Database.
	ServicePrincipalKey BasicSecretBase `json:"servicePrincipalKey,omitempty"`
	// Tenant - The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
	Tenant interface{} `json:"tenant,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AzureSQLDatabaseLinkedServiceTypeProperties struct.
func (asdlstp *AzureSQLDatabaseLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "connectionString":
			if v != nil {
				var connectionString interface{}
				err = json.Unmarshal(*v, &connectionString)
				if err != nil {
					return err
				}
				asdlstp.ConnectionString = connectionString
			}
		case "servicePrincipalId":
			if v != nil {
				var servicePrincipalID interface{}
				err = json.Unmarshal(*v, &servicePrincipalID)
				if err != nil {
					return err
				}
				asdlstp.ServicePrincipalID = servicePrincipalID
			}
		case "servicePrincipalKey":
			if v != nil {
				servicePrincipalKey, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				asdlstp.ServicePrincipalKey = servicePrincipalKey
			}
		case "tenant":
			if v != nil {
				var tenant interface{}
				err = json.Unmarshal(*v, &tenant)
				if err != nil {
					return err
				}
				asdlstp.Tenant = tenant
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				asdlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// AzureSQLDWLinkedService azure SQL Data Warehouse linked service.
type AzureSQLDWLinkedService struct {
	// AzureSQLDWLinkedServiceTypeProperties - Azure SQL Data Warehouse linked service properties.
	*AzureSQLDWLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) MarshalJSON() ([]byte, error) {
	asdls.Type = TypeAzureSQLDW
	objectMap := make(map[string]interface{})
	if asdls.AzureSQLDWLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = asdls.AzureSQLDWLinkedServiceTypeProperties
	}
	if asdls.ConnectVia != nil {
		objectMap["connectVia"] = asdls.ConnectVia
	}
	if asdls.Description != nil {
		objectMap["description"] = asdls.Description
	}
	if asdls.Parameters != nil {
		objectMap["parameters"] = asdls.Parameters
	}
	if asdls.Annotations != nil {
		objectMap["annotations"] = asdls.Annotations
	}
	if asdls.Type != "" {
		objectMap["type"] = asdls.Type
	}
	for k, v := range asdls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return &asdls, true
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AzureSQLDWLinkedService.
func (asdls AzureSQLDWLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &asdls, true
}

// UnmarshalJSON is the custom unmarshaler for AzureSQLDWLinkedService struct.
func (asdls *AzureSQLDWLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureSQLDWLinkedServiceTypeProperties AzureSQLDWLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &azureSQLDWLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				asdls.AzureSQLDWLinkedServiceTypeProperties = &azureSQLDWLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if asdls.AdditionalProperties == nil {
					asdls.AdditionalProperties = make(map[string]interface{})
				}
				asdls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				asdls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				asdls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				asdls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				asdls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				asdls.Type = typeVar
			}
		}
	}

	return nil
}

// AzureSQLDWLinkedServiceTypeProperties azure SQL Data Warehouse linked service properties.
type AzureSQLDWLinkedServiceTypeProperties struct {
	// ConnectionString - The connection string. Type: string, SecureString or AzureKeyVaultSecretReference. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// ServicePrincipalID - The ID of the service principal used to authenticate against Azure SQL Data Warehouse. Type: string (or Expression with resultType string).
	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
	// ServicePrincipalKey - The key of the service principal used to authenticate against Azure SQL Data Warehouse.
	ServicePrincipalKey BasicSecretBase `json:"servicePrincipalKey,omitempty"`
	// Tenant - The name or ID of the tenant to which the service principal belongs. Type: string (or Expression with resultType string).
	Tenant interface{} `json:"tenant,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AzureSQLDWLinkedServiceTypeProperties struct.
func (asdlstp *AzureSQLDWLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "connectionString":
			if v != nil {
				var connectionString interface{}
				err = json.Unmarshal(*v, &connectionString)
				if err != nil {
					return err
				}
				asdlstp.ConnectionString = connectionString
			}
		case "servicePrincipalId":
			if v != nil {
				var servicePrincipalID interface{}
				err = json.Unmarshal(*v, &servicePrincipalID)
				if err != nil {
					return err
				}
				asdlstp.ServicePrincipalID = servicePrincipalID
			}
		case "servicePrincipalKey":
			if v != nil {
				servicePrincipalKey, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				asdlstp.ServicePrincipalKey = servicePrincipalKey
			}
		case "tenant":
			if v != nil {
				var tenant interface{}
				err = json.Unmarshal(*v, &tenant)
				if err != nil {
					return err
				}
				asdlstp.Tenant = tenant
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				asdlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// AzureSQLDWTableDataset the Azure SQL Data Warehouse dataset.
type AzureSQLDWTableDataset struct {
	// AzureSQLDWTableDatasetTypeProperties - Azure SQL Data Warehouse dataset properties.
	*AzureSQLDWTableDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) MarshalJSON() ([]byte, error) {
	asdtd.Type = TypeAzureSQLDWTable
	objectMap := make(map[string]interface{})
	if asdtd.AzureSQLDWTableDatasetTypeProperties != nil {
		objectMap["typeProperties"] = asdtd.AzureSQLDWTableDatasetTypeProperties
	}
	if asdtd.Description != nil {
		objectMap["description"] = asdtd.Description
	}
	if asdtd.Structure != nil {
		objectMap["structure"] = asdtd.Structure
	}
	if asdtd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = asdtd.LinkedServiceName
	}
	if asdtd.Parameters != nil {
		objectMap["parameters"] = asdtd.Parameters
	}
	if asdtd.Annotations != nil {
		objectMap["annotations"] = asdtd.Annotations
	}
	if asdtd.Type != "" {
		objectMap["type"] = asdtd.Type
	}
	for k, v := range asdtd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return &asdtd, true
}

// AsAzureSQLTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for AzureSQLDWTableDataset.
func (asdtd AzureSQLDWTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &asdtd, true
}

// UnmarshalJSON is the custom unmarshaler for AzureSQLDWTableDataset struct.
func (asdtd *AzureSQLDWTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureSQLDWTableDatasetTypeProperties AzureSQLDWTableDatasetTypeProperties
				err = json.Unmarshal(*v, &azureSQLDWTableDatasetTypeProperties)
				if err != nil {
					return err
				}
				asdtd.AzureSQLDWTableDatasetTypeProperties = &azureSQLDWTableDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if asdtd.AdditionalProperties == nil {
					asdtd.AdditionalProperties = make(map[string]interface{})
				}
				asdtd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				asdtd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				asdtd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				asdtd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				asdtd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				asdtd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				asdtd.Type = typeVar
			}
		}
	}

	return nil
}

// AzureSQLDWTableDatasetTypeProperties azure SQL Data Warehouse dataset properties.
type AzureSQLDWTableDatasetTypeProperties struct {
	// TableName - The table name of the Azure SQL Data Warehouse. Type: string (or Expression with resultType string).
	TableName interface{} `json:"tableName,omitempty"`
}

// AzureSQLTableDataset the Azure SQL Server database dataset.
type AzureSQLTableDataset struct {
	// AzureSQLTableDatasetTypeProperties - Azure SQL dataset properties.
	*AzureSQLTableDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) MarshalJSON() ([]byte, error) {
	astd.Type = TypeAzureSQLTable
	objectMap := make(map[string]interface{})
	if astd.AzureSQLTableDatasetTypeProperties != nil {
		objectMap["typeProperties"] = astd.AzureSQLTableDatasetTypeProperties
	}
	if astd.Description != nil {
		objectMap["description"] = astd.Description
	}
	if astd.Structure != nil {
		objectMap["structure"] = astd.Structure
	}
	if astd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = astd.LinkedServiceName
	}
	if astd.Parameters != nil {
		objectMap["parameters"] = astd.Parameters
	}
	if astd.Annotations != nil {
		objectMap["annotations"] = astd.Annotations
	}
	if astd.Type != "" {
		objectMap["type"] = astd.Type
	}
	for k, v := range astd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return &astd, true
}

// AsAzureTableDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for AzureSQLTableDataset.
func (astd AzureSQLTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &astd, true
}

// UnmarshalJSON is the custom unmarshaler for AzureSQLTableDataset struct.
func (astd *AzureSQLTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureSQLTableDatasetTypeProperties AzureSQLTableDatasetTypeProperties
				err = json.Unmarshal(*v, &azureSQLTableDatasetTypeProperties)
				if err != nil {
					return err
				}
				astd.AzureSQLTableDatasetTypeProperties = &azureSQLTableDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if astd.AdditionalProperties == nil {
					astd.AdditionalProperties = make(map[string]interface{})
				}
				astd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				astd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				astd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				astd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				astd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				astd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				astd.Type = typeVar
			}
		}
	}

	return nil
}

// AzureSQLTableDatasetTypeProperties azure SQL dataset properties.
type AzureSQLTableDatasetTypeProperties struct {
	// TableName - The table name of the Azure SQL database. Type: string (or Expression with resultType string).
	TableName interface{} `json:"tableName,omitempty"`
}

// AzureStorageLinkedService the storage account linked service.
type AzureStorageLinkedService struct {
	// AzureStorageLinkedServiceTypeProperties - Azure Storage linked service properties.
	*AzureStorageLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) MarshalJSON() ([]byte, error) {
	asls.Type = TypeAzureStorage
	objectMap := make(map[string]interface{})
	if asls.AzureStorageLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = asls.AzureStorageLinkedServiceTypeProperties
	}
	if asls.ConnectVia != nil {
		objectMap["connectVia"] = asls.ConnectVia
	}
	if asls.Description != nil {
		objectMap["description"] = asls.Description
	}
	if asls.Parameters != nil {
		objectMap["parameters"] = asls.Parameters
	}
	if asls.Annotations != nil {
		objectMap["annotations"] = asls.Annotations
	}
	if asls.Type != "" {
		objectMap["type"] = asls.Type
	}
	for k, v := range asls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return &asls, true
}

// AsLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for AzureStorageLinkedService.
func (asls AzureStorageLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &asls, true
}

// UnmarshalJSON is the custom unmarshaler for AzureStorageLinkedService struct.
func (asls *AzureStorageLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureStorageLinkedServiceTypeProperties AzureStorageLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &azureStorageLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				asls.AzureStorageLinkedServiceTypeProperties = &azureStorageLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if asls.AdditionalProperties == nil {
					asls.AdditionalProperties = make(map[string]interface{})
				}
				asls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				asls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				asls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				asls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				asls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				asls.Type = typeVar
			}
		}
	}

	return nil
}

// AzureStorageLinkedServiceTypeProperties azure Storage linked service properties.
type AzureStorageLinkedServiceTypeProperties struct {
	// ConnectionString - The connection string. It is mutually exclusive with sasUri property. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// SasURI - SAS URI of the Azure Storage resource. It is mutually exclusive with connectionString property.
	SasURI BasicSecretBase `json:"sasUri,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for AzureStorageLinkedServiceTypeProperties struct.
func (aslstp *AzureStorageLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "connectionString":
			if v != nil {
				var connectionString interface{}
				err = json.Unmarshal(*v, &connectionString)
				if err != nil {
					return err
				}
				aslstp.ConnectionString = connectionString
			}
		case "sasUri":
			if v != nil {
				sasURI, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				aslstp.SasURI = sasURI
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				aslstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// AzureTableDataset the Azure Table storage dataset.
type AzureTableDataset struct {
	// AzureTableDatasetTypeProperties - Azure Table dataset properties.
	*AzureTableDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureTableDataset.
func (atd AzureTableDataset) MarshalJSON() ([]byte, error) {
	atd.Type = TypeAzureTable
	objectMap := make(map[string]interface{})
	if atd.AzureTableDatasetTypeProperties != nil {
		objectMap["typeProperties"] = atd.AzureTableDatasetTypeProperties
	}
	if atd.Description != nil {
		objectMap["description"] = atd.Description
	}
	if atd.Structure != nil {
		objectMap["structure"] = atd.Structure
	}
	if atd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = atd.LinkedServiceName
	}
	if atd.Parameters != nil {
		objectMap["parameters"] = atd.Parameters
	}
	if atd.Annotations != nil {
		objectMap["annotations"] = atd.Annotations
	}
	if atd.Type != "" {
		objectMap["type"] = atd.Type
	}
	for k, v := range atd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return &atd, true
}

// AsAzureBlobDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for AzureTableDataset.
func (atd AzureTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &atd, true
}

// UnmarshalJSON is the custom unmarshaler for AzureTableDataset struct.
func (atd *AzureTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var azureTableDatasetTypeProperties AzureTableDatasetTypeProperties
				err = json.Unmarshal(*v, &azureTableDatasetTypeProperties)
				if err != nil {
					return err
				}
				atd.AzureTableDatasetTypeProperties = &azureTableDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if atd.AdditionalProperties == nil {
					atd.AdditionalProperties = make(map[string]interface{})
				}
				atd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				atd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				atd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				atd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				atd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				atd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				atd.Type = typeVar
			}
		}
	}

	return nil
}

// AzureTableDatasetTypeProperties azure Table dataset properties.
type AzureTableDatasetTypeProperties struct {
	// TableName - The table name of the Azure Table storage. Type: string (or Expression with resultType string).
	TableName interface{} `json:"tableName,omitempty"`
}

// AzureTableSink a copy activity Azure Table sink.
type AzureTableSink struct {
	// AzureTableDefaultPartitionKeyValue - Azure Table default partition key value. Type: string (or Expression with resultType string).
	AzureTableDefaultPartitionKeyValue interface{} `json:"azureTableDefaultPartitionKeyValue,omitempty"`
	// AzureTablePartitionKeyName - Azure Table partition key name. Type: string (or Expression with resultType string).
	AzureTablePartitionKeyName interface{} `json:"azureTablePartitionKeyName,omitempty"`
	// AzureTableRowKeyName - Azure Table row key name. Type: string (or Expression with resultType string).
	AzureTableRowKeyName interface{} `json:"azureTableRowKeyName,omitempty"`
	// AzureTableInsertType - Azure Table insert type. Type: string (or Expression with resultType string).
	AzureTableInsertType interface{} `json:"azureTableInsertType,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureTableSink.
func (ats AzureTableSink) MarshalJSON() ([]byte, error) {
	ats.Type = TypeAzureTableSink
	objectMap := make(map[string]interface{})
	if ats.AzureTableDefaultPartitionKeyValue != nil {
		objectMap["azureTableDefaultPartitionKeyValue"] = ats.AzureTableDefaultPartitionKeyValue
	}
	if ats.AzureTablePartitionKeyName != nil {
		objectMap["azureTablePartitionKeyName"] = ats.AzureTablePartitionKeyName
	}
	if ats.AzureTableRowKeyName != nil {
		objectMap["azureTableRowKeyName"] = ats.AzureTableRowKeyName
	}
	if ats.AzureTableInsertType != nil {
		objectMap["azureTableInsertType"] = ats.AzureTableInsertType
	}
	if ats.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = ats.WriteBatchSize
	}
	if ats.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = ats.WriteBatchTimeout
	}
	if ats.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = ats.SinkRetryCount
	}
	if ats.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = ats.SinkRetryWait
	}
	if ats.Type != "" {
		objectMap["type"] = ats.Type
	}
	for k, v := range ats.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return &ats, true
}

// AsAzureQueueSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for AzureTableSink.
func (ats AzureTableSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &ats, true
}

// UnmarshalJSON is the custom unmarshaler for AzureTableSink struct.
func (ats *AzureTableSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "azureTableDefaultPartitionKeyValue":
			if v != nil {
				var azureTableDefaultPartitionKeyValue interface{}
				err = json.Unmarshal(*v, &azureTableDefaultPartitionKeyValue)
				if err != nil {
					return err
				}
				ats.AzureTableDefaultPartitionKeyValue = azureTableDefaultPartitionKeyValue
			}
		case "azureTablePartitionKeyName":
			if v != nil {
				var azureTablePartitionKeyName interface{}
				err = json.Unmarshal(*v, &azureTablePartitionKeyName)
				if err != nil {
					return err
				}
				ats.AzureTablePartitionKeyName = azureTablePartitionKeyName
			}
		case "azureTableRowKeyName":
			if v != nil {
				var azureTableRowKeyName interface{}
				err = json.Unmarshal(*v, &azureTableRowKeyName)
				if err != nil {
					return err
				}
				ats.AzureTableRowKeyName = azureTableRowKeyName
			}
		case "azureTableInsertType":
			if v != nil {
				var azureTableInsertType interface{}
				err = json.Unmarshal(*v, &azureTableInsertType)
				if err != nil {
					return err
				}
				ats.AzureTableInsertType = azureTableInsertType
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ats.AdditionalProperties == nil {
					ats.AdditionalProperties = make(map[string]interface{})
				}
				ats.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				ats.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				ats.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				ats.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				ats.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ats.Type = typeVar
			}
		}
	}

	return nil
}

// AzureTableSource a copy activity Azure Table source.
type AzureTableSource struct {
	// AzureTableSourceQuery - Azure Table source query. Type: string (or Expression with resultType string).
	AzureTableSourceQuery interface{} `json:"azureTableSourceQuery,omitempty"`
	// AzureTableSourceIgnoreTableNotFound - Azure Table source ignore table not found. Type: boolean (or Expression with resultType boolean).
	AzureTableSourceIgnoreTableNotFound interface{} `json:"azureTableSourceIgnoreTableNotFound,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for AzureTableSource.
func (ats AzureTableSource) MarshalJSON() ([]byte, error) {
	ats.Type = TypeAzureTableSource
	objectMap := make(map[string]interface{})
	if ats.AzureTableSourceQuery != nil {
		objectMap["azureTableSourceQuery"] = ats.AzureTableSourceQuery
	}
	if ats.AzureTableSourceIgnoreTableNotFound != nil {
		objectMap["azureTableSourceIgnoreTableNotFound"] = ats.AzureTableSourceIgnoreTableNotFound
	}
	if ats.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ats.SourceRetryCount
	}
	if ats.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ats.SourceRetryWait
	}
	if ats.Type != "" {
		objectMap["type"] = ats.Type
	}
	for k, v := range ats.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return &ats, true
}

// AsCopySource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for AzureTableSource.
func (ats AzureTableSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ats, true
}

// UnmarshalJSON is the custom unmarshaler for AzureTableSource struct.
func (ats *AzureTableSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "azureTableSourceQuery":
			if v != nil {
				var azureTableSourceQuery interface{}
				err = json.Unmarshal(*v, &azureTableSourceQuery)
				if err != nil {
					return err
				}
				ats.AzureTableSourceQuery = azureTableSourceQuery
			}
		case "azureTableSourceIgnoreTableNotFound":
			if v != nil {
				var azureTableSourceIgnoreTableNotFound interface{}
				err = json.Unmarshal(*v, &azureTableSourceIgnoreTableNotFound)
				if err != nil {
					return err
				}
				ats.AzureTableSourceIgnoreTableNotFound = azureTableSourceIgnoreTableNotFound
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ats.AdditionalProperties == nil {
					ats.AdditionalProperties = make(map[string]interface{})
				}
				ats.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ats.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ats.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ats.Type = typeVar
			}
		}
	}

	return nil
}

// BlobEventsTrigger trigger that runs every time a Blob event occurs.
type BlobEventsTrigger struct {
	// BlobEventsTriggerTypeProperties - Blob Events Trigger properties.
	*BlobEventsTriggerTypeProperties `json:"typeProperties,omitempty"`
	// Pipelines - Pipelines that need to be started.
	Pipelines *[]TriggerPipelineReference `json:"pipelines,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Trigger description.
	Description *string `json:"description,omitempty"`
	// RuntimeState - READ-ONLY; Indicates if trigger is running or not. Updated when Start/Stop APIs are called on the Trigger. Possible values include: 'TriggerRuntimeStateStarted', 'TriggerRuntimeStateStopped', 'TriggerRuntimeStateDisabled'
	RuntimeState TriggerRuntimeState `json:"runtimeState,omitempty"`
	// Type - Possible values include: 'TypeTrigger', 'TypeTumblingWindowTrigger', 'TypeBlobEventsTrigger', 'TypeBlobTrigger', 'TypeScheduleTrigger', 'TypeMultiplePipelineTrigger'
	Type TypeBasicTrigger `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for BlobEventsTrigger.
func (bet BlobEventsTrigger) MarshalJSON() ([]byte, error) {
	bet.Type = TypeBlobEventsTrigger
	objectMap := make(map[string]interface{})
	if bet.BlobEventsTriggerTypeProperties != nil {
		objectMap["typeProperties"] = bet.BlobEventsTriggerTypeProperties
	}
	if bet.Pipelines != nil {
		objectMap["pipelines"] = bet.Pipelines
	}
	if bet.Description != nil {
		objectMap["description"] = bet.Description
	}
	if bet.Type != "" {
		objectMap["type"] = bet.Type
	}
	for k, v := range bet.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsTumblingWindowTrigger is the BasicTrigger implementation for BlobEventsTrigger.
func (bet BlobEventsTrigger) AsTumblingWindowTrigger() (*TumblingWindowTrigger, bool) {
	return nil, false
}

// AsBlobEventsTrigger is the BasicTrigger implementation for BlobEventsTrigger.
func (bet BlobEventsTrigger) AsBlobEventsTrigger() (*BlobEventsTrigger, bool) {
	return &bet, true
}

// AsBlobTrigger is the BasicTrigger implementation for BlobEventsTrigger.
func (bet BlobEventsTrigger) AsBlobTrigger() (*BlobTrigger, bool) {
	return nil, false
}

// AsScheduleTrigger is the BasicTrigger implementation for BlobEventsTrigger.
func (bet BlobEventsTrigger) AsScheduleTrigger() (*ScheduleTrigger, bool) {
	return nil, false
}

// AsMultiplePipelineTrigger is the BasicTrigger implementation for BlobEventsTrigger.
func (bet BlobEventsTrigger) AsMultiplePipelineTrigger() (*MultiplePipelineTrigger, bool) {
	return nil, false
}

// AsBasicMultiplePipelineTrigger is the BasicTrigger implementation for BlobEventsTrigger.
func (bet BlobEventsTrigger) AsBasicMultiplePipelineTrigger() (BasicMultiplePipelineTrigger, bool) {
	return &bet, true
}

// AsTrigger is the BasicTrigger implementation for BlobEventsTrigger.
func (bet BlobEventsTrigger) AsTrigger() (*Trigger, bool) {
	return nil, false
}

// AsBasicTrigger is the BasicTrigger implementation for BlobEventsTrigger.
func (bet BlobEventsTrigger) AsBasicTrigger() (BasicTrigger, bool) {
	return &bet, true
}

// UnmarshalJSON is the custom unmarshaler for BlobEventsTrigger struct.
func (bet *BlobEventsTrigger) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var blobEventsTriggerTypeProperties BlobEventsTriggerTypeProperties
				err = json.Unmarshal(*v, &blobEventsTriggerTypeProperties)
				if err != nil {
					return err
				}
				bet.BlobEventsTriggerTypeProperties = &blobEventsTriggerTypeProperties
			}
		case "pipelines":
			if v != nil {
				var pipelines []TriggerPipelineReference
				err = json.Unmarshal(*v, &pipelines)
				if err != nil {
					return err
				}
				bet.Pipelines = &pipelines
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if bet.AdditionalProperties == nil {
					bet.AdditionalProperties = make(map[string]interface{})
				}
				bet.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				bet.Description = &description
			}
		case "runtimeState":
			if v != nil {
				var runtimeState TriggerRuntimeState
				err = json.Unmarshal(*v, &runtimeState)
				if err != nil {
					return err
				}
				bet.RuntimeState = runtimeState
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicTrigger
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				bet.Type = typeVar
			}
		}
	}

	return nil
}

// BlobEventsTriggerTypeProperties blob Events Trigger properties.
type BlobEventsTriggerTypeProperties struct {
	// BlobPathBeginsWith - 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 in the december folder under the records container. At least one of these must be provided: blobPathBeginsWith, blobPathEndsWith.
	BlobPathBeginsWith *string `json:"blobPathBeginsWith,omitempty"`
	// BlobPathEndsWith - 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 in a december folder. At least one of these must be provided: blobPathBeginsWith, blobPathEndsWith.
	BlobPathEndsWith *string `json:"blobPathEndsWith,omitempty"`
	// IgnoreEmptyBlobs - If set to true, blobs with zero bytes will be ignored.
	IgnoreEmptyBlobs *bool `json:"ignoreEmptyBlobs,omitempty"`
	// Events - The type of events that cause this trigger to fire.
	Events *[]BlobEventTypes `json:"events,omitempty"`
	// Scope - The ARM resource ID of the Storage Account.
	Scope *string `json:"scope,omitempty"`
}

// BlobSink a copy activity Azure Blob sink.
type BlobSink struct {
	// BlobWriterOverwriteFiles - Blob writer overwrite files. Type: boolean (or Expression with resultType boolean).
	BlobWriterOverwriteFiles interface{} `json:"blobWriterOverwriteFiles,omitempty"`
	// BlobWriterDateTimeFormat - Blob writer date time format. Type: string (or Expression with resultType string).
	BlobWriterDateTimeFormat interface{} `json:"blobWriterDateTimeFormat,omitempty"`
	// BlobWriterAddHeader - Blob writer add header. Type: boolean (or Expression with resultType boolean).
	BlobWriterAddHeader interface{} `json:"blobWriterAddHeader,omitempty"`
	// CopyBehavior - The type of copy behavior for copy sink.
	CopyBehavior interface{} `json:"copyBehavior,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for BlobSink.
func (bs BlobSink) MarshalJSON() ([]byte, error) {
	bs.Type = TypeBlobSink
	objectMap := make(map[string]interface{})
	if bs.BlobWriterOverwriteFiles != nil {
		objectMap["blobWriterOverwriteFiles"] = bs.BlobWriterOverwriteFiles
	}
	if bs.BlobWriterDateTimeFormat != nil {
		objectMap["blobWriterDateTimeFormat"] = bs.BlobWriterDateTimeFormat
	}
	if bs.BlobWriterAddHeader != nil {
		objectMap["blobWriterAddHeader"] = bs.BlobWriterAddHeader
	}
	if bs.CopyBehavior != nil {
		objectMap["copyBehavior"] = bs.CopyBehavior
	}
	if bs.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = bs.WriteBatchSize
	}
	if bs.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = bs.WriteBatchTimeout
	}
	if bs.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = bs.SinkRetryCount
	}
	if bs.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = bs.SinkRetryWait
	}
	if bs.Type != "" {
		objectMap["type"] = bs.Type
	}
	for k, v := range bs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsBlobSink() (*BlobSink, bool) {
	return &bs, true
}

// AsAzureTableSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for BlobSink.
func (bs BlobSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &bs, true
}

// UnmarshalJSON is the custom unmarshaler for BlobSink struct.
func (bs *BlobSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "blobWriterOverwriteFiles":
			if v != nil {
				var blobWriterOverwriteFiles interface{}
				err = json.Unmarshal(*v, &blobWriterOverwriteFiles)
				if err != nil {
					return err
				}
				bs.BlobWriterOverwriteFiles = blobWriterOverwriteFiles
			}
		case "blobWriterDateTimeFormat":
			if v != nil {
				var blobWriterDateTimeFormat interface{}
				err = json.Unmarshal(*v, &blobWriterDateTimeFormat)
				if err != nil {
					return err
				}
				bs.BlobWriterDateTimeFormat = blobWriterDateTimeFormat
			}
		case "blobWriterAddHeader":
			if v != nil {
				var blobWriterAddHeader interface{}
				err = json.Unmarshal(*v, &blobWriterAddHeader)
				if err != nil {
					return err
				}
				bs.BlobWriterAddHeader = blobWriterAddHeader
			}
		case "copyBehavior":
			if v != nil {
				var copyBehavior interface{}
				err = json.Unmarshal(*v, &copyBehavior)
				if err != nil {
					return err
				}
				bs.CopyBehavior = copyBehavior
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if bs.AdditionalProperties == nil {
					bs.AdditionalProperties = make(map[string]interface{})
				}
				bs.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				bs.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				bs.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				bs.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				bs.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				bs.Type = typeVar
			}
		}
	}

	return nil
}

// BlobSource a copy activity Azure Blob source.
type BlobSource struct {
	// TreatEmptyAsNull - Treat empty as null. Type: boolean (or Expression with resultType boolean).
	TreatEmptyAsNull interface{} `json:"treatEmptyAsNull,omitempty"`
	// SkipHeaderLineCount - Number of header lines to skip from each blob. Type: integer (or Expression with resultType integer).
	SkipHeaderLineCount interface{} `json:"skipHeaderLineCount,omitempty"`
	// Recursive - If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
	Recursive interface{} `json:"recursive,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for BlobSource.
func (bs BlobSource) MarshalJSON() ([]byte, error) {
	bs.Type = TypeBlobSource
	objectMap := make(map[string]interface{})
	if bs.TreatEmptyAsNull != nil {
		objectMap["treatEmptyAsNull"] = bs.TreatEmptyAsNull
	}
	if bs.SkipHeaderLineCount != nil {
		objectMap["skipHeaderLineCount"] = bs.SkipHeaderLineCount
	}
	if bs.Recursive != nil {
		objectMap["recursive"] = bs.Recursive
	}
	if bs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = bs.SourceRetryCount
	}
	if bs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = bs.SourceRetryWait
	}
	if bs.Type != "" {
		objectMap["type"] = bs.Type
	}
	for k, v := range bs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsBlobSource() (*BlobSource, bool) {
	return &bs, true
}

// AsAzureTableSource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for BlobSource.
func (bs BlobSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &bs, true
}

// UnmarshalJSON is the custom unmarshaler for BlobSource struct.
func (bs *BlobSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "treatEmptyAsNull":
			if v != nil {
				var treatEmptyAsNull interface{}
				err = json.Unmarshal(*v, &treatEmptyAsNull)
				if err != nil {
					return err
				}
				bs.TreatEmptyAsNull = treatEmptyAsNull
			}
		case "skipHeaderLineCount":
			if v != nil {
				var skipHeaderLineCount interface{}
				err = json.Unmarshal(*v, &skipHeaderLineCount)
				if err != nil {
					return err
				}
				bs.SkipHeaderLineCount = skipHeaderLineCount
			}
		case "recursive":
			if v != nil {
				var recursive interface{}
				err = json.Unmarshal(*v, &recursive)
				if err != nil {
					return err
				}
				bs.Recursive = recursive
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if bs.AdditionalProperties == nil {
					bs.AdditionalProperties = make(map[string]interface{})
				}
				bs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				bs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				bs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				bs.Type = typeVar
			}
		}
	}

	return nil
}

// BlobTrigger trigger that runs every time the selected Blob container changes.
type BlobTrigger struct {
	// BlobTriggerTypeProperties - Blob Trigger properties.
	*BlobTriggerTypeProperties `json:"typeProperties,omitempty"`
	// Pipelines - Pipelines that need to be started.
	Pipelines *[]TriggerPipelineReference `json:"pipelines,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Trigger description.
	Description *string `json:"description,omitempty"`
	// RuntimeState - READ-ONLY; Indicates if trigger is running or not. Updated when Start/Stop APIs are called on the Trigger. Possible values include: 'TriggerRuntimeStateStarted', 'TriggerRuntimeStateStopped', 'TriggerRuntimeStateDisabled'
	RuntimeState TriggerRuntimeState `json:"runtimeState,omitempty"`
	// Type - Possible values include: 'TypeTrigger', 'TypeTumblingWindowTrigger', 'TypeBlobEventsTrigger', 'TypeBlobTrigger', 'TypeScheduleTrigger', 'TypeMultiplePipelineTrigger'
	Type TypeBasicTrigger `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for BlobTrigger.
func (bt BlobTrigger) MarshalJSON() ([]byte, error) {
	bt.Type = TypeBlobTrigger
	objectMap := make(map[string]interface{})
	if bt.BlobTriggerTypeProperties != nil {
		objectMap["typeProperties"] = bt.BlobTriggerTypeProperties
	}
	if bt.Pipelines != nil {
		objectMap["pipelines"] = bt.Pipelines
	}
	if bt.Description != nil {
		objectMap["description"] = bt.Description
	}
	if bt.Type != "" {
		objectMap["type"] = bt.Type
	}
	for k, v := range bt.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsTumblingWindowTrigger is the BasicTrigger implementation for BlobTrigger.
func (bt BlobTrigger) AsTumblingWindowTrigger() (*TumblingWindowTrigger, bool) {
	return nil, false
}

// AsBlobEventsTrigger is the BasicTrigger implementation for BlobTrigger.
func (bt BlobTrigger) AsBlobEventsTrigger() (*BlobEventsTrigger, bool) {
	return nil, false
}

// AsBlobTrigger is the BasicTrigger implementation for BlobTrigger.
func (bt BlobTrigger) AsBlobTrigger() (*BlobTrigger, bool) {
	return &bt, true
}

// AsScheduleTrigger is the BasicTrigger implementation for BlobTrigger.
func (bt BlobTrigger) AsScheduleTrigger() (*ScheduleTrigger, bool) {
	return nil, false
}

// AsMultiplePipelineTrigger is the BasicTrigger implementation for BlobTrigger.
func (bt BlobTrigger) AsMultiplePipelineTrigger() (*MultiplePipelineTrigger, bool) {
	return nil, false
}

// AsBasicMultiplePipelineTrigger is the BasicTrigger implementation for BlobTrigger.
func (bt BlobTrigger) AsBasicMultiplePipelineTrigger() (BasicMultiplePipelineTrigger, bool) {
	return &bt, true
}

// AsTrigger is the BasicTrigger implementation for BlobTrigger.
func (bt BlobTrigger) AsTrigger() (*Trigger, bool) {
	return nil, false
}

// AsBasicTrigger is the BasicTrigger implementation for BlobTrigger.
func (bt BlobTrigger) AsBasicTrigger() (BasicTrigger, bool) {
	return &bt, true
}

// UnmarshalJSON is the custom unmarshaler for BlobTrigger struct.
func (bt *BlobTrigger) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var blobTriggerTypeProperties BlobTriggerTypeProperties
				err = json.Unmarshal(*v, &blobTriggerTypeProperties)
				if err != nil {
					return err
				}
				bt.BlobTriggerTypeProperties = &blobTriggerTypeProperties
			}
		case "pipelines":
			if v != nil {
				var pipelines []TriggerPipelineReference
				err = json.Unmarshal(*v, &pipelines)
				if err != nil {
					return err
				}
				bt.Pipelines = &pipelines
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if bt.AdditionalProperties == nil {
					bt.AdditionalProperties = make(map[string]interface{})
				}
				bt.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				bt.Description = &description
			}
		case "runtimeState":
			if v != nil {
				var runtimeState TriggerRuntimeState
				err = json.Unmarshal(*v, &runtimeState)
				if err != nil {
					return err
				}
				bt.RuntimeState = runtimeState
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicTrigger
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				bt.Type = typeVar
			}
		}
	}

	return nil
}

// BlobTriggerTypeProperties blob Trigger properties.
type BlobTriggerTypeProperties struct {
	// FolderPath - The path of the container/folder that will trigger the pipeline.
	FolderPath *string `json:"folderPath,omitempty"`
	// MaxConcurrency - The max number of parallel files to handle when it is triggered.
	MaxConcurrency *int32 `json:"maxConcurrency,omitempty"`
	// LinkedService - The Azure Storage linked service reference.
	LinkedService *LinkedServiceReference `json:"linkedService,omitempty"`
}

// CassandraLinkedService linked service for Cassandra data source.
type CassandraLinkedService struct {
	// CassandraLinkedServiceTypeProperties - Cassandra linked service properties.
	*CassandraLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for CassandraLinkedService.
func (cls CassandraLinkedService) MarshalJSON() ([]byte, error) {
	cls.Type = TypeCassandra
	objectMap := make(map[string]interface{})
	if cls.CassandraLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = cls.CassandraLinkedServiceTypeProperties
	}
	if cls.ConnectVia != nil {
		objectMap["connectVia"] = cls.ConnectVia
	}
	if cls.Description != nil {
		objectMap["description"] = cls.Description
	}
	if cls.Parameters != nil {
		objectMap["parameters"] = cls.Parameters
	}
	if cls.Annotations != nil {
		objectMap["annotations"] = cls.Annotations
	}
	if cls.Type != "" {
		objectMap["type"] = cls.Type
	}
	for k, v := range cls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return &cls, true
}

// AsWebLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for CassandraLinkedService.
func (cls CassandraLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &cls, true
}

// UnmarshalJSON is the custom unmarshaler for CassandraLinkedService struct.
func (cls *CassandraLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var cassandraLinkedServiceTypeProperties CassandraLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &cassandraLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				cls.CassandraLinkedServiceTypeProperties = &cassandraLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if cls.AdditionalProperties == nil {
					cls.AdditionalProperties = make(map[string]interface{})
				}
				cls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				cls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				cls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				cls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				cls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				cls.Type = typeVar
			}
		}
	}

	return nil
}

// CassandraLinkedServiceTypeProperties cassandra linked service properties.
type CassandraLinkedServiceTypeProperties struct {
	// Host - Host name for connection. Type: string (or Expression with resultType string).
	Host interface{} `json:"host,omitempty"`
	// AuthenticationType - AuthenticationType to be used for connection. Type: string (or Expression with resultType string).
	AuthenticationType interface{} `json:"authenticationType,omitempty"`
	// Port - The port for the connection. Type: integer (or Expression with resultType integer).
	Port interface{} `json:"port,omitempty"`
	// Username - Username for authentication. Type: string (or Expression with resultType string).
	Username interface{} `json:"username,omitempty"`
	// Password - Password for authentication.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for CassandraLinkedServiceTypeProperties struct.
func (clstp *CassandraLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				clstp.Host = host
			}
		case "authenticationType":
			if v != nil {
				var authenticationType interface{}
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				clstp.AuthenticationType = authenticationType
			}
		case "port":
			if v != nil {
				var port interface{}
				err = json.Unmarshal(*v, &port)
				if err != nil {
					return err
				}
				clstp.Port = port
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				clstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				clstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				clstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// CassandraSource a copy activity source for a Cassandra database.
type CassandraSource struct {
	// Query - Database query. Should be a SQL-92 query expression or Cassandra Query Language (CQL) command. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// ConsistencyLevel - The consistency level specifies how many Cassandra servers must respond to a read request before returning data to the client application. Cassandra checks the specified number of Cassandra servers for data to satisfy the read request. Must be one of cassandraSourceReadConsistencyLevels. The default value is 'ONE'. It is case-insensitive.
	ConsistencyLevel interface{} `json:"consistencyLevel,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for CassandraSource.
func (cs CassandraSource) MarshalJSON() ([]byte, error) {
	cs.Type = TypeCassandraSource
	objectMap := make(map[string]interface{})
	if cs.Query != nil {
		objectMap["query"] = cs.Query
	}
	if cs.ConsistencyLevel != nil {
		objectMap["consistencyLevel"] = cs.ConsistencyLevel
	}
	if cs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = cs.SourceRetryCount
	}
	if cs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = cs.SourceRetryWait
	}
	if cs.Type != "" {
		objectMap["type"] = cs.Type
	}
	for k, v := range cs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsCassandraSource() (*CassandraSource, bool) {
	return &cs, true
}

// AsWebSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for CassandraSource.
func (cs CassandraSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &cs, true
}

// UnmarshalJSON is the custom unmarshaler for CassandraSource struct.
func (cs *CassandraSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				cs.Query = query
			}
		case "consistencyLevel":
			if v != nil {
				var consistencyLevel interface{}
				err = json.Unmarshal(*v, &consistencyLevel)
				if err != nil {
					return err
				}
				cs.ConsistencyLevel = consistencyLevel
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if cs.AdditionalProperties == nil {
					cs.AdditionalProperties = make(map[string]interface{})
				}
				cs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				cs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				cs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				cs.Type = typeVar
			}
		}
	}

	return nil
}

// CassandraTableDataset the Cassandra database dataset.
type CassandraTableDataset struct {
	// CassandraTableDatasetTypeProperties - Cassandra dataset properties.
	*CassandraTableDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for CassandraTableDataset.
func (ctd CassandraTableDataset) MarshalJSON() ([]byte, error) {
	ctd.Type = TypeCassandraTable
	objectMap := make(map[string]interface{})
	if ctd.CassandraTableDatasetTypeProperties != nil {
		objectMap["typeProperties"] = ctd.CassandraTableDatasetTypeProperties
	}
	if ctd.Description != nil {
		objectMap["description"] = ctd.Description
	}
	if ctd.Structure != nil {
		objectMap["structure"] = ctd.Structure
	}
	if ctd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = ctd.LinkedServiceName
	}
	if ctd.Parameters != nil {
		objectMap["parameters"] = ctd.Parameters
	}
	if ctd.Annotations != nil {
		objectMap["annotations"] = ctd.Annotations
	}
	if ctd.Type != "" {
		objectMap["type"] = ctd.Type
	}
	for k, v := range ctd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return &ctd, true
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for CassandraTableDataset.
func (ctd CassandraTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &ctd, true
}

// UnmarshalJSON is the custom unmarshaler for CassandraTableDataset struct.
func (ctd *CassandraTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var cassandraTableDatasetTypeProperties CassandraTableDatasetTypeProperties
				err = json.Unmarshal(*v, &cassandraTableDatasetTypeProperties)
				if err != nil {
					return err
				}
				ctd.CassandraTableDatasetTypeProperties = &cassandraTableDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ctd.AdditionalProperties == nil {
					ctd.AdditionalProperties = make(map[string]interface{})
				}
				ctd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ctd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				ctd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				ctd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				ctd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				ctd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ctd.Type = typeVar
			}
		}
	}

	return nil
}

// CassandraTableDatasetTypeProperties cassandra dataset properties.
type CassandraTableDatasetTypeProperties struct {
	// TableName - The table name of the Cassandra database. Type: string (or Expression with resultType string).
	TableName interface{} `json:"tableName,omitempty"`
	// Keyspace - The keyspace of the Cassandra database. Type: string (or Expression with resultType string).
	Keyspace interface{} `json:"keyspace,omitempty"`
}

// ConcurLinkedService concur Service linked service.
type ConcurLinkedService struct {
	// ConcurLinkedServiceTypeProperties - Concur Service linked service properties.
	*ConcurLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ConcurLinkedService.
func (cls ConcurLinkedService) MarshalJSON() ([]byte, error) {
	cls.Type = TypeConcur
	objectMap := make(map[string]interface{})
	if cls.ConcurLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = cls.ConcurLinkedServiceTypeProperties
	}
	if cls.ConnectVia != nil {
		objectMap["connectVia"] = cls.ConnectVia
	}
	if cls.Description != nil {
		objectMap["description"] = cls.Description
	}
	if cls.Parameters != nil {
		objectMap["parameters"] = cls.Parameters
	}
	if cls.Annotations != nil {
		objectMap["annotations"] = cls.Annotations
	}
	if cls.Type != "" {
		objectMap["type"] = cls.Type
	}
	for k, v := range cls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return &cls, true
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for ConcurLinkedService.
func (cls ConcurLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &cls, true
}

// UnmarshalJSON is the custom unmarshaler for ConcurLinkedService struct.
func (cls *ConcurLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var concurLinkedServiceTypeProperties ConcurLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &concurLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				cls.ConcurLinkedServiceTypeProperties = &concurLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if cls.AdditionalProperties == nil {
					cls.AdditionalProperties = make(map[string]interface{})
				}
				cls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				cls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				cls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				cls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				cls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				cls.Type = typeVar
			}
		}
	}

	return nil
}

// ConcurLinkedServiceTypeProperties concur Service linked service properties.
type ConcurLinkedServiceTypeProperties struct {
	// ClientID - Application client_id supplied by Concur App Management.
	ClientID interface{} `json:"clientId,omitempty"`
	// Username - The user name that you use to access Concur Service.
	Username interface{} `json:"username,omitempty"`
	// Password - The password corresponding to the user name that you provided in the username field.
	Password BasicSecretBase `json:"password,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true.
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for ConcurLinkedServiceTypeProperties struct.
func (clstp *ConcurLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "clientId":
			if v != nil {
				var clientID interface{}
				err = json.Unmarshal(*v, &clientID)
				if err != nil {
					return err
				}
				clstp.ClientID = clientID
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				clstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				clstp.Password = password
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				clstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				clstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				clstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				clstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// ConcurObjectDataset concur Service dataset.
type ConcurObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ConcurObjectDataset.
func (cod ConcurObjectDataset) MarshalJSON() ([]byte, error) {
	cod.Type = TypeConcurObject
	objectMap := make(map[string]interface{})
	if cod.Description != nil {
		objectMap["description"] = cod.Description
	}
	if cod.Structure != nil {
		objectMap["structure"] = cod.Structure
	}
	if cod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = cod.LinkedServiceName
	}
	if cod.Parameters != nil {
		objectMap["parameters"] = cod.Parameters
	}
	if cod.Annotations != nil {
		objectMap["annotations"] = cod.Annotations
	}
	if cod.Type != "" {
		objectMap["type"] = cod.Type
	}
	for k, v := range cod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return &cod, true
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for ConcurObjectDataset.
func (cod ConcurObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &cod, true
}

// UnmarshalJSON is the custom unmarshaler for ConcurObjectDataset struct.
func (cod *ConcurObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if cod.AdditionalProperties == nil {
					cod.AdditionalProperties = make(map[string]interface{})
				}
				cod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				cod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				cod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				cod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				cod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				cod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				cod.Type = typeVar
			}
		}
	}

	return nil
}

// ConcurSource a copy activity Concur Service source.
type ConcurSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ConcurSource.
func (cs ConcurSource) MarshalJSON() ([]byte, error) {
	cs.Type = TypeConcurSource
	objectMap := make(map[string]interface{})
	if cs.Query != nil {
		objectMap["query"] = cs.Query
	}
	if cs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = cs.SourceRetryCount
	}
	if cs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = cs.SourceRetryWait
	}
	if cs.Type != "" {
		objectMap["type"] = cs.Type
	}
	for k, v := range cs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsConcurSource() (*ConcurSource, bool) {
	return &cs, true
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for ConcurSource.
func (cs ConcurSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &cs, true
}

// UnmarshalJSON is the custom unmarshaler for ConcurSource struct.
func (cs *ConcurSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				cs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if cs.AdditionalProperties == nil {
					cs.AdditionalProperties = make(map[string]interface{})
				}
				cs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				cs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				cs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				cs.Type = typeVar
			}
		}
	}

	return nil
}

// BasicControlActivity base class for all control activities like IfCondition, ForEach , Until.
type BasicControlActivity interface {
	AsFilterActivity() (*FilterActivity, bool)
	AsUntilActivity() (*UntilActivity, bool)
	AsWaitActivity() (*WaitActivity, bool)
	AsForEachActivity() (*ForEachActivity, bool)
	AsIfConditionActivity() (*IfConditionActivity, bool)
	AsExecutePipelineActivity() (*ExecutePipelineActivity, bool)
	AsControlActivity() (*ControlActivity, bool)
}

// ControlActivity base class for all control activities like IfCondition, ForEach , Until.
type ControlActivity struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

func unmarshalBasicControlActivity(body []byte) (BasicControlActivity, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeFilter):
		var fa FilterActivity
		err := json.Unmarshal(body, &fa)
		return fa, err
	case string(TypeUntil):
		var ua UntilActivity
		err := json.Unmarshal(body, &ua)
		return ua, err
	case string(TypeWait):
		var wa WaitActivity
		err := json.Unmarshal(body, &wa)
		return wa, err
	case string(TypeForEach):
		var fea ForEachActivity
		err := json.Unmarshal(body, &fea)
		return fea, err
	case string(TypeIfCondition):
		var ica IfConditionActivity
		err := json.Unmarshal(body, &ica)
		return ica, err
	case string(TypeExecutePipeline):
		var epa ExecutePipelineActivity
		err := json.Unmarshal(body, &epa)
		return epa, err
	default:
		var ca ControlActivity
		err := json.Unmarshal(body, &ca)
		return ca, err
	}
}
func unmarshalBasicControlActivityArray(body []byte) ([]BasicControlActivity, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	caArray := make([]BasicControlActivity, len(rawMessages))

	for index, rawMessage := range rawMessages {
		ca, err := unmarshalBasicControlActivity(*rawMessage)
		if err != nil {
			return nil, err
		}
		caArray[index] = ca
	}
	return caArray, nil
}

// MarshalJSON is the custom marshaler for ControlActivity.
func (ca ControlActivity) MarshalJSON() ([]byte, error) {
	ca.Type = TypeContainer
	objectMap := make(map[string]interface{})
	if ca.Name != nil {
		objectMap["name"] = ca.Name
	}
	if ca.Description != nil {
		objectMap["description"] = ca.Description
	}
	if ca.DependsOn != nil {
		objectMap["dependsOn"] = ca.DependsOn
	}
	if ca.Type != "" {
		objectMap["type"] = ca.Type
	}
	for k, v := range ca.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return nil, false
}

// AsFilterActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsControlActivity() (*ControlActivity, bool) {
	return &ca, true
}

// AsBasicControlActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return &ca, true
}

// AsActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for ControlActivity.
func (ca ControlActivity) AsBasicActivity() (BasicActivity, bool) {
	return &ca, true
}

// UnmarshalJSON is the custom unmarshaler for ControlActivity struct.
func (ca *ControlActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ca.AdditionalProperties == nil {
					ca.AdditionalProperties = make(map[string]interface{})
				}
				ca.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				ca.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ca.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				ca.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ca.Type = typeVar
			}
		}
	}

	return nil
}

// CopyActivity copy activity.
type CopyActivity struct {
	// CopyActivityTypeProperties - Copy activity properties.
	*CopyActivityTypeProperties `json:"typeProperties,omitempty"`
	// Inputs - List of inputs for the activity.
	Inputs *[]DatasetReference `json:"inputs,omitempty"`
	// Outputs - List of outputs for the activity.
	Outputs *[]DatasetReference `json:"outputs,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for CopyActivity.
func (ca CopyActivity) MarshalJSON() ([]byte, error) {
	ca.Type = TypeCopy
	objectMap := make(map[string]interface{})
	if ca.CopyActivityTypeProperties != nil {
		objectMap["typeProperties"] = ca.CopyActivityTypeProperties
	}
	if ca.Inputs != nil {
		objectMap["inputs"] = ca.Inputs
	}
	if ca.Outputs != nil {
		objectMap["outputs"] = ca.Outputs
	}
	if ca.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = ca.LinkedServiceName
	}
	if ca.Policy != nil {
		objectMap["policy"] = ca.Policy
	}
	if ca.Name != nil {
		objectMap["name"] = ca.Name
	}
	if ca.Description != nil {
		objectMap["description"] = ca.Description
	}
	if ca.DependsOn != nil {
		objectMap["dependsOn"] = ca.DependsOn
	}
	if ca.Type != "" {
		objectMap["type"] = ca.Type
	}
	for k, v := range ca.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsCopyActivity() (*CopyActivity, bool) {
	return &ca, true
}

// AsExecutionActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &ca, true
}

// AsFilterActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for CopyActivity.
func (ca CopyActivity) AsBasicActivity() (BasicActivity, bool) {
	return &ca, true
}

// UnmarshalJSON is the custom unmarshaler for CopyActivity struct.
func (ca *CopyActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var copyActivityTypeProperties CopyActivityTypeProperties
				err = json.Unmarshal(*v, &copyActivityTypeProperties)
				if err != nil {
					return err
				}
				ca.CopyActivityTypeProperties = &copyActivityTypeProperties
			}
		case "inputs":
			if v != nil {
				var inputs []DatasetReference
				err = json.Unmarshal(*v, &inputs)
				if err != nil {
					return err
				}
				ca.Inputs = &inputs
			}
		case "outputs":
			if v != nil {
				var outputs []DatasetReference
				err = json.Unmarshal(*v, &outputs)
				if err != nil {
					return err
				}
				ca.Outputs = &outputs
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				ca.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				ca.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ca.AdditionalProperties == nil {
					ca.AdditionalProperties = make(map[string]interface{})
				}
				ca.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				ca.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ca.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				ca.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ca.Type = typeVar
			}
		}
	}

	return nil
}

// CopyActivityTypeProperties copy activity properties.
type CopyActivityTypeProperties struct {
	// Source - Copy activity source.
	Source BasicCopySource `json:"source,omitempty"`
	// Sink - Copy activity sink.
	Sink BasicCopySink `json:"sink,omitempty"`
	// Translator - Copy activity translator. If not specified, tabular translator is used.
	Translator interface{} `json:"translator,omitempty"`
	// EnableStaging - Specifies whether to copy data via an interim staging. Default value is false. Type: boolean (or Expression with resultType boolean).
	EnableStaging interface{} `json:"enableStaging,omitempty"`
	// StagingSettings - Specifies interim staging settings when EnableStaging is true.
	StagingSettings *StagingSettings `json:"stagingSettings,omitempty"`
	// ParallelCopies - Maximum number of concurrent sessions opened on the source or sink to avoid overloading the data store. Type: integer (or Expression with resultType integer), minimum: 0.
	ParallelCopies interface{} `json:"parallelCopies,omitempty"`
	// CloudDataMovementUnits - Maximum number of cloud data movement units that can be used to perform this data movement. Type: integer (or Expression with resultType integer), minimum: 0.
	CloudDataMovementUnits interface{} `json:"cloudDataMovementUnits,omitempty"`
	// EnableSkipIncompatibleRow - Whether to skip incompatible row. Default value is false. Type: boolean (or Expression with resultType boolean).
	EnableSkipIncompatibleRow interface{} `json:"enableSkipIncompatibleRow,omitempty"`
	// RedirectIncompatibleRowSettings - Redirect incompatible row settings when EnableSkipIncompatibleRow is true.
	RedirectIncompatibleRowSettings *RedirectIncompatibleRowSettings `json:"redirectIncompatibleRowSettings,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for CopyActivityTypeProperties struct.
func (catp *CopyActivityTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "source":
			if v != nil {
				source, err := unmarshalBasicCopySource(*v)
				if err != nil {
					return err
				}
				catp.Source = source
			}
		case "sink":
			if v != nil {
				sink, err := unmarshalBasicCopySink(*v)
				if err != nil {
					return err
				}
				catp.Sink = sink
			}
		case "translator":
			if v != nil {
				var translator interface{}
				err = json.Unmarshal(*v, &translator)
				if err != nil {
					return err
				}
				catp.Translator = translator
			}
		case "enableStaging":
			if v != nil {
				var enableStaging interface{}
				err = json.Unmarshal(*v, &enableStaging)
				if err != nil {
					return err
				}
				catp.EnableStaging = enableStaging
			}
		case "stagingSettings":
			if v != nil {
				var stagingSettings StagingSettings
				err = json.Unmarshal(*v, &stagingSettings)
				if err != nil {
					return err
				}
				catp.StagingSettings = &stagingSettings
			}
		case "parallelCopies":
			if v != nil {
				var parallelCopies interface{}
				err = json.Unmarshal(*v, &parallelCopies)
				if err != nil {
					return err
				}
				catp.ParallelCopies = parallelCopies
			}
		case "cloudDataMovementUnits":
			if v != nil {
				var cloudDataMovementUnits interface{}
				err = json.Unmarshal(*v, &cloudDataMovementUnits)
				if err != nil {
					return err
				}
				catp.CloudDataMovementUnits = cloudDataMovementUnits
			}
		case "enableSkipIncompatibleRow":
			if v != nil {
				var enableSkipIncompatibleRow interface{}
				err = json.Unmarshal(*v, &enableSkipIncompatibleRow)
				if err != nil {
					return err
				}
				catp.EnableSkipIncompatibleRow = enableSkipIncompatibleRow
			}
		case "redirectIncompatibleRowSettings":
			if v != nil {
				var redirectIncompatibleRowSettings RedirectIncompatibleRowSettings
				err = json.Unmarshal(*v, &redirectIncompatibleRowSettings)
				if err != nil {
					return err
				}
				catp.RedirectIncompatibleRowSettings = &redirectIncompatibleRowSettings
			}
		}
	}

	return nil
}

// BasicCopySink a copy activity sink.
type BasicCopySink interface {
	AsSalesforceSink() (*SalesforceSink, bool)
	AsDynamicsSink() (*DynamicsSink, bool)
	AsOdbcSink() (*OdbcSink, bool)
	AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool)
	AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool)
	AsOracleSink() (*OracleSink, bool)
	AsSQLDWSink() (*SQLDWSink, bool)
	AsSQLSink() (*SQLSink, bool)
	AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool)
	AsFileSystemSink() (*FileSystemSink, bool)
	AsBlobSink() (*BlobSink, bool)
	AsAzureTableSink() (*AzureTableSink, bool)
	AsAzureQueueSink() (*AzureQueueSink, bool)
	AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool)
	AsCopySink() (*CopySink, bool)
}

// CopySink a copy activity sink.
type CopySink struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

func unmarshalBasicCopySink(body []byte) (BasicCopySink, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeSalesforceSink):
		var ss SalesforceSink
		err := json.Unmarshal(body, &ss)
		return ss, err
	case string(TypeDynamicsSink):
		var ds DynamicsSink
		err := json.Unmarshal(body, &ds)
		return ds, err
	case string(TypeOdbcSink):
		var osVar OdbcSink
		err := json.Unmarshal(body, &osVar)
		return osVar, err
	case string(TypeAzureSearchIndexSink):
		var asis AzureSearchIndexSink
		err := json.Unmarshal(body, &asis)
		return asis, err
	case string(TypeAzureDataLakeStoreSink):
		var adlss AzureDataLakeStoreSink
		err := json.Unmarshal(body, &adlss)
		return adlss, err
	case string(TypeOracleSink):
		var osVar OracleSink
		err := json.Unmarshal(body, &osVar)
		return osVar, err
	case string(TypeSQLDWSink):
		var sds SQLDWSink
		err := json.Unmarshal(body, &sds)
		return sds, err
	case string(TypeSQLSink):
		var ss SQLSink
		err := json.Unmarshal(body, &ss)
		return ss, err
	case string(TypeDocumentDbCollectionSink):
		var ddcs DocumentDbCollectionSink
		err := json.Unmarshal(body, &ddcs)
		return ddcs, err
	case string(TypeFileSystemSink):
		var fss FileSystemSink
		err := json.Unmarshal(body, &fss)
		return fss, err
	case string(TypeBlobSink):
		var bs BlobSink
		err := json.Unmarshal(body, &bs)
		return bs, err
	case string(TypeAzureTableSink):
		var ats AzureTableSink
		err := json.Unmarshal(body, &ats)
		return ats, err
	case string(TypeAzureQueueSink):
		var aqs AzureQueueSink
		err := json.Unmarshal(body, &aqs)
		return aqs, err
	case string(TypeSapCloudForCustomerSink):
		var scfcs SapCloudForCustomerSink
		err := json.Unmarshal(body, &scfcs)
		return scfcs, err
	default:
		var cs CopySink
		err := json.Unmarshal(body, &cs)
		return cs, err
	}
}
func unmarshalBasicCopySinkArray(body []byte) ([]BasicCopySink, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	csArray := make([]BasicCopySink, len(rawMessages))

	for index, rawMessage := range rawMessages {
		cs, err := unmarshalBasicCopySink(*rawMessage)
		if err != nil {
			return nil, err
		}
		csArray[index] = cs
	}
	return csArray, nil
}

// MarshalJSON is the custom marshaler for CopySink.
func (cs CopySink) MarshalJSON() ([]byte, error) {
	cs.Type = TypeCopySink
	objectMap := make(map[string]interface{})
	if cs.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = cs.WriteBatchSize
	}
	if cs.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = cs.WriteBatchTimeout
	}
	if cs.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = cs.SinkRetryCount
	}
	if cs.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = cs.SinkRetryWait
	}
	if cs.Type != "" {
		objectMap["type"] = cs.Type
	}
	for k, v := range cs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsCopySink() (*CopySink, bool) {
	return &cs, true
}

// AsBasicCopySink is the BasicCopySink implementation for CopySink.
func (cs CopySink) AsBasicCopySink() (BasicCopySink, bool) {
	return &cs, true
}

// UnmarshalJSON is the custom unmarshaler for CopySink struct.
func (cs *CopySink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if cs.AdditionalProperties == nil {
					cs.AdditionalProperties = make(map[string]interface{})
				}
				cs.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				cs.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				cs.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				cs.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				cs.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				cs.Type = typeVar
			}
		}
	}

	return nil
}

// BasicCopySource a copy activity source.
type BasicCopySource interface {
	AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool)
	AsResponsysSource() (*ResponsysSource, bool)
	AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool)
	AsVerticaSource() (*VerticaSource, bool)
	AsNetezzaSource() (*NetezzaSource, bool)
	AsZohoSource() (*ZohoSource, bool)
	AsXeroSource() (*XeroSource, bool)
	AsSquareSource() (*SquareSource, bool)
	AsSparkSource() (*SparkSource, bool)
	AsShopifySource() (*ShopifySource, bool)
	AsServiceNowSource() (*ServiceNowSource, bool)
	AsQuickBooksSource() (*QuickBooksSource, bool)
	AsPrestoSource() (*PrestoSource, bool)
	AsPhoenixSource() (*PhoenixSource, bool)
	AsPaypalSource() (*PaypalSource, bool)
	AsMarketoSource() (*MarketoSource, bool)
	AsMariaDBSource() (*MariaDBSource, bool)
	AsMagentoSource() (*MagentoSource, bool)
	AsJiraSource() (*JiraSource, bool)
	AsImpalaSource() (*ImpalaSource, bool)
	AsHubspotSource() (*HubspotSource, bool)
	AsHiveSource() (*HiveSource, bool)
	AsHBaseSource() (*HBaseSource, bool)
	AsGreenplumSource() (*GreenplumSource, bool)
	AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool)
	AsEloquaSource() (*EloquaSource, bool)
	AsDrillSource() (*DrillSource, bool)
	AsCouchbaseSource() (*CouchbaseSource, bool)
	AsConcurSource() (*ConcurSource, bool)
	AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool)
	AsAmazonMWSSource() (*AmazonMWSSource, bool)
	AsHTTPSource() (*HTTPSource, bool)
	AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool)
	AsMongoDbSource() (*MongoDbSource, bool)
	AsCassandraSource() (*CassandraSource, bool)
	AsWebSource() (*WebSource, bool)
	AsOracleSource() (*OracleSource, bool)
	AsAzureMySQLSource() (*AzureMySQLSource, bool)
	AsHdfsSource() (*HdfsSource, bool)
	AsFileSystemSource() (*FileSystemSource, bool)
	AsSQLDWSource() (*SQLDWSource, bool)
	AsSQLSource() (*SQLSource, bool)
	AsSapEccSource() (*SapEccSource, bool)
	AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool)
	AsSalesforceSource() (*SalesforceSource, bool)
	AsRelationalSource() (*RelationalSource, bool)
	AsDynamicsSource() (*DynamicsSource, bool)
	AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool)
	AsBlobSource() (*BlobSource, bool)
	AsAzureTableSource() (*AzureTableSource, bool)
	AsCopySource() (*CopySource, bool)
}

// CopySource a copy activity source.
type CopySource struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

func unmarshalBasicCopySource(body []byte) (BasicCopySource, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeAmazonRedshiftSource):
		var ars AmazonRedshiftSource
		err := json.Unmarshal(body, &ars)
		return ars, err
	case string(TypeResponsysSource):
		var rs ResponsysSource
		err := json.Unmarshal(body, &rs)
		return rs, err
	case string(TypeSalesforceMarketingCloudSource):
		var smcs SalesforceMarketingCloudSource
		err := json.Unmarshal(body, &smcs)
		return smcs, err
	case string(TypeVerticaSource):
		var vs VerticaSource
		err := json.Unmarshal(body, &vs)
		return vs, err
	case string(TypeNetezzaSource):
		var ns NetezzaSource
		err := json.Unmarshal(body, &ns)
		return ns, err
	case string(TypeZohoSource):
		var zs ZohoSource
		err := json.Unmarshal(body, &zs)
		return zs, err
	case string(TypeXeroSource):
		var xs XeroSource
		err := json.Unmarshal(body, &xs)
		return xs, err
	case string(TypeSquareSource):
		var ss SquareSource
		err := json.Unmarshal(body, &ss)
		return ss, err
	case string(TypeSparkSource):
		var ss SparkSource
		err := json.Unmarshal(body, &ss)
		return ss, err
	case string(TypeShopifySource):
		var ss ShopifySource
		err := json.Unmarshal(body, &ss)
		return ss, err
	case string(TypeServiceNowSource):
		var sns ServiceNowSource
		err := json.Unmarshal(body, &sns)
		return sns, err
	case string(TypeQuickBooksSource):
		var qbs QuickBooksSource
		err := json.Unmarshal(body, &qbs)
		return qbs, err
	case string(TypePrestoSource):
		var ps PrestoSource
		err := json.Unmarshal(body, &ps)
		return ps, err
	case string(TypePhoenixSource):
		var ps PhoenixSource
		err := json.Unmarshal(body, &ps)
		return ps, err
	case string(TypePaypalSource):
		var ps PaypalSource
		err := json.Unmarshal(body, &ps)
		return ps, err
	case string(TypeMarketoSource):
		var ms MarketoSource
		err := json.Unmarshal(body, &ms)
		return ms, err
	case string(TypeMariaDBSource):
		var mds MariaDBSource
		err := json.Unmarshal(body, &mds)
		return mds, err
	case string(TypeMagentoSource):
		var ms MagentoSource
		err := json.Unmarshal(body, &ms)
		return ms, err
	case string(TypeJiraSource):
		var js JiraSource
		err := json.Unmarshal(body, &js)
		return js, err
	case string(TypeImpalaSource):
		var is ImpalaSource
		err := json.Unmarshal(body, &is)
		return is, err
	case string(TypeHubspotSource):
		var hs HubspotSource
		err := json.Unmarshal(body, &hs)
		return hs, err
	case string(TypeHiveSource):
		var hs HiveSource
		err := json.Unmarshal(body, &hs)
		return hs, err
	case string(TypeHBaseSource):
		var hbs HBaseSource
		err := json.Unmarshal(body, &hbs)
		return hbs, err
	case string(TypeGreenplumSource):
		var gs GreenplumSource
		err := json.Unmarshal(body, &gs)
		return gs, err
	case string(TypeGoogleBigQuerySource):
		var gbqs GoogleBigQuerySource
		err := json.Unmarshal(body, &gbqs)
		return gbqs, err
	case string(TypeEloquaSource):
		var es EloquaSource
		err := json.Unmarshal(body, &es)
		return es, err
	case string(TypeDrillSource):
		var ds DrillSource
		err := json.Unmarshal(body, &ds)
		return ds, err
	case string(TypeCouchbaseSource):
		var cs CouchbaseSource
		err := json.Unmarshal(body, &cs)
		return cs, err
	case string(TypeConcurSource):
		var cs ConcurSource
		err := json.Unmarshal(body, &cs)
		return cs, err
	case string(TypeAzurePostgreSQLSource):
		var apss AzurePostgreSQLSource
		err := json.Unmarshal(body, &apss)
		return apss, err
	case string(TypeAmazonMWSSource):
		var ams AmazonMWSSource
		err := json.Unmarshal(body, &ams)
		return ams, err
	case string(TypeHTTPSource):
		var hs HTTPSource
		err := json.Unmarshal(body, &hs)
		return hs, err
	case string(TypeAzureDataLakeStoreSource):
		var adlss AzureDataLakeStoreSource
		err := json.Unmarshal(body, &adlss)
		return adlss, err
	case string(TypeMongoDbSource):
		var mds MongoDbSource
		err := json.Unmarshal(body, &mds)
		return mds, err
	case string(TypeCassandraSource):
		var cs CassandraSource
		err := json.Unmarshal(body, &cs)
		return cs, err
	case string(TypeWebSource):
		var ws WebSource
		err := json.Unmarshal(body, &ws)
		return ws, err
	case string(TypeOracleSource):
		var osVar OracleSource
		err := json.Unmarshal(body, &osVar)
		return osVar, err
	case string(TypeAzureMySQLSource):
		var amss AzureMySQLSource
		err := json.Unmarshal(body, &amss)
		return amss, err
	case string(TypeHdfsSource):
		var hs HdfsSource
		err := json.Unmarshal(body, &hs)
		return hs, err
	case string(TypeFileSystemSource):
		var fss FileSystemSource
		err := json.Unmarshal(body, &fss)
		return fss, err
	case string(TypeSQLDWSource):
		var sds SQLDWSource
		err := json.Unmarshal(body, &sds)
		return sds, err
	case string(TypeSQLSource):
		var ss SQLSource
		err := json.Unmarshal(body, &ss)
		return ss, err
	case string(TypeSapEccSource):
		var ses SapEccSource
		err := json.Unmarshal(body, &ses)
		return ses, err
	case string(TypeSapCloudForCustomerSource):
		var scfcs SapCloudForCustomerSource
		err := json.Unmarshal(body, &scfcs)
		return scfcs, err
	case string(TypeSalesforceSource):
		var ss SalesforceSource
		err := json.Unmarshal(body, &ss)
		return ss, err
	case string(TypeRelationalSource):
		var rs RelationalSource
		err := json.Unmarshal(body, &rs)
		return rs, err
	case string(TypeDynamicsSource):
		var ds DynamicsSource
		err := json.Unmarshal(body, &ds)
		return ds, err
	case string(TypeDocumentDbCollectionSource):
		var ddcs DocumentDbCollectionSource
		err := json.Unmarshal(body, &ddcs)
		return ddcs, err
	case string(TypeBlobSource):
		var bs BlobSource
		err := json.Unmarshal(body, &bs)
		return bs, err
	case string(TypeAzureTableSource):
		var ats AzureTableSource
		err := json.Unmarshal(body, &ats)
		return ats, err
	default:
		var cs CopySource
		err := json.Unmarshal(body, &cs)
		return cs, err
	}
}
func unmarshalBasicCopySourceArray(body []byte) ([]BasicCopySource, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	csArray := make([]BasicCopySource, len(rawMessages))

	for index, rawMessage := range rawMessages {
		cs, err := unmarshalBasicCopySource(*rawMessage)
		if err != nil {
			return nil, err
		}
		csArray[index] = cs
	}
	return csArray, nil
}

// MarshalJSON is the custom marshaler for CopySource.
func (cs CopySource) MarshalJSON() ([]byte, error) {
	cs.Type = TypeCopySource
	objectMap := make(map[string]interface{})
	if cs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = cs.SourceRetryCount
	}
	if cs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = cs.SourceRetryWait
	}
	if cs.Type != "" {
		objectMap["type"] = cs.Type
	}
	for k, v := range cs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsCopySource() (*CopySource, bool) {
	return &cs, true
}

// AsBasicCopySource is the BasicCopySource implementation for CopySource.
func (cs CopySource) AsBasicCopySource() (BasicCopySource, bool) {
	return &cs, true
}

// UnmarshalJSON is the custom unmarshaler for CopySource struct.
func (cs *CopySource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if cs.AdditionalProperties == nil {
					cs.AdditionalProperties = make(map[string]interface{})
				}
				cs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				cs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				cs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				cs.Type = typeVar
			}
		}
	}

	return nil
}

// CosmosDbLinkedService microsoft Azure Cosmos Database (CosmosDB) linked service.
type CosmosDbLinkedService struct {
	// CosmosDbLinkedServiceTypeProperties - CosmosDB linked service properties.
	*CosmosDbLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) MarshalJSON() ([]byte, error) {
	cdls.Type = TypeCosmosDb
	objectMap := make(map[string]interface{})
	if cdls.CosmosDbLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = cdls.CosmosDbLinkedServiceTypeProperties
	}
	if cdls.ConnectVia != nil {
		objectMap["connectVia"] = cdls.ConnectVia
	}
	if cdls.Description != nil {
		objectMap["description"] = cdls.Description
	}
	if cdls.Parameters != nil {
		objectMap["parameters"] = cdls.Parameters
	}
	if cdls.Annotations != nil {
		objectMap["annotations"] = cdls.Annotations
	}
	if cdls.Type != "" {
		objectMap["type"] = cdls.Type
	}
	for k, v := range cdls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return &cdls, true
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for CosmosDbLinkedService.
func (cdls CosmosDbLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &cdls, true
}

// UnmarshalJSON is the custom unmarshaler for CosmosDbLinkedService struct.
func (cdls *CosmosDbLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var cosmosDbLinkedServiceTypeProperties CosmosDbLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &cosmosDbLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				cdls.CosmosDbLinkedServiceTypeProperties = &cosmosDbLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if cdls.AdditionalProperties == nil {
					cdls.AdditionalProperties = make(map[string]interface{})
				}
				cdls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				cdls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				cdls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				cdls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				cdls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				cdls.Type = typeVar
			}
		}
	}

	return nil
}

// CosmosDbLinkedServiceTypeProperties cosmosDB linked service properties.
type CosmosDbLinkedServiceTypeProperties struct {
	// ConnectionString - The connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// CouchbaseLinkedService couchbase server linked service.
type CouchbaseLinkedService struct {
	// CouchbaseLinkedServiceTypeProperties - Couchbase server linked service properties.
	*CouchbaseLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) MarshalJSON() ([]byte, error) {
	cls.Type = TypeCouchbase
	objectMap := make(map[string]interface{})
	if cls.CouchbaseLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = cls.CouchbaseLinkedServiceTypeProperties
	}
	if cls.ConnectVia != nil {
		objectMap["connectVia"] = cls.ConnectVia
	}
	if cls.Description != nil {
		objectMap["description"] = cls.Description
	}
	if cls.Parameters != nil {
		objectMap["parameters"] = cls.Parameters
	}
	if cls.Annotations != nil {
		objectMap["annotations"] = cls.Annotations
	}
	if cls.Type != "" {
		objectMap["type"] = cls.Type
	}
	for k, v := range cls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return &cls, true
}

// AsConcurLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for CouchbaseLinkedService.
func (cls CouchbaseLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &cls, true
}

// UnmarshalJSON is the custom unmarshaler for CouchbaseLinkedService struct.
func (cls *CouchbaseLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var couchbaseLinkedServiceTypeProperties CouchbaseLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &couchbaseLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				cls.CouchbaseLinkedServiceTypeProperties = &couchbaseLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if cls.AdditionalProperties == nil {
					cls.AdditionalProperties = make(map[string]interface{})
				}
				cls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				cls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				cls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				cls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				cls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				cls.Type = typeVar
			}
		}
	}

	return nil
}

// CouchbaseLinkedServiceTypeProperties couchbase server linked service properties.
type CouchbaseLinkedServiceTypeProperties struct {
	// ConnectionString - An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// CouchbaseSource a copy activity Couchbase server source.
type CouchbaseSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for CouchbaseSource.
func (cs CouchbaseSource) MarshalJSON() ([]byte, error) {
	cs.Type = TypeCouchbaseSource
	objectMap := make(map[string]interface{})
	if cs.Query != nil {
		objectMap["query"] = cs.Query
	}
	if cs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = cs.SourceRetryCount
	}
	if cs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = cs.SourceRetryWait
	}
	if cs.Type != "" {
		objectMap["type"] = cs.Type
	}
	for k, v := range cs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return &cs, true
}

// AsConcurSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for CouchbaseSource.
func (cs CouchbaseSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &cs, true
}

// UnmarshalJSON is the custom unmarshaler for CouchbaseSource struct.
func (cs *CouchbaseSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				cs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if cs.AdditionalProperties == nil {
					cs.AdditionalProperties = make(map[string]interface{})
				}
				cs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				cs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				cs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				cs.Type = typeVar
			}
		}
	}

	return nil
}

// CouchbaseTableDataset couchbase server dataset.
type CouchbaseTableDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) MarshalJSON() ([]byte, error) {
	ctd.Type = TypeCouchbaseTable
	objectMap := make(map[string]interface{})
	if ctd.Description != nil {
		objectMap["description"] = ctd.Description
	}
	if ctd.Structure != nil {
		objectMap["structure"] = ctd.Structure
	}
	if ctd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = ctd.LinkedServiceName
	}
	if ctd.Parameters != nil {
		objectMap["parameters"] = ctd.Parameters
	}
	if ctd.Annotations != nil {
		objectMap["annotations"] = ctd.Annotations
	}
	if ctd.Type != "" {
		objectMap["type"] = ctd.Type
	}
	for k, v := range ctd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return &ctd, true
}

// AsConcurObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for CouchbaseTableDataset.
func (ctd CouchbaseTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &ctd, true
}

// UnmarshalJSON is the custom unmarshaler for CouchbaseTableDataset struct.
func (ctd *CouchbaseTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ctd.AdditionalProperties == nil {
					ctd.AdditionalProperties = make(map[string]interface{})
				}
				ctd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ctd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				ctd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				ctd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				ctd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				ctd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ctd.Type = typeVar
			}
		}
	}

	return nil
}

// CreateRunResponse response body with a run identifier.
type CreateRunResponse struct {
	autorest.Response `json:"-"`
	// RunID - Identifier of a run.
	RunID *string `json:"runId,omitempty"`
}

// CustomActivity custom activity type.
type CustomActivity struct {
	// CustomActivityTypeProperties - Custom activity properties.
	*CustomActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for CustomActivity.
func (ca CustomActivity) MarshalJSON() ([]byte, error) {
	ca.Type = TypeCustom
	objectMap := make(map[string]interface{})
	if ca.CustomActivityTypeProperties != nil {
		objectMap["typeProperties"] = ca.CustomActivityTypeProperties
	}
	if ca.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = ca.LinkedServiceName
	}
	if ca.Policy != nil {
		objectMap["policy"] = ca.Policy
	}
	if ca.Name != nil {
		objectMap["name"] = ca.Name
	}
	if ca.Description != nil {
		objectMap["description"] = ca.Description
	}
	if ca.DependsOn != nil {
		objectMap["dependsOn"] = ca.DependsOn
	}
	if ca.Type != "" {
		objectMap["type"] = ca.Type
	}
	for k, v := range ca.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsCustomActivity() (*CustomActivity, bool) {
	return &ca, true
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &ca, true
}

// AsFilterActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for CustomActivity.
func (ca CustomActivity) AsBasicActivity() (BasicActivity, bool) {
	return &ca, true
}

// UnmarshalJSON is the custom unmarshaler for CustomActivity struct.
func (ca *CustomActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var customActivityTypeProperties CustomActivityTypeProperties
				err = json.Unmarshal(*v, &customActivityTypeProperties)
				if err != nil {
					return err
				}
				ca.CustomActivityTypeProperties = &customActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				ca.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				ca.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ca.AdditionalProperties == nil {
					ca.AdditionalProperties = make(map[string]interface{})
				}
				ca.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				ca.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ca.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				ca.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ca.Type = typeVar
			}
		}
	}

	return nil
}

// CustomActivityReferenceObject reference objects for custom activity
type CustomActivityReferenceObject struct {
	// LinkedServices - Linked service references.
	LinkedServices *[]LinkedServiceReference `json:"linkedServices,omitempty"`
	// Datasets - Dataset references.
	Datasets *[]DatasetReference `json:"datasets,omitempty"`
}

// CustomActivityTypeProperties custom activity properties.
type CustomActivityTypeProperties struct {
	// Command - Command for custom activity Type: string (or Expression with resultType string).
	Command interface{} `json:"command,omitempty"`
	// ResourceLinkedService - Resource linked service reference.
	ResourceLinkedService *LinkedServiceReference `json:"resourceLinkedService,omitempty"`
	// FolderPath - Folder path for resource files Type: string (or Expression with resultType string).
	FolderPath interface{} `json:"folderPath,omitempty"`
	// ReferenceObjects - Reference objects
	ReferenceObjects *CustomActivityReferenceObject `json:"referenceObjects,omitempty"`
	// ExtendedProperties - 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 to consume and interpret the content defined.
	ExtendedProperties map[string]interface{} `json:"extendedProperties"`
}

// MarshalJSON is the custom marshaler for CustomActivityTypeProperties.
func (catp CustomActivityTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if catp.Command != nil {
		objectMap["command"] = catp.Command
	}
	if catp.ResourceLinkedService != nil {
		objectMap["resourceLinkedService"] = catp.ResourceLinkedService
	}
	if catp.FolderPath != nil {
		objectMap["folderPath"] = catp.FolderPath
	}
	if catp.ReferenceObjects != nil {
		objectMap["referenceObjects"] = catp.ReferenceObjects
	}
	if catp.ExtendedProperties != nil {
		objectMap["extendedProperties"] = catp.ExtendedProperties
	}
	return json.Marshal(objectMap)
}

// CustomDataset the custom dataset.
type CustomDataset struct {
	// TypeProperties - Custom dataset properties.
	TypeProperties interface{} `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for CustomDataset.
func (cd CustomDataset) MarshalJSON() ([]byte, error) {
	cd.Type = TypeCustomDataset
	objectMap := make(map[string]interface{})
	if cd.TypeProperties != nil {
		objectMap["typeProperties"] = cd.TypeProperties
	}
	if cd.Description != nil {
		objectMap["description"] = cd.Description
	}
	if cd.Structure != nil {
		objectMap["structure"] = cd.Structure
	}
	if cd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = cd.LinkedServiceName
	}
	if cd.Parameters != nil {
		objectMap["parameters"] = cd.Parameters
	}
	if cd.Annotations != nil {
		objectMap["annotations"] = cd.Annotations
	}
	if cd.Type != "" {
		objectMap["type"] = cd.Type
	}
	for k, v := range cd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsCustomDataset() (*CustomDataset, bool) {
	return &cd, true
}

// AsCassandraTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for CustomDataset.
func (cd CustomDataset) AsBasicDataset() (BasicDataset, bool) {
	return &cd, true
}

// UnmarshalJSON is the custom unmarshaler for CustomDataset struct.
func (cd *CustomDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var typeProperties interface{}
				err = json.Unmarshal(*v, &typeProperties)
				if err != nil {
					return err
				}
				cd.TypeProperties = typeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if cd.AdditionalProperties == nil {
					cd.AdditionalProperties = make(map[string]interface{})
				}
				cd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				cd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				cd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				cd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				cd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				cd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				cd.Type = typeVar
			}
		}
	}

	return nil
}

// CustomDataSourceLinkedService custom linked service.
type CustomDataSourceLinkedService struct {
	// TypeProperties - Custom linked service properties.
	TypeProperties interface{} `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) MarshalJSON() ([]byte, error) {
	cdsls.Type = TypeCustomDataSource
	objectMap := make(map[string]interface{})
	if cdsls.TypeProperties != nil {
		objectMap["typeProperties"] = cdsls.TypeProperties
	}
	if cdsls.ConnectVia != nil {
		objectMap["connectVia"] = cdsls.ConnectVia
	}
	if cdsls.Description != nil {
		objectMap["description"] = cdsls.Description
	}
	if cdsls.Parameters != nil {
		objectMap["parameters"] = cdsls.Parameters
	}
	if cdsls.Annotations != nil {
		objectMap["annotations"] = cdsls.Annotations
	}
	if cdsls.Type != "" {
		objectMap["type"] = cdsls.Type
	}
	for k, v := range cdsls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return &cdsls, true
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for CustomDataSourceLinkedService.
func (cdsls CustomDataSourceLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &cdsls, true
}

// UnmarshalJSON is the custom unmarshaler for CustomDataSourceLinkedService struct.
func (cdsls *CustomDataSourceLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var typeProperties interface{}
				err = json.Unmarshal(*v, &typeProperties)
				if err != nil {
					return err
				}
				cdsls.TypeProperties = typeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if cdsls.AdditionalProperties == nil {
					cdsls.AdditionalProperties = make(map[string]interface{})
				}
				cdsls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				cdsls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				cdsls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				cdsls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				cdsls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				cdsls.Type = typeVar
			}
		}
	}

	return nil
}

// DatabricksNotebookActivity databricksNotebook activity.
type DatabricksNotebookActivity struct {
	// DatabricksNotebookActivityTypeProperties - Databricks Notebook activity properties.
	*DatabricksNotebookActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) MarshalJSON() ([]byte, error) {
	dna.Type = TypeDatabricksNotebook
	objectMap := make(map[string]interface{})
	if dna.DatabricksNotebookActivityTypeProperties != nil {
		objectMap["typeProperties"] = dna.DatabricksNotebookActivityTypeProperties
	}
	if dna.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = dna.LinkedServiceName
	}
	if dna.Policy != nil {
		objectMap["policy"] = dna.Policy
	}
	if dna.Name != nil {
		objectMap["name"] = dna.Name
	}
	if dna.Description != nil {
		objectMap["description"] = dna.Description
	}
	if dna.DependsOn != nil {
		objectMap["dependsOn"] = dna.DependsOn
	}
	if dna.Type != "" {
		objectMap["type"] = dna.Type
	}
	for k, v := range dna.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return &dna, true
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &dna, true
}

// AsFilterActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for DatabricksNotebookActivity.
func (dna DatabricksNotebookActivity) AsBasicActivity() (BasicActivity, bool) {
	return &dna, true
}

// UnmarshalJSON is the custom unmarshaler for DatabricksNotebookActivity struct.
func (dna *DatabricksNotebookActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var databricksNotebookActivityTypeProperties DatabricksNotebookActivityTypeProperties
				err = json.Unmarshal(*v, &databricksNotebookActivityTypeProperties)
				if err != nil {
					return err
				}
				dna.DatabricksNotebookActivityTypeProperties = &databricksNotebookActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				dna.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				dna.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if dna.AdditionalProperties == nil {
					dna.AdditionalProperties = make(map[string]interface{})
				}
				dna.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				dna.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				dna.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				dna.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				dna.Type = typeVar
			}
		}
	}

	return nil
}

// DatabricksNotebookActivityTypeProperties databricks Notebook activity properties.
type DatabricksNotebookActivityTypeProperties struct {
	// NotebookPath - 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 resultType string).
	NotebookPath interface{} `json:"notebookPath,omitempty"`
	// BaseParameters - 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 be used.
	BaseParameters map[string]interface{} `json:"baseParameters"`
}

// MarshalJSON is the custom marshaler for DatabricksNotebookActivityTypeProperties.
func (dnatp DatabricksNotebookActivityTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if dnatp.NotebookPath != nil {
		objectMap["notebookPath"] = dnatp.NotebookPath
	}
	if dnatp.BaseParameters != nil {
		objectMap["baseParameters"] = dnatp.BaseParameters
	}
	return json.Marshal(objectMap)
}

// DataLakeAnalyticsUSQLActivity data Lake Analytics U-SQL activity.
type DataLakeAnalyticsUSQLActivity struct {
	// DataLakeAnalyticsUSQLActivityTypeProperties - Data Lake Analytics U-SQL activity properties.
	*DataLakeAnalyticsUSQLActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) MarshalJSON() ([]byte, error) {
	dlaua.Type = TypeDataLakeAnalyticsUSQL
	objectMap := make(map[string]interface{})
	if dlaua.DataLakeAnalyticsUSQLActivityTypeProperties != nil {
		objectMap["typeProperties"] = dlaua.DataLakeAnalyticsUSQLActivityTypeProperties
	}
	if dlaua.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = dlaua.LinkedServiceName
	}
	if dlaua.Policy != nil {
		objectMap["policy"] = dlaua.Policy
	}
	if dlaua.Name != nil {
		objectMap["name"] = dlaua.Name
	}
	if dlaua.Description != nil {
		objectMap["description"] = dlaua.Description
	}
	if dlaua.DependsOn != nil {
		objectMap["dependsOn"] = dlaua.DependsOn
	}
	if dlaua.Type != "" {
		objectMap["type"] = dlaua.Type
	}
	for k, v := range dlaua.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return &dlaua, true
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &dlaua, true
}

// AsFilterActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for DataLakeAnalyticsUSQLActivity.
func (dlaua DataLakeAnalyticsUSQLActivity) AsBasicActivity() (BasicActivity, bool) {
	return &dlaua, true
}

// UnmarshalJSON is the custom unmarshaler for DataLakeAnalyticsUSQLActivity struct.
func (dlaua *DataLakeAnalyticsUSQLActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var dataLakeAnalyticsUSQLActivityTypeProperties DataLakeAnalyticsUSQLActivityTypeProperties
				err = json.Unmarshal(*v, &dataLakeAnalyticsUSQLActivityTypeProperties)
				if err != nil {
					return err
				}
				dlaua.DataLakeAnalyticsUSQLActivityTypeProperties = &dataLakeAnalyticsUSQLActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				dlaua.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				dlaua.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if dlaua.AdditionalProperties == nil {
					dlaua.AdditionalProperties = make(map[string]interface{})
				}
				dlaua.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				dlaua.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				dlaua.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				dlaua.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				dlaua.Type = typeVar
			}
		}
	}

	return nil
}

// DataLakeAnalyticsUSQLActivityTypeProperties dataLakeAnalyticsU-SQL activity properties.
type DataLakeAnalyticsUSQLActivityTypeProperties struct {
	// ScriptPath - Case-sensitive path to folder that contains the U-SQL script. Type: string (or Expression with resultType string).
	ScriptPath interface{} `json:"scriptPath,omitempty"`
	// ScriptLinkedService - Script linked service reference.
	ScriptLinkedService *LinkedServiceReference `json:"scriptLinkedService,omitempty"`
	// DegreeOfParallelism - The maximum number of nodes simultaneously used to run the job. Default value is 1. Type: integer (or Expression with resultType integer), minimum: 1.
	DegreeOfParallelism interface{} `json:"degreeOfParallelism,omitempty"`
	// Priority - 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. Type: integer (or Expression with resultType integer), minimum: 1.
	Priority interface{} `json:"priority,omitempty"`
	// Parameters - Parameters for U-SQL job request.
	Parameters map[string]interface{} `json:"parameters"`
	// RuntimeVersion - Runtime version of the U-SQL engine to use. Type: string (or Expression with resultType string).
	RuntimeVersion interface{} `json:"runtimeVersion,omitempty"`
	// CompilationMode - Compilation mode of U-SQL. Must be one of these values : Semantic, Full and SingleBox. Type: string (or Expression with resultType string).
	CompilationMode interface{} `json:"compilationMode,omitempty"`
}

// MarshalJSON is the custom marshaler for DataLakeAnalyticsUSQLActivityTypeProperties.
func (dlauatp DataLakeAnalyticsUSQLActivityTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if dlauatp.ScriptPath != nil {
		objectMap["scriptPath"] = dlauatp.ScriptPath
	}
	if dlauatp.ScriptLinkedService != nil {
		objectMap["scriptLinkedService"] = dlauatp.ScriptLinkedService
	}
	if dlauatp.DegreeOfParallelism != nil {
		objectMap["degreeOfParallelism"] = dlauatp.DegreeOfParallelism
	}
	if dlauatp.Priority != nil {
		objectMap["priority"] = dlauatp.Priority
	}
	if dlauatp.Parameters != nil {
		objectMap["parameters"] = dlauatp.Parameters
	}
	if dlauatp.RuntimeVersion != nil {
		objectMap["runtimeVersion"] = dlauatp.RuntimeVersion
	}
	if dlauatp.CompilationMode != nil {
		objectMap["compilationMode"] = dlauatp.CompilationMode
	}
	return json.Marshal(objectMap)
}

// BasicDataset the Azure Data Factory nested object which identifies data within different data stores, such as
// tables, files, folders, and documents.
type BasicDataset interface {
	AsResponsysObjectDataset() (*ResponsysObjectDataset, bool)
	AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool)
	AsVerticaTableDataset() (*VerticaTableDataset, bool)
	AsNetezzaTableDataset() (*NetezzaTableDataset, bool)
	AsZohoObjectDataset() (*ZohoObjectDataset, bool)
	AsXeroObjectDataset() (*XeroObjectDataset, bool)
	AsSquareObjectDataset() (*SquareObjectDataset, bool)
	AsSparkObjectDataset() (*SparkObjectDataset, bool)
	AsShopifyObjectDataset() (*ShopifyObjectDataset, bool)
	AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool)
	AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool)
	AsPrestoObjectDataset() (*PrestoObjectDataset, bool)
	AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool)
	AsPaypalObjectDataset() (*PaypalObjectDataset, bool)
	AsMarketoObjectDataset() (*MarketoObjectDataset, bool)
	AsMariaDBTableDataset() (*MariaDBTableDataset, bool)
	AsMagentoObjectDataset() (*MagentoObjectDataset, bool)
	AsJiraObjectDataset() (*JiraObjectDataset, bool)
	AsImpalaObjectDataset() (*ImpalaObjectDataset, bool)
	AsHubspotObjectDataset() (*HubspotObjectDataset, bool)
	AsHiveObjectDataset() (*HiveObjectDataset, bool)
	AsHBaseObjectDataset() (*HBaseObjectDataset, bool)
	AsGreenplumTableDataset() (*GreenplumTableDataset, bool)
	AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool)
	AsEloquaObjectDataset() (*EloquaObjectDataset, bool)
	AsDrillTableDataset() (*DrillTableDataset, bool)
	AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool)
	AsConcurObjectDataset() (*ConcurObjectDataset, bool)
	AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool)
	AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool)
	AsHTTPDataset() (*HTTPDataset, bool)
	AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool)
	AsWebTableDataset() (*WebTableDataset, bool)
	AsSQLServerTableDataset() (*SQLServerTableDataset, bool)
	AsSapEccResourceDataset() (*SapEccResourceDataset, bool)
	AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool)
	AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool)
	AsRelationalTableDataset() (*RelationalTableDataset, bool)
	AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool)
	AsOracleTableDataset() (*OracleTableDataset, bool)
	AsODataResourceDataset() (*ODataResourceDataset, bool)
	AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool)
	AsFileShareDataset() (*FileShareDataset, bool)
	AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool)
	AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool)
	AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool)
	AsCustomDataset() (*CustomDataset, bool)
	AsCassandraTableDataset() (*CassandraTableDataset, bool)
	AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool)
	AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool)
	AsAzureTableDataset() (*AzureTableDataset, bool)
	AsAzureBlobDataset() (*AzureBlobDataset, bool)
	AsAmazonS3Dataset() (*AmazonS3Dataset, bool)
	AsDataset() (*Dataset, bool)
}

// Dataset the Azure Data Factory nested object which identifies data within different data stores, such as
// tables, files, folders, and documents.
type Dataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

func unmarshalBasicDataset(body []byte) (BasicDataset, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeResponsysObject):
		var rod ResponsysObjectDataset
		err := json.Unmarshal(body, &rod)
		return rod, err
	case string(TypeSalesforceMarketingCloudObject):
		var smcod SalesforceMarketingCloudObjectDataset
		err := json.Unmarshal(body, &smcod)
		return smcod, err
	case string(TypeVerticaTable):
		var vtd VerticaTableDataset
		err := json.Unmarshal(body, &vtd)
		return vtd, err
	case string(TypeNetezzaTable):
		var ntd NetezzaTableDataset
		err := json.Unmarshal(body, &ntd)
		return ntd, err
	case string(TypeZohoObject):
		var zod ZohoObjectDataset
		err := json.Unmarshal(body, &zod)
		return zod, err
	case string(TypeXeroObject):
		var xod XeroObjectDataset
		err := json.Unmarshal(body, &xod)
		return xod, err
	case string(TypeSquareObject):
		var sod SquareObjectDataset
		err := json.Unmarshal(body, &sod)
		return sod, err
	case string(TypeSparkObject):
		var sod SparkObjectDataset
		err := json.Unmarshal(body, &sod)
		return sod, err
	case string(TypeShopifyObject):
		var sod ShopifyObjectDataset
		err := json.Unmarshal(body, &sod)
		return sod, err
	case string(TypeServiceNowObject):
		var snod ServiceNowObjectDataset
		err := json.Unmarshal(body, &snod)
		return snod, err
	case string(TypeQuickBooksObject):
		var qbod QuickBooksObjectDataset
		err := json.Unmarshal(body, &qbod)
		return qbod, err
	case string(TypePrestoObject):
		var pod PrestoObjectDataset
		err := json.Unmarshal(body, &pod)
		return pod, err
	case string(TypePhoenixObject):
		var pod PhoenixObjectDataset
		err := json.Unmarshal(body, &pod)
		return pod, err
	case string(TypePaypalObject):
		var pod PaypalObjectDataset
		err := json.Unmarshal(body, &pod)
		return pod, err
	case string(TypeMarketoObject):
		var mod MarketoObjectDataset
		err := json.Unmarshal(body, &mod)
		return mod, err
	case string(TypeMariaDBTable):
		var mdtd MariaDBTableDataset
		err := json.Unmarshal(body, &mdtd)
		return mdtd, err
	case string(TypeMagentoObject):
		var mod MagentoObjectDataset
		err := json.Unmarshal(body, &mod)
		return mod, err
	case string(TypeJiraObject):
		var jod JiraObjectDataset
		err := json.Unmarshal(body, &jod)
		return jod, err
	case string(TypeImpalaObject):
		var iod ImpalaObjectDataset
		err := json.Unmarshal(body, &iod)
		return iod, err
	case string(TypeHubspotObject):
		var hod HubspotObjectDataset
		err := json.Unmarshal(body, &hod)
		return hod, err
	case string(TypeHiveObject):
		var hod HiveObjectDataset
		err := json.Unmarshal(body, &hod)
		return hod, err
	case string(TypeHBaseObject):
		var hbod HBaseObjectDataset
		err := json.Unmarshal(body, &hbod)
		return hbod, err
	case string(TypeGreenplumTable):
		var gtd GreenplumTableDataset
		err := json.Unmarshal(body, &gtd)
		return gtd, err
	case string(TypeGoogleBigQueryObject):
		var gbqod GoogleBigQueryObjectDataset
		err := json.Unmarshal(body, &gbqod)
		return gbqod, err
	case string(TypeEloquaObject):
		var eod EloquaObjectDataset
		err := json.Unmarshal(body, &eod)
		return eod, err
	case string(TypeDrillTable):
		var dtd DrillTableDataset
		err := json.Unmarshal(body, &dtd)
		return dtd, err
	case string(TypeCouchbaseTable):
		var ctd CouchbaseTableDataset
		err := json.Unmarshal(body, &ctd)
		return ctd, err
	case string(TypeConcurObject):
		var cod ConcurObjectDataset
		err := json.Unmarshal(body, &cod)
		return cod, err
	case string(TypeAzurePostgreSQLTable):
		var apstd AzurePostgreSQLTableDataset
		err := json.Unmarshal(body, &apstd)
		return apstd, err
	case string(TypeAmazonMWSObject):
		var amod AmazonMWSObjectDataset
		err := json.Unmarshal(body, &amod)
		return amod, err
	case string(TypeHTTPFile):
		var hd HTTPDataset
		err := json.Unmarshal(body, &hd)
		return hd, err
	case string(TypeAzureSearchIndex):
		var asid AzureSearchIndexDataset
		err := json.Unmarshal(body, &asid)
		return asid, err
	case string(TypeWebTable):
		var wtd WebTableDataset
		err := json.Unmarshal(body, &wtd)
		return wtd, err
	case string(TypeSQLServerTable):
		var sstd SQLServerTableDataset
		err := json.Unmarshal(body, &sstd)
		return sstd, err
	case string(TypeSapEccResource):
		var serd SapEccResourceDataset
		err := json.Unmarshal(body, &serd)
		return serd, err
	case string(TypeSapCloudForCustomerResource):
		var scfcrd SapCloudForCustomerResourceDataset
		err := json.Unmarshal(body, &scfcrd)
		return scfcrd, err
	case string(TypeSalesforceObject):
		var sod SalesforceObjectDataset
		err := json.Unmarshal(body, &sod)
		return sod, err
	case string(TypeRelationalTable):
		var rtd RelationalTableDataset
		err := json.Unmarshal(body, &rtd)
		return rtd, err
	case string(TypeAzureMySQLTable):
		var amstd AzureMySQLTableDataset
		err := json.Unmarshal(body, &amstd)
		return amstd, err
	case string(TypeOracleTable):
		var otd OracleTableDataset
		err := json.Unmarshal(body, &otd)
		return otd, err
	case string(TypeODataResource):
		var odrd ODataResourceDataset
		err := json.Unmarshal(body, &odrd)
		return odrd, err
	case string(TypeMongoDbCollection):
		var mdcd MongoDbCollectionDataset
		err := json.Unmarshal(body, &mdcd)
		return mdcd, err
	case string(TypeFileShare):
		var fsd FileShareDataset
		err := json.Unmarshal(body, &fsd)
		return fsd, err
	case string(TypeAzureDataLakeStoreFile):
		var adlsd AzureDataLakeStoreDataset
		err := json.Unmarshal(body, &adlsd)
		return adlsd, err
	case string(TypeDynamicsEntity):
		var ded DynamicsEntityDataset
		err := json.Unmarshal(body, &ded)
		return ded, err
	case string(TypeDocumentDbCollection):
		var ddcd DocumentDbCollectionDataset
		err := json.Unmarshal(body, &ddcd)
		return ddcd, err
	case string(TypeCustomDataset):
		var cd CustomDataset
		err := json.Unmarshal(body, &cd)
		return cd, err
	case string(TypeCassandraTable):
		var ctd CassandraTableDataset
		err := json.Unmarshal(body, &ctd)
		return ctd, err
	case string(TypeAzureSQLDWTable):
		var asdtd AzureSQLDWTableDataset
		err := json.Unmarshal(body, &asdtd)
		return asdtd, err
	case string(TypeAzureSQLTable):
		var astd AzureSQLTableDataset
		err := json.Unmarshal(body, &astd)
		return astd, err
	case string(TypeAzureTable):
		var atd AzureTableDataset
		err := json.Unmarshal(body, &atd)
		return atd, err
	case string(TypeAzureBlob):
		var abd AzureBlobDataset
		err := json.Unmarshal(body, &abd)
		return abd, err
	case string(TypeAmazonS3Object):
		var asd AmazonS3Dataset
		err := json.Unmarshal(body, &asd)
		return asd, err
	default:
		var d Dataset
		err := json.Unmarshal(body, &d)
		return d, err
	}
}
func unmarshalBasicDatasetArray(body []byte) ([]BasicDataset, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	dArray := make([]BasicDataset, len(rawMessages))

	for index, rawMessage := range rawMessages {
		d, err := unmarshalBasicDataset(*rawMessage)
		if err != nil {
			return nil, err
		}
		dArray[index] = d
	}
	return dArray, nil
}

// MarshalJSON is the custom marshaler for Dataset.
func (d Dataset) MarshalJSON() ([]byte, error) {
	d.Type = TypeDataset
	objectMap := make(map[string]interface{})
	if d.Description != nil {
		objectMap["description"] = d.Description
	}
	if d.Structure != nil {
		objectMap["structure"] = d.Structure
	}
	if d.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = d.LinkedServiceName
	}
	if d.Parameters != nil {
		objectMap["parameters"] = d.Parameters
	}
	if d.Annotations != nil {
		objectMap["annotations"] = d.Annotations
	}
	if d.Type != "" {
		objectMap["type"] = d.Type
	}
	for k, v := range d.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsDataset() (*Dataset, bool) {
	return &d, true
}

// AsBasicDataset is the BasicDataset implementation for Dataset.
func (d Dataset) AsBasicDataset() (BasicDataset, bool) {
	return &d, true
}

// UnmarshalJSON is the custom unmarshaler for Dataset struct.
func (d *Dataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if d.AdditionalProperties == nil {
					d.AdditionalProperties = make(map[string]interface{})
				}
				d.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				d.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				d.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				d.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				d.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				d.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				d.Type = typeVar
			}
		}
	}

	return nil
}

// DatasetBZip2Compression the BZip2 compression method used on a dataset.
type DatasetBZip2Compression struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Type - Possible values include: 'TypeDatasetCompression', 'TypeZipDeflate', 'TypeDeflate', 'TypeGZip', 'TypeBZip2'
	Type TypeBasicDatasetCompression `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DatasetBZip2Compression.
func (dbz2c DatasetBZip2Compression) MarshalJSON() ([]byte, error) {
	dbz2c.Type = TypeBZip2
	objectMap := make(map[string]interface{})
	if dbz2c.Type != "" {
		objectMap["type"] = dbz2c.Type
	}
	for k, v := range dbz2c.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatasetZipDeflateCompression is the BasicDatasetCompression implementation for DatasetBZip2Compression.
func (dbz2c DatasetBZip2Compression) AsDatasetZipDeflateCompression() (*DatasetZipDeflateCompression, bool) {
	return nil, false
}

// AsDatasetDeflateCompression is the BasicDatasetCompression implementation for DatasetBZip2Compression.
func (dbz2c DatasetBZip2Compression) AsDatasetDeflateCompression() (*DatasetDeflateCompression, bool) {
	return nil, false
}

// AsDatasetGZipCompression is the BasicDatasetCompression implementation for DatasetBZip2Compression.
func (dbz2c DatasetBZip2Compression) AsDatasetGZipCompression() (*DatasetGZipCompression, bool) {
	return nil, false
}

// AsDatasetBZip2Compression is the BasicDatasetCompression implementation for DatasetBZip2Compression.
func (dbz2c DatasetBZip2Compression) AsDatasetBZip2Compression() (*DatasetBZip2Compression, bool) {
	return &dbz2c, true
}

// AsDatasetCompression is the BasicDatasetCompression implementation for DatasetBZip2Compression.
func (dbz2c DatasetBZip2Compression) AsDatasetCompression() (*DatasetCompression, bool) {
	return nil, false
}

// AsBasicDatasetCompression is the BasicDatasetCompression implementation for DatasetBZip2Compression.
func (dbz2c DatasetBZip2Compression) AsBasicDatasetCompression() (BasicDatasetCompression, bool) {
	return &dbz2c, true
}

// UnmarshalJSON is the custom unmarshaler for DatasetBZip2Compression struct.
func (dbz2c *DatasetBZip2Compression) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if dbz2c.AdditionalProperties == nil {
					dbz2c.AdditionalProperties = make(map[string]interface{})
				}
				dbz2c.AdditionalProperties[k] = additionalProperties
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDatasetCompression
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				dbz2c.Type = typeVar
			}
		}
	}

	return nil
}

// BasicDatasetCompression the compression method used on a dataset.
type BasicDatasetCompression interface {
	AsDatasetZipDeflateCompression() (*DatasetZipDeflateCompression, bool)
	AsDatasetDeflateCompression() (*DatasetDeflateCompression, bool)
	AsDatasetGZipCompression() (*DatasetGZipCompression, bool)
	AsDatasetBZip2Compression() (*DatasetBZip2Compression, bool)
	AsDatasetCompression() (*DatasetCompression, bool)
}

// DatasetCompression the compression method used on a dataset.
type DatasetCompression struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Type - Possible values include: 'TypeDatasetCompression', 'TypeZipDeflate', 'TypeDeflate', 'TypeGZip', 'TypeBZip2'
	Type TypeBasicDatasetCompression `json:"type,omitempty"`
}

func unmarshalBasicDatasetCompression(body []byte) (BasicDatasetCompression, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeZipDeflate):
		var dzdc DatasetZipDeflateCompression
		err := json.Unmarshal(body, &dzdc)
		return dzdc, err
	case string(TypeDeflate):
		var ddc DatasetDeflateCompression
		err := json.Unmarshal(body, &ddc)
		return ddc, err
	case string(TypeGZip):
		var dgzc DatasetGZipCompression
		err := json.Unmarshal(body, &dgzc)
		return dgzc, err
	case string(TypeBZip2):
		var dbz2c DatasetBZip2Compression
		err := json.Unmarshal(body, &dbz2c)
		return dbz2c, err
	default:
		var dc DatasetCompression
		err := json.Unmarshal(body, &dc)
		return dc, err
	}
}
func unmarshalBasicDatasetCompressionArray(body []byte) ([]BasicDatasetCompression, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	dcArray := make([]BasicDatasetCompression, len(rawMessages))

	for index, rawMessage := range rawMessages {
		dc, err := unmarshalBasicDatasetCompression(*rawMessage)
		if err != nil {
			return nil, err
		}
		dcArray[index] = dc
	}
	return dcArray, nil
}

// MarshalJSON is the custom marshaler for DatasetCompression.
func (dc DatasetCompression) MarshalJSON() ([]byte, error) {
	dc.Type = TypeDatasetCompression
	objectMap := make(map[string]interface{})
	if dc.Type != "" {
		objectMap["type"] = dc.Type
	}
	for k, v := range dc.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatasetZipDeflateCompression is the BasicDatasetCompression implementation for DatasetCompression.
func (dc DatasetCompression) AsDatasetZipDeflateCompression() (*DatasetZipDeflateCompression, bool) {
	return nil, false
}

// AsDatasetDeflateCompression is the BasicDatasetCompression implementation for DatasetCompression.
func (dc DatasetCompression) AsDatasetDeflateCompression() (*DatasetDeflateCompression, bool) {
	return nil, false
}

// AsDatasetGZipCompression is the BasicDatasetCompression implementation for DatasetCompression.
func (dc DatasetCompression) AsDatasetGZipCompression() (*DatasetGZipCompression, bool) {
	return nil, false
}

// AsDatasetBZip2Compression is the BasicDatasetCompression implementation for DatasetCompression.
func (dc DatasetCompression) AsDatasetBZip2Compression() (*DatasetBZip2Compression, bool) {
	return nil, false
}

// AsDatasetCompression is the BasicDatasetCompression implementation for DatasetCompression.
func (dc DatasetCompression) AsDatasetCompression() (*DatasetCompression, bool) {
	return &dc, true
}

// AsBasicDatasetCompression is the BasicDatasetCompression implementation for DatasetCompression.
func (dc DatasetCompression) AsBasicDatasetCompression() (BasicDatasetCompression, bool) {
	return &dc, true
}

// UnmarshalJSON is the custom unmarshaler for DatasetCompression struct.
func (dc *DatasetCompression) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if dc.AdditionalProperties == nil {
					dc.AdditionalProperties = make(map[string]interface{})
				}
				dc.AdditionalProperties[k] = additionalProperties
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDatasetCompression
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				dc.Type = typeVar
			}
		}
	}

	return nil
}

// DatasetDeflateCompression the Deflate compression method used on a dataset.
type DatasetDeflateCompression struct {
	// Level - The Deflate compression level.
	Level interface{} `json:"level,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Type - Possible values include: 'TypeDatasetCompression', 'TypeZipDeflate', 'TypeDeflate', 'TypeGZip', 'TypeBZip2'
	Type TypeBasicDatasetCompression `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DatasetDeflateCompression.
func (ddc DatasetDeflateCompression) MarshalJSON() ([]byte, error) {
	ddc.Type = TypeDeflate
	objectMap := make(map[string]interface{})
	if ddc.Level != nil {
		objectMap["level"] = ddc.Level
	}
	if ddc.Type != "" {
		objectMap["type"] = ddc.Type
	}
	for k, v := range ddc.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatasetZipDeflateCompression is the BasicDatasetCompression implementation for DatasetDeflateCompression.
func (ddc DatasetDeflateCompression) AsDatasetZipDeflateCompression() (*DatasetZipDeflateCompression, bool) {
	return nil, false
}

// AsDatasetDeflateCompression is the BasicDatasetCompression implementation for DatasetDeflateCompression.
func (ddc DatasetDeflateCompression) AsDatasetDeflateCompression() (*DatasetDeflateCompression, bool) {
	return &ddc, true
}

// AsDatasetGZipCompression is the BasicDatasetCompression implementation for DatasetDeflateCompression.
func (ddc DatasetDeflateCompression) AsDatasetGZipCompression() (*DatasetGZipCompression, bool) {
	return nil, false
}

// AsDatasetBZip2Compression is the BasicDatasetCompression implementation for DatasetDeflateCompression.
func (ddc DatasetDeflateCompression) AsDatasetBZip2Compression() (*DatasetBZip2Compression, bool) {
	return nil, false
}

// AsDatasetCompression is the BasicDatasetCompression implementation for DatasetDeflateCompression.
func (ddc DatasetDeflateCompression) AsDatasetCompression() (*DatasetCompression, bool) {
	return nil, false
}

// AsBasicDatasetCompression is the BasicDatasetCompression implementation for DatasetDeflateCompression.
func (ddc DatasetDeflateCompression) AsBasicDatasetCompression() (BasicDatasetCompression, bool) {
	return &ddc, true
}

// UnmarshalJSON is the custom unmarshaler for DatasetDeflateCompression struct.
func (ddc *DatasetDeflateCompression) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "level":
			if v != nil {
				var level interface{}
				err = json.Unmarshal(*v, &level)
				if err != nil {
					return err
				}
				ddc.Level = level
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ddc.AdditionalProperties == nil {
					ddc.AdditionalProperties = make(map[string]interface{})
				}
				ddc.AdditionalProperties[k] = additionalProperties
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDatasetCompression
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ddc.Type = typeVar
			}
		}
	}

	return nil
}

// DatasetGZipCompression the GZip compression method used on a dataset.
type DatasetGZipCompression struct {
	// Level - The GZip compression level.
	Level interface{} `json:"level,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Type - Possible values include: 'TypeDatasetCompression', 'TypeZipDeflate', 'TypeDeflate', 'TypeGZip', 'TypeBZip2'
	Type TypeBasicDatasetCompression `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DatasetGZipCompression.
func (dgzc DatasetGZipCompression) MarshalJSON() ([]byte, error) {
	dgzc.Type = TypeGZip
	objectMap := make(map[string]interface{})
	if dgzc.Level != nil {
		objectMap["level"] = dgzc.Level
	}
	if dgzc.Type != "" {
		objectMap["type"] = dgzc.Type
	}
	for k, v := range dgzc.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatasetZipDeflateCompression is the BasicDatasetCompression implementation for DatasetGZipCompression.
func (dgzc DatasetGZipCompression) AsDatasetZipDeflateCompression() (*DatasetZipDeflateCompression, bool) {
	return nil, false
}

// AsDatasetDeflateCompression is the BasicDatasetCompression implementation for DatasetGZipCompression.
func (dgzc DatasetGZipCompression) AsDatasetDeflateCompression() (*DatasetDeflateCompression, bool) {
	return nil, false
}

// AsDatasetGZipCompression is the BasicDatasetCompression implementation for DatasetGZipCompression.
func (dgzc DatasetGZipCompression) AsDatasetGZipCompression() (*DatasetGZipCompression, bool) {
	return &dgzc, true
}

// AsDatasetBZip2Compression is the BasicDatasetCompression implementation for DatasetGZipCompression.
func (dgzc DatasetGZipCompression) AsDatasetBZip2Compression() (*DatasetBZip2Compression, bool) {
	return nil, false
}

// AsDatasetCompression is the BasicDatasetCompression implementation for DatasetGZipCompression.
func (dgzc DatasetGZipCompression) AsDatasetCompression() (*DatasetCompression, bool) {
	return nil, false
}

// AsBasicDatasetCompression is the BasicDatasetCompression implementation for DatasetGZipCompression.
func (dgzc DatasetGZipCompression) AsBasicDatasetCompression() (BasicDatasetCompression, bool) {
	return &dgzc, true
}

// UnmarshalJSON is the custom unmarshaler for DatasetGZipCompression struct.
func (dgzc *DatasetGZipCompression) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "level":
			if v != nil {
				var level interface{}
				err = json.Unmarshal(*v, &level)
				if err != nil {
					return err
				}
				dgzc.Level = level
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if dgzc.AdditionalProperties == nil {
					dgzc.AdditionalProperties = make(map[string]interface{})
				}
				dgzc.AdditionalProperties[k] = additionalProperties
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDatasetCompression
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				dgzc.Type = typeVar
			}
		}
	}

	return nil
}

// DatasetListResponse a list of dataset resources.
type DatasetListResponse struct {
	autorest.Response `json:"-"`
	// Value - List of datasets.
	Value *[]DatasetResource `json:"value,omitempty"`
	// NextLink - The link to the next page of results, if any remaining results exist.
	NextLink *string `json:"nextLink,omitempty"`
}

// DatasetListResponseIterator provides access to a complete listing of DatasetResource values.
type DatasetListResponseIterator struct {
	i    int
	page DatasetListResponsePage
}

// NextWithContext advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
func (iter *DatasetListResponseIterator) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/DatasetListResponseIterator.NextWithContext")
		defer func() {
			sc := -1
			if iter.Response().Response.Response != nil {
				sc = iter.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	iter.i++
	if iter.i < len(iter.page.Values()) {
		return nil
	}
	err = iter.page.NextWithContext(ctx)
	if err != nil {
		iter.i--
		return err
	}
	iter.i = 0
	return nil
}

// Next advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (iter *DatasetListResponseIterator) Next() error {
	return iter.NextWithContext(context.Background())
}

// NotDone returns true if the enumeration should be started or is not yet complete.
func (iter DatasetListResponseIterator) NotDone() bool {
	return iter.page.NotDone() && iter.i < len(iter.page.Values())
}

// Response returns the raw server response from the last page request.
func (iter DatasetListResponseIterator) Response() DatasetListResponse {
	return iter.page.Response()
}

// Value returns the current value or a zero-initialized value if the
// iterator has advanced beyond the end of the collection.
func (iter DatasetListResponseIterator) Value() DatasetResource {
	if !iter.page.NotDone() {
		return DatasetResource{}
	}
	return iter.page.Values()[iter.i]
}

// Creates a new instance of the DatasetListResponseIterator type.
func NewDatasetListResponseIterator(page DatasetListResponsePage) DatasetListResponseIterator {
	return DatasetListResponseIterator{page: page}
}

// IsEmpty returns true if the ListResult contains no values.
func (dlr DatasetListResponse) IsEmpty() bool {
	return dlr.Value == nil || len(*dlr.Value) == 0
}

// hasNextLink returns true if the NextLink is not empty.
func (dlr DatasetListResponse) hasNextLink() bool {
	return dlr.NextLink != nil && len(*dlr.NextLink) != 0
}

// datasetListResponsePreparer prepares a request to retrieve the next set of results.
// It returns nil if no more results exist.
func (dlr DatasetListResponse) datasetListResponsePreparer(ctx context.Context) (*http.Request, error) {
	if !dlr.hasNextLink() {
		return nil, nil
	}
	return autorest.Prepare((&http.Request{}).WithContext(ctx),
		autorest.AsJSON(),
		autorest.AsGet(),
		autorest.WithBaseURL(to.String(dlr.NextLink)))
}

// DatasetListResponsePage contains a page of DatasetResource values.
type DatasetListResponsePage struct {
	fn  func(context.Context, DatasetListResponse) (DatasetListResponse, error)
	dlr DatasetListResponse
}

// NextWithContext advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
func (page *DatasetListResponsePage) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/DatasetListResponsePage.NextWithContext")
		defer func() {
			sc := -1
			if page.Response().Response.Response != nil {
				sc = page.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	for {
		next, err := page.fn(ctx, page.dlr)
		if err != nil {
			return err
		}
		page.dlr = next
		if !next.hasNextLink() || !next.IsEmpty() {
			break
		}
	}
	return nil
}

// Next advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (page *DatasetListResponsePage) Next() error {
	return page.NextWithContext(context.Background())
}

// NotDone returns true if the page enumeration should be started or is not yet complete.
func (page DatasetListResponsePage) NotDone() bool {
	return !page.dlr.IsEmpty()
}

// Response returns the raw server response from the last page request.
func (page DatasetListResponsePage) Response() DatasetListResponse {
	return page.dlr
}

// Values returns the slice of values for the current page or nil if there are no values.
func (page DatasetListResponsePage) Values() []DatasetResource {
	if page.dlr.IsEmpty() {
		return nil
	}
	return *page.dlr.Value
}

// Creates a new instance of the DatasetListResponsePage type.
func NewDatasetListResponsePage(cur DatasetListResponse, getNextPage func(context.Context, DatasetListResponse) (DatasetListResponse, error)) DatasetListResponsePage {
	return DatasetListResponsePage{
		fn:  getNextPage,
		dlr: cur,
	}
}

// DatasetReference dataset reference type.
type DatasetReference struct {
	// Type - Dataset reference type.
	Type *string `json:"type,omitempty"`
	// ReferenceName - Reference dataset name.
	ReferenceName *string `json:"referenceName,omitempty"`
	// Parameters - Arguments for dataset.
	Parameters map[string]interface{} `json:"parameters"`
}

// MarshalJSON is the custom marshaler for DatasetReference.
func (dr DatasetReference) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if dr.Type != nil {
		objectMap["type"] = dr.Type
	}
	if dr.ReferenceName != nil {
		objectMap["referenceName"] = dr.ReferenceName
	}
	if dr.Parameters != nil {
		objectMap["parameters"] = dr.Parameters
	}
	return json.Marshal(objectMap)
}

// DatasetResource dataset resource type.
type DatasetResource struct {
	autorest.Response `json:"-"`
	// Properties - Dataset properties.
	Properties BasicDataset `json:"properties,omitempty"`
	// ID - READ-ONLY; The resource identifier.
	ID *string `json:"id,omitempty"`
	// Name - READ-ONLY; The resource name.
	Name *string `json:"name,omitempty"`
	// Type - READ-ONLY; The resource type.
	Type *string `json:"type,omitempty"`
	// Etag - READ-ONLY; Etag identifies change in the resource.
	Etag *string `json:"etag,omitempty"`
}

// MarshalJSON is the custom marshaler for DatasetResource.
func (dr DatasetResource) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	objectMap["properties"] = dr.Properties
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for DatasetResource struct.
func (dr *DatasetResource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "properties":
			if v != nil {
				properties, err := unmarshalBasicDataset(*v)
				if err != nil {
					return err
				}
				dr.Properties = properties
			}
		case "id":
			if v != nil {
				var ID string
				err = json.Unmarshal(*v, &ID)
				if err != nil {
					return err
				}
				dr.ID = &ID
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				dr.Name = &name
			}
		case "type":
			if v != nil {
				var typeVar string
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				dr.Type = &typeVar
			}
		case "etag":
			if v != nil {
				var etag string
				err = json.Unmarshal(*v, &etag)
				if err != nil {
					return err
				}
				dr.Etag = &etag
			}
		}
	}

	return nil
}

// BasicDatasetStorageFormat the format definition of a storage.
type BasicDatasetStorageFormat interface {
	AsParquetFormat() (*ParquetFormat, bool)
	AsOrcFormat() (*OrcFormat, bool)
	AsAvroFormat() (*AvroFormat, bool)
	AsJSONFormat() (*JSONFormat, bool)
	AsTextFormat() (*TextFormat, bool)
	AsDatasetStorageFormat() (*DatasetStorageFormat, bool)
}

// DatasetStorageFormat the format definition of a storage.
type DatasetStorageFormat struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Serializer - Serializer. Type: string (or Expression with resultType string).
	Serializer interface{} `json:"serializer,omitempty"`
	// Deserializer - Deserializer. Type: string (or Expression with resultType string).
	Deserializer interface{} `json:"deserializer,omitempty"`
	// Type - Possible values include: 'TypeDatasetStorageFormat', 'TypeParquetFormat', 'TypeOrcFormat', 'TypeAvroFormat', 'TypeJSONFormat', 'TypeTextFormat'
	Type TypeBasicDatasetStorageFormat `json:"type,omitempty"`
}

func unmarshalBasicDatasetStorageFormat(body []byte) (BasicDatasetStorageFormat, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeParquetFormat):
		var pf ParquetFormat
		err := json.Unmarshal(body, &pf)
		return pf, err
	case string(TypeOrcFormat):
		var of OrcFormat
		err := json.Unmarshal(body, &of)
		return of, err
	case string(TypeAvroFormat):
		var af AvroFormat
		err := json.Unmarshal(body, &af)
		return af, err
	case string(TypeJSONFormat):
		var jf JSONFormat
		err := json.Unmarshal(body, &jf)
		return jf, err
	case string(TypeTextFormat):
		var tf TextFormat
		err := json.Unmarshal(body, &tf)
		return tf, err
	default:
		var dsf DatasetStorageFormat
		err := json.Unmarshal(body, &dsf)
		return dsf, err
	}
}
func unmarshalBasicDatasetStorageFormatArray(body []byte) ([]BasicDatasetStorageFormat, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	dsfArray := make([]BasicDatasetStorageFormat, len(rawMessages))

	for index, rawMessage := range rawMessages {
		dsf, err := unmarshalBasicDatasetStorageFormat(*rawMessage)
		if err != nil {
			return nil, err
		}
		dsfArray[index] = dsf
	}
	return dsfArray, nil
}

// MarshalJSON is the custom marshaler for DatasetStorageFormat.
func (dsf DatasetStorageFormat) MarshalJSON() ([]byte, error) {
	dsf.Type = TypeDatasetStorageFormat
	objectMap := make(map[string]interface{})
	if dsf.Serializer != nil {
		objectMap["serializer"] = dsf.Serializer
	}
	if dsf.Deserializer != nil {
		objectMap["deserializer"] = dsf.Deserializer
	}
	if dsf.Type != "" {
		objectMap["type"] = dsf.Type
	}
	for k, v := range dsf.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsParquetFormat is the BasicDatasetStorageFormat implementation for DatasetStorageFormat.
func (dsf DatasetStorageFormat) AsParquetFormat() (*ParquetFormat, bool) {
	return nil, false
}

// AsOrcFormat is the BasicDatasetStorageFormat implementation for DatasetStorageFormat.
func (dsf DatasetStorageFormat) AsOrcFormat() (*OrcFormat, bool) {
	return nil, false
}

// AsAvroFormat is the BasicDatasetStorageFormat implementation for DatasetStorageFormat.
func (dsf DatasetStorageFormat) AsAvroFormat() (*AvroFormat, bool) {
	return nil, false
}

// AsJSONFormat is the BasicDatasetStorageFormat implementation for DatasetStorageFormat.
func (dsf DatasetStorageFormat) AsJSONFormat() (*JSONFormat, bool) {
	return nil, false
}

// AsTextFormat is the BasicDatasetStorageFormat implementation for DatasetStorageFormat.
func (dsf DatasetStorageFormat) AsTextFormat() (*TextFormat, bool) {
	return nil, false
}

// AsDatasetStorageFormat is the BasicDatasetStorageFormat implementation for DatasetStorageFormat.
func (dsf DatasetStorageFormat) AsDatasetStorageFormat() (*DatasetStorageFormat, bool) {
	return &dsf, true
}

// AsBasicDatasetStorageFormat is the BasicDatasetStorageFormat implementation for DatasetStorageFormat.
func (dsf DatasetStorageFormat) AsBasicDatasetStorageFormat() (BasicDatasetStorageFormat, bool) {
	return &dsf, true
}

// UnmarshalJSON is the custom unmarshaler for DatasetStorageFormat struct.
func (dsf *DatasetStorageFormat) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if dsf.AdditionalProperties == nil {
					dsf.AdditionalProperties = make(map[string]interface{})
				}
				dsf.AdditionalProperties[k] = additionalProperties
			}
		case "serializer":
			if v != nil {
				var serializer interface{}
				err = json.Unmarshal(*v, &serializer)
				if err != nil {
					return err
				}
				dsf.Serializer = serializer
			}
		case "deserializer":
			if v != nil {
				var deserializer interface{}
				err = json.Unmarshal(*v, &deserializer)
				if err != nil {
					return err
				}
				dsf.Deserializer = deserializer
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDatasetStorageFormat
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				dsf.Type = typeVar
			}
		}
	}

	return nil
}

// DatasetZipDeflateCompression the ZipDeflate compression method used on a dataset.
type DatasetZipDeflateCompression struct {
	// Level - The ZipDeflate compression level.
	Level interface{} `json:"level,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Type - Possible values include: 'TypeDatasetCompression', 'TypeZipDeflate', 'TypeDeflate', 'TypeGZip', 'TypeBZip2'
	Type TypeBasicDatasetCompression `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DatasetZipDeflateCompression.
func (dzdc DatasetZipDeflateCompression) MarshalJSON() ([]byte, error) {
	dzdc.Type = TypeZipDeflate
	objectMap := make(map[string]interface{})
	if dzdc.Level != nil {
		objectMap["level"] = dzdc.Level
	}
	if dzdc.Type != "" {
		objectMap["type"] = dzdc.Type
	}
	for k, v := range dzdc.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatasetZipDeflateCompression is the BasicDatasetCompression implementation for DatasetZipDeflateCompression.
func (dzdc DatasetZipDeflateCompression) AsDatasetZipDeflateCompression() (*DatasetZipDeflateCompression, bool) {
	return &dzdc, true
}

// AsDatasetDeflateCompression is the BasicDatasetCompression implementation for DatasetZipDeflateCompression.
func (dzdc DatasetZipDeflateCompression) AsDatasetDeflateCompression() (*DatasetDeflateCompression, bool) {
	return nil, false
}

// AsDatasetGZipCompression is the BasicDatasetCompression implementation for DatasetZipDeflateCompression.
func (dzdc DatasetZipDeflateCompression) AsDatasetGZipCompression() (*DatasetGZipCompression, bool) {
	return nil, false
}

// AsDatasetBZip2Compression is the BasicDatasetCompression implementation for DatasetZipDeflateCompression.
func (dzdc DatasetZipDeflateCompression) AsDatasetBZip2Compression() (*DatasetBZip2Compression, bool) {
	return nil, false
}

// AsDatasetCompression is the BasicDatasetCompression implementation for DatasetZipDeflateCompression.
func (dzdc DatasetZipDeflateCompression) AsDatasetCompression() (*DatasetCompression, bool) {
	return nil, false
}

// AsBasicDatasetCompression is the BasicDatasetCompression implementation for DatasetZipDeflateCompression.
func (dzdc DatasetZipDeflateCompression) AsBasicDatasetCompression() (BasicDatasetCompression, bool) {
	return &dzdc, true
}

// UnmarshalJSON is the custom unmarshaler for DatasetZipDeflateCompression struct.
func (dzdc *DatasetZipDeflateCompression) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "level":
			if v != nil {
				var level interface{}
				err = json.Unmarshal(*v, &level)
				if err != nil {
					return err
				}
				dzdc.Level = level
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if dzdc.AdditionalProperties == nil {
					dzdc.AdditionalProperties = make(map[string]interface{})
				}
				dzdc.AdditionalProperties[k] = additionalProperties
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDatasetCompression
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				dzdc.Type = typeVar
			}
		}
	}

	return nil
}

// Db2LinkedService linked service for DB2 data source.
type Db2LinkedService struct {
	// Db2LinkedServiceTypeProperties - DB2 linked service properties.
	*Db2LinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for Db2LinkedService.
func (d2ls Db2LinkedService) MarshalJSON() ([]byte, error) {
	d2ls.Type = TypeDb2
	objectMap := make(map[string]interface{})
	if d2ls.Db2LinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = d2ls.Db2LinkedServiceTypeProperties
	}
	if d2ls.ConnectVia != nil {
		objectMap["connectVia"] = d2ls.ConnectVia
	}
	if d2ls.Description != nil {
		objectMap["description"] = d2ls.Description
	}
	if d2ls.Parameters != nil {
		objectMap["parameters"] = d2ls.Parameters
	}
	if d2ls.Annotations != nil {
		objectMap["annotations"] = d2ls.Annotations
	}
	if d2ls.Type != "" {
		objectMap["type"] = d2ls.Type
	}
	for k, v := range d2ls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return &d2ls, true
}

// AsSybaseLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for Db2LinkedService.
func (d2ls Db2LinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &d2ls, true
}

// UnmarshalJSON is the custom unmarshaler for Db2LinkedService struct.
func (d2ls *Db2LinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var db2LinkedServiceTypeProperties Db2LinkedServiceTypeProperties
				err = json.Unmarshal(*v, &db2LinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				d2ls.Db2LinkedServiceTypeProperties = &db2LinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if d2ls.AdditionalProperties == nil {
					d2ls.AdditionalProperties = make(map[string]interface{})
				}
				d2ls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				d2ls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				d2ls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				d2ls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				d2ls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				d2ls.Type = typeVar
			}
		}
	}

	return nil
}

// Db2LinkedServiceTypeProperties dB2 linked service properties.
type Db2LinkedServiceTypeProperties struct {
	// Server - Server name for connection. Type: string (or Expression with resultType string).
	Server interface{} `json:"server,omitempty"`
	// Database - Database name for connection. Type: string (or Expression with resultType string).
	Database interface{} `json:"database,omitempty"`
	// AuthenticationType - AuthenticationType to be used for connection. Possible values include: 'Basic'
	AuthenticationType Db2AuthenticationType `json:"authenticationType,omitempty"`
	// Username - Username for authentication. Type: string (or Expression with resultType string).
	Username interface{} `json:"username,omitempty"`
	// Password - Password for authentication.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for Db2LinkedServiceTypeProperties struct.
func (d2lstp *Db2LinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "server":
			if v != nil {
				var server interface{}
				err = json.Unmarshal(*v, &server)
				if err != nil {
					return err
				}
				d2lstp.Server = server
			}
		case "database":
			if v != nil {
				var databaseVar interface{}
				err = json.Unmarshal(*v, &databaseVar)
				if err != nil {
					return err
				}
				d2lstp.Database = databaseVar
			}
		case "authenticationType":
			if v != nil {
				var authenticationType Db2AuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				d2lstp.AuthenticationType = authenticationType
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				d2lstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				d2lstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				d2lstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// DistcpSettings distcp settings.
type DistcpSettings struct {
	// ResourceManagerEndpoint - Specifies the Yarn ResourceManager endpoint. Type: string (or Expression with resultType string).
	ResourceManagerEndpoint interface{} `json:"resourceManagerEndpoint,omitempty"`
	// TempScriptPath - 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 after Copy job finished. Type: string (or Expression with resultType string).
	TempScriptPath interface{} `json:"tempScriptPath,omitempty"`
	// DistcpOptions - Specifies the Distcp options. Type: string (or Expression with resultType string).
	DistcpOptions interface{} `json:"distcpOptions,omitempty"`
}

// DocumentDbCollectionDataset microsoft Azure Document Database Collection dataset.
type DocumentDbCollectionDataset struct {
	// DocumentDbCollectionDatasetTypeProperties - DocumentDB Collection dataset properties.
	*DocumentDbCollectionDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) MarshalJSON() ([]byte, error) {
	ddcd.Type = TypeDocumentDbCollection
	objectMap := make(map[string]interface{})
	if ddcd.DocumentDbCollectionDatasetTypeProperties != nil {
		objectMap["typeProperties"] = ddcd.DocumentDbCollectionDatasetTypeProperties
	}
	if ddcd.Description != nil {
		objectMap["description"] = ddcd.Description
	}
	if ddcd.Structure != nil {
		objectMap["structure"] = ddcd.Structure
	}
	if ddcd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = ddcd.LinkedServiceName
	}
	if ddcd.Parameters != nil {
		objectMap["parameters"] = ddcd.Parameters
	}
	if ddcd.Annotations != nil {
		objectMap["annotations"] = ddcd.Annotations
	}
	if ddcd.Type != "" {
		objectMap["type"] = ddcd.Type
	}
	for k, v := range ddcd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return &ddcd, true
}

// AsCustomDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for DocumentDbCollectionDataset.
func (ddcd DocumentDbCollectionDataset) AsBasicDataset() (BasicDataset, bool) {
	return &ddcd, true
}

// UnmarshalJSON is the custom unmarshaler for DocumentDbCollectionDataset struct.
func (ddcd *DocumentDbCollectionDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var documentDbCollectionDatasetTypeProperties DocumentDbCollectionDatasetTypeProperties
				err = json.Unmarshal(*v, &documentDbCollectionDatasetTypeProperties)
				if err != nil {
					return err
				}
				ddcd.DocumentDbCollectionDatasetTypeProperties = &documentDbCollectionDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ddcd.AdditionalProperties == nil {
					ddcd.AdditionalProperties = make(map[string]interface{})
				}
				ddcd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ddcd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				ddcd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				ddcd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				ddcd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				ddcd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ddcd.Type = typeVar
			}
		}
	}

	return nil
}

// DocumentDbCollectionDatasetTypeProperties documentDB Collection dataset properties.
type DocumentDbCollectionDatasetTypeProperties struct {
	// CollectionName - Document Database collection name. Type: string (or Expression with resultType string).
	CollectionName interface{} `json:"collectionName,omitempty"`
}

// DocumentDbCollectionSink a copy activity Document Database Collection sink.
type DocumentDbCollectionSink struct {
	// NestingSeparator - Nested properties separator. Default is . (dot). Type: string (or Expression with resultType string).
	NestingSeparator interface{} `json:"nestingSeparator,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) MarshalJSON() ([]byte, error) {
	ddcs.Type = TypeDocumentDbCollectionSink
	objectMap := make(map[string]interface{})
	if ddcs.NestingSeparator != nil {
		objectMap["nestingSeparator"] = ddcs.NestingSeparator
	}
	if ddcs.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = ddcs.WriteBatchSize
	}
	if ddcs.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = ddcs.WriteBatchTimeout
	}
	if ddcs.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = ddcs.SinkRetryCount
	}
	if ddcs.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = ddcs.SinkRetryWait
	}
	if ddcs.Type != "" {
		objectMap["type"] = ddcs.Type
	}
	for k, v := range ddcs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return &ddcs, true
}

// AsFileSystemSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for DocumentDbCollectionSink.
func (ddcs DocumentDbCollectionSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &ddcs, true
}

// UnmarshalJSON is the custom unmarshaler for DocumentDbCollectionSink struct.
func (ddcs *DocumentDbCollectionSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "nestingSeparator":
			if v != nil {
				var nestingSeparator interface{}
				err = json.Unmarshal(*v, &nestingSeparator)
				if err != nil {
					return err
				}
				ddcs.NestingSeparator = nestingSeparator
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ddcs.AdditionalProperties == nil {
					ddcs.AdditionalProperties = make(map[string]interface{})
				}
				ddcs.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				ddcs.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				ddcs.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				ddcs.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				ddcs.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ddcs.Type = typeVar
			}
		}
	}

	return nil
}

// DocumentDbCollectionSource a copy activity Document Database Collection source.
type DocumentDbCollectionSource struct {
	// Query - Documents query. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// NestingSeparator - Nested properties separator. Type: string (or Expression with resultType string).
	NestingSeparator interface{} `json:"nestingSeparator,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) MarshalJSON() ([]byte, error) {
	ddcs.Type = TypeDocumentDbCollectionSource
	objectMap := make(map[string]interface{})
	if ddcs.Query != nil {
		objectMap["query"] = ddcs.Query
	}
	if ddcs.NestingSeparator != nil {
		objectMap["nestingSeparator"] = ddcs.NestingSeparator
	}
	if ddcs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ddcs.SourceRetryCount
	}
	if ddcs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ddcs.SourceRetryWait
	}
	if ddcs.Type != "" {
		objectMap["type"] = ddcs.Type
	}
	for k, v := range ddcs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return &ddcs, true
}

// AsBlobSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for DocumentDbCollectionSource.
func (ddcs DocumentDbCollectionSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ddcs, true
}

// UnmarshalJSON is the custom unmarshaler for DocumentDbCollectionSource struct.
func (ddcs *DocumentDbCollectionSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ddcs.Query = query
			}
		case "nestingSeparator":
			if v != nil {
				var nestingSeparator interface{}
				err = json.Unmarshal(*v, &nestingSeparator)
				if err != nil {
					return err
				}
				ddcs.NestingSeparator = nestingSeparator
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ddcs.AdditionalProperties == nil {
					ddcs.AdditionalProperties = make(map[string]interface{})
				}
				ddcs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ddcs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ddcs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ddcs.Type = typeVar
			}
		}
	}

	return nil
}

// DrillLinkedService drill server linked service.
type DrillLinkedService struct {
	// DrillLinkedServiceTypeProperties - Drill server linked service properties.
	*DrillLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DrillLinkedService.
func (dls DrillLinkedService) MarshalJSON() ([]byte, error) {
	dls.Type = TypeDrill
	objectMap := make(map[string]interface{})
	if dls.DrillLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = dls.DrillLinkedServiceTypeProperties
	}
	if dls.ConnectVia != nil {
		objectMap["connectVia"] = dls.ConnectVia
	}
	if dls.Description != nil {
		objectMap["description"] = dls.Description
	}
	if dls.Parameters != nil {
		objectMap["parameters"] = dls.Parameters
	}
	if dls.Annotations != nil {
		objectMap["annotations"] = dls.Annotations
	}
	if dls.Type != "" {
		objectMap["type"] = dls.Type
	}
	for k, v := range dls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return &dls, true
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for DrillLinkedService.
func (dls DrillLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &dls, true
}

// UnmarshalJSON is the custom unmarshaler for DrillLinkedService struct.
func (dls *DrillLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var drillLinkedServiceTypeProperties DrillLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &drillLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				dls.DrillLinkedServiceTypeProperties = &drillLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if dls.AdditionalProperties == nil {
					dls.AdditionalProperties = make(map[string]interface{})
				}
				dls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				dls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				dls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				dls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				dls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				dls.Type = typeVar
			}
		}
	}

	return nil
}

// DrillLinkedServiceTypeProperties drill server linked service properties.
type DrillLinkedServiceTypeProperties struct {
	// ConnectionString - An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// DrillSource a copy activity Drill server source.
type DrillSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DrillSource.
func (ds DrillSource) MarshalJSON() ([]byte, error) {
	ds.Type = TypeDrillSource
	objectMap := make(map[string]interface{})
	if ds.Query != nil {
		objectMap["query"] = ds.Query
	}
	if ds.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ds.SourceRetryCount
	}
	if ds.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ds.SourceRetryWait
	}
	if ds.Type != "" {
		objectMap["type"] = ds.Type
	}
	for k, v := range ds.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsDrillSource() (*DrillSource, bool) {
	return &ds, true
}

// AsCouchbaseSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for DrillSource.
func (ds DrillSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ds, true
}

// UnmarshalJSON is the custom unmarshaler for DrillSource struct.
func (ds *DrillSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ds.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ds.AdditionalProperties == nil {
					ds.AdditionalProperties = make(map[string]interface{})
				}
				ds.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ds.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ds.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ds.Type = typeVar
			}
		}
	}

	return nil
}

// DrillTableDataset drill server dataset.
type DrillTableDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DrillTableDataset.
func (dtd DrillTableDataset) MarshalJSON() ([]byte, error) {
	dtd.Type = TypeDrillTable
	objectMap := make(map[string]interface{})
	if dtd.Description != nil {
		objectMap["description"] = dtd.Description
	}
	if dtd.Structure != nil {
		objectMap["structure"] = dtd.Structure
	}
	if dtd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = dtd.LinkedServiceName
	}
	if dtd.Parameters != nil {
		objectMap["parameters"] = dtd.Parameters
	}
	if dtd.Annotations != nil {
		objectMap["annotations"] = dtd.Annotations
	}
	if dtd.Type != "" {
		objectMap["type"] = dtd.Type
	}
	for k, v := range dtd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return &dtd, true
}

// AsCouchbaseTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for DrillTableDataset.
func (dtd DrillTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &dtd, true
}

// UnmarshalJSON is the custom unmarshaler for DrillTableDataset struct.
func (dtd *DrillTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if dtd.AdditionalProperties == nil {
					dtd.AdditionalProperties = make(map[string]interface{})
				}
				dtd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				dtd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				dtd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				dtd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				dtd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				dtd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				dtd.Type = typeVar
			}
		}
	}

	return nil
}

// DynamicsEntityDataset the Dynamics entity dataset.
type DynamicsEntityDataset struct {
	// DynamicsEntityDatasetTypeProperties - Dynamics entity dataset properties.
	*DynamicsEntityDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) MarshalJSON() ([]byte, error) {
	ded.Type = TypeDynamicsEntity
	objectMap := make(map[string]interface{})
	if ded.DynamicsEntityDatasetTypeProperties != nil {
		objectMap["typeProperties"] = ded.DynamicsEntityDatasetTypeProperties
	}
	if ded.Description != nil {
		objectMap["description"] = ded.Description
	}
	if ded.Structure != nil {
		objectMap["structure"] = ded.Structure
	}
	if ded.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = ded.LinkedServiceName
	}
	if ded.Parameters != nil {
		objectMap["parameters"] = ded.Parameters
	}
	if ded.Annotations != nil {
		objectMap["annotations"] = ded.Annotations
	}
	if ded.Type != "" {
		objectMap["type"] = ded.Type
	}
	for k, v := range ded.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return &ded, true
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for DynamicsEntityDataset.
func (ded DynamicsEntityDataset) AsBasicDataset() (BasicDataset, bool) {
	return &ded, true
}

// UnmarshalJSON is the custom unmarshaler for DynamicsEntityDataset struct.
func (ded *DynamicsEntityDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var dynamicsEntityDatasetTypeProperties DynamicsEntityDatasetTypeProperties
				err = json.Unmarshal(*v, &dynamicsEntityDatasetTypeProperties)
				if err != nil {
					return err
				}
				ded.DynamicsEntityDatasetTypeProperties = &dynamicsEntityDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ded.AdditionalProperties == nil {
					ded.AdditionalProperties = make(map[string]interface{})
				}
				ded.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ded.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				ded.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				ded.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				ded.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				ded.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ded.Type = typeVar
			}
		}
	}

	return nil
}

// DynamicsEntityDatasetTypeProperties dynamics entity dataset properties.
type DynamicsEntityDatasetTypeProperties struct {
	// EntityName - The logical name of the entity. Type: string (or Expression with resultType string).
	EntityName interface{} `json:"entityName,omitempty"`
}

// DynamicsLinkedService dynamics linked service.
type DynamicsLinkedService struct {
	// DynamicsLinkedServiceTypeProperties - Dynamics linked service properties.
	*DynamicsLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DynamicsLinkedService.
func (dls DynamicsLinkedService) MarshalJSON() ([]byte, error) {
	dls.Type = TypeDynamics
	objectMap := make(map[string]interface{})
	if dls.DynamicsLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = dls.DynamicsLinkedServiceTypeProperties
	}
	if dls.ConnectVia != nil {
		objectMap["connectVia"] = dls.ConnectVia
	}
	if dls.Description != nil {
		objectMap["description"] = dls.Description
	}
	if dls.Parameters != nil {
		objectMap["parameters"] = dls.Parameters
	}
	if dls.Annotations != nil {
		objectMap["annotations"] = dls.Annotations
	}
	if dls.Type != "" {
		objectMap["type"] = dls.Type
	}
	for k, v := range dls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return &dls, true
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for DynamicsLinkedService.
func (dls DynamicsLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &dls, true
}

// UnmarshalJSON is the custom unmarshaler for DynamicsLinkedService struct.
func (dls *DynamicsLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var dynamicsLinkedServiceTypeProperties DynamicsLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &dynamicsLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				dls.DynamicsLinkedServiceTypeProperties = &dynamicsLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if dls.AdditionalProperties == nil {
					dls.AdditionalProperties = make(map[string]interface{})
				}
				dls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				dls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				dls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				dls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				dls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				dls.Type = typeVar
			}
		}
	}

	return nil
}

// DynamicsLinkedServiceTypeProperties dynamics linked service properties.
type DynamicsLinkedServiceTypeProperties struct {
	// DeploymentType - The deployment type of the Dynamics instance. 'Online' for Dynamics Online and 'OnPremisesWithIfd' for Dynamics on-premises with Ifd. Type: string (or Expression with resultType string).
	DeploymentType interface{} `json:"deploymentType,omitempty"`
	// HostName - 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 string).
	HostName interface{} `json:"hostName,omitempty"`
	// Port - 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 with resultType integer), minimum: 0.
	Port interface{} `json:"port,omitempty"`
	// ServiceURI - 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 string).
	ServiceURI interface{} `json:"serviceUri,omitempty"`
	// OrganizationName - 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 associated with the user. Type: string (or Expression with resultType string).
	OrganizationName interface{} `json:"organizationName,omitempty"`
	// AuthenticationType - The authentication type to connect to Dynamics server. 'Office365' for online scenario, 'Ifd' for on-premises with Ifd scenario. Type: string (or Expression with resultType string).
	AuthenticationType interface{} `json:"authenticationType,omitempty"`
	// Username - User name to access the Dynamics instance. Type: string (or Expression with resultType string).
	Username interface{} `json:"username,omitempty"`
	// Password - Password to access the Dynamics instance.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for DynamicsLinkedServiceTypeProperties struct.
func (dlstp *DynamicsLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "deploymentType":
			if v != nil {
				var deploymentType interface{}
				err = json.Unmarshal(*v, &deploymentType)
				if err != nil {
					return err
				}
				dlstp.DeploymentType = deploymentType
			}
		case "hostName":
			if v != nil {
				var hostName interface{}
				err = json.Unmarshal(*v, &hostName)
				if err != nil {
					return err
				}
				dlstp.HostName = hostName
			}
		case "port":
			if v != nil {
				var port interface{}
				err = json.Unmarshal(*v, &port)
				if err != nil {
					return err
				}
				dlstp.Port = port
			}
		case "serviceUri":
			if v != nil {
				var serviceURI interface{}
				err = json.Unmarshal(*v, &serviceURI)
				if err != nil {
					return err
				}
				dlstp.ServiceURI = serviceURI
			}
		case "organizationName":
			if v != nil {
				var organizationName interface{}
				err = json.Unmarshal(*v, &organizationName)
				if err != nil {
					return err
				}
				dlstp.OrganizationName = organizationName
			}
		case "authenticationType":
			if v != nil {
				var authenticationType interface{}
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				dlstp.AuthenticationType = authenticationType
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				dlstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				dlstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				dlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// DynamicsSink a copy activity Dynamics sink.
type DynamicsSink struct {
	// WriteBehavior - The write behavior for the operation.
	WriteBehavior interface{} `json:"writeBehavior,omitempty"`
	// IgnoreNullValues - The flag indicating whether ignore null values from input dataset (except key fields) during write operation. Default is false. Type: boolean (or Expression with resultType boolean).
	IgnoreNullValues interface{} `json:"ignoreNullValues,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DynamicsSink.
func (ds DynamicsSink) MarshalJSON() ([]byte, error) {
	ds.Type = TypeDynamicsSink
	objectMap := make(map[string]interface{})
	if ds.WriteBehavior != nil {
		objectMap["writeBehavior"] = ds.WriteBehavior
	}
	if ds.IgnoreNullValues != nil {
		objectMap["ignoreNullValues"] = ds.IgnoreNullValues
	}
	if ds.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = ds.WriteBatchSize
	}
	if ds.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = ds.WriteBatchTimeout
	}
	if ds.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = ds.SinkRetryCount
	}
	if ds.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = ds.SinkRetryWait
	}
	if ds.Type != "" {
		objectMap["type"] = ds.Type
	}
	for k, v := range ds.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return &ds, true
}

// AsOdbcSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for DynamicsSink.
func (ds DynamicsSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &ds, true
}

// UnmarshalJSON is the custom unmarshaler for DynamicsSink struct.
func (ds *DynamicsSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "writeBehavior":
			if v != nil {
				var writeBehavior interface{}
				err = json.Unmarshal(*v, &writeBehavior)
				if err != nil {
					return err
				}
				ds.WriteBehavior = writeBehavior
			}
		case "ignoreNullValues":
			if v != nil {
				var ignoreNullValues interface{}
				err = json.Unmarshal(*v, &ignoreNullValues)
				if err != nil {
					return err
				}
				ds.IgnoreNullValues = ignoreNullValues
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ds.AdditionalProperties == nil {
					ds.AdditionalProperties = make(map[string]interface{})
				}
				ds.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				ds.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				ds.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				ds.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				ds.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ds.Type = typeVar
			}
		}
	}

	return nil
}

// DynamicsSource a copy activity Dynamics source.
type DynamicsSource struct {
	// Query - FetchXML is a proprietary query language that is used in Microsoft Dynamics (online & on-premises). Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for DynamicsSource.
func (ds DynamicsSource) MarshalJSON() ([]byte, error) {
	ds.Type = TypeDynamicsSource
	objectMap := make(map[string]interface{})
	if ds.Query != nil {
		objectMap["query"] = ds.Query
	}
	if ds.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ds.SourceRetryCount
	}
	if ds.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ds.SourceRetryWait
	}
	if ds.Type != "" {
		objectMap["type"] = ds.Type
	}
	for k, v := range ds.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return &ds, true
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for DynamicsSource.
func (ds DynamicsSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ds, true
}

// UnmarshalJSON is the custom unmarshaler for DynamicsSource struct.
func (ds *DynamicsSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ds.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ds.AdditionalProperties == nil {
					ds.AdditionalProperties = make(map[string]interface{})
				}
				ds.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ds.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ds.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ds.Type = typeVar
			}
		}
	}

	return nil
}

// EloquaLinkedService eloqua server linked service.
type EloquaLinkedService struct {
	// EloquaLinkedServiceTypeProperties - Eloqua server linked service properties.
	*EloquaLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for EloquaLinkedService.
func (els EloquaLinkedService) MarshalJSON() ([]byte, error) {
	els.Type = TypeEloqua
	objectMap := make(map[string]interface{})
	if els.EloquaLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = els.EloquaLinkedServiceTypeProperties
	}
	if els.ConnectVia != nil {
		objectMap["connectVia"] = els.ConnectVia
	}
	if els.Description != nil {
		objectMap["description"] = els.Description
	}
	if els.Parameters != nil {
		objectMap["parameters"] = els.Parameters
	}
	if els.Annotations != nil {
		objectMap["annotations"] = els.Annotations
	}
	if els.Type != "" {
		objectMap["type"] = els.Type
	}
	for k, v := range els.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return &els, true
}

// AsDrillLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for EloquaLinkedService.
func (els EloquaLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &els, true
}

// UnmarshalJSON is the custom unmarshaler for EloquaLinkedService struct.
func (els *EloquaLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var eloquaLinkedServiceTypeProperties EloquaLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &eloquaLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				els.EloquaLinkedServiceTypeProperties = &eloquaLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if els.AdditionalProperties == nil {
					els.AdditionalProperties = make(map[string]interface{})
				}
				els.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				els.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				els.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				els.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				els.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				els.Type = typeVar
			}
		}
	}

	return nil
}

// EloquaLinkedServiceTypeProperties eloqua server linked service properties.
type EloquaLinkedServiceTypeProperties struct {
	// Endpoint - The endpoint of the Eloqua server. (i.e. eloqua.example.com)
	Endpoint interface{} `json:"endpoint,omitempty"`
	// Username - The site name and user name of your Eloqua account in the form: sitename/username. (i.e. Eloqua/Alice)
	Username interface{} `json:"username,omitempty"`
	// Password - The password corresponding to the user name.
	Password BasicSecretBase `json:"password,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true.
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for EloquaLinkedServiceTypeProperties struct.
func (elstp *EloquaLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "endpoint":
			if v != nil {
				var endpoint interface{}
				err = json.Unmarshal(*v, &endpoint)
				if err != nil {
					return err
				}
				elstp.Endpoint = endpoint
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				elstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				elstp.Password = password
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				elstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				elstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				elstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				elstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// EloquaObjectDataset eloqua server dataset.
type EloquaObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for EloquaObjectDataset.
func (eod EloquaObjectDataset) MarshalJSON() ([]byte, error) {
	eod.Type = TypeEloquaObject
	objectMap := make(map[string]interface{})
	if eod.Description != nil {
		objectMap["description"] = eod.Description
	}
	if eod.Structure != nil {
		objectMap["structure"] = eod.Structure
	}
	if eod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = eod.LinkedServiceName
	}
	if eod.Parameters != nil {
		objectMap["parameters"] = eod.Parameters
	}
	if eod.Annotations != nil {
		objectMap["annotations"] = eod.Annotations
	}
	if eod.Type != "" {
		objectMap["type"] = eod.Type
	}
	for k, v := range eod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return &eod, true
}

// AsDrillTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for EloquaObjectDataset.
func (eod EloquaObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &eod, true
}

// UnmarshalJSON is the custom unmarshaler for EloquaObjectDataset struct.
func (eod *EloquaObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if eod.AdditionalProperties == nil {
					eod.AdditionalProperties = make(map[string]interface{})
				}
				eod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				eod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				eod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				eod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				eod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				eod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				eod.Type = typeVar
			}
		}
	}

	return nil
}

// EloquaSource a copy activity Eloqua server source.
type EloquaSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for EloquaSource.
func (es EloquaSource) MarshalJSON() ([]byte, error) {
	es.Type = TypeEloquaSource
	objectMap := make(map[string]interface{})
	if es.Query != nil {
		objectMap["query"] = es.Query
	}
	if es.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = es.SourceRetryCount
	}
	if es.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = es.SourceRetryWait
	}
	if es.Type != "" {
		objectMap["type"] = es.Type
	}
	for k, v := range es.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsEloquaSource() (*EloquaSource, bool) {
	return &es, true
}

// AsDrillSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for EloquaSource.
func (es EloquaSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &es, true
}

// UnmarshalJSON is the custom unmarshaler for EloquaSource struct.
func (es *EloquaSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				es.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if es.AdditionalProperties == nil {
					es.AdditionalProperties = make(map[string]interface{})
				}
				es.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				es.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				es.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				es.Type = typeVar
			}
		}
	}

	return nil
}

// EntityReference the entity reference.
type EntityReference struct {
	// Type - The type of this referenced entity. Possible values include: 'IntegrationRuntimeEntityReferenceTypeIntegrationRuntimeReference', 'IntegrationRuntimeEntityReferenceTypeLinkedServiceReference'
	Type IntegrationRuntimeEntityReferenceType `json:"type,omitempty"`
	// ReferenceName - The name of this referenced entity.
	ReferenceName *string `json:"referenceName,omitempty"`
}

// ErrorResponse the object that defines the structure of an Azure Data Factory response.
type ErrorResponse struct {
	// Code - Error code.
	Code *string `json:"code,omitempty"`
	// Message - Error message.
	Message *string `json:"message,omitempty"`
	// Target - Property name/path in request associated with error.
	Target *string `json:"target,omitempty"`
	// Details - Array with additional error details.
	Details *[]ErrorResponse `json:"details,omitempty"`
}

// ExecutePipelineActivity execute pipeline activity.
type ExecutePipelineActivity struct {
	// ExecutePipelineActivityTypeProperties - Execute pipeline activity properties.
	*ExecutePipelineActivityTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) MarshalJSON() ([]byte, error) {
	epa.Type = TypeExecutePipeline
	objectMap := make(map[string]interface{})
	if epa.ExecutePipelineActivityTypeProperties != nil {
		objectMap["typeProperties"] = epa.ExecutePipelineActivityTypeProperties
	}
	if epa.Name != nil {
		objectMap["name"] = epa.Name
	}
	if epa.Description != nil {
		objectMap["description"] = epa.Description
	}
	if epa.DependsOn != nil {
		objectMap["dependsOn"] = epa.DependsOn
	}
	if epa.Type != "" {
		objectMap["type"] = epa.Type
	}
	for k, v := range epa.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return nil, false
}

// AsFilterActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return &epa, true
}

// AsControlActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return &epa, true
}

// AsActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for ExecutePipelineActivity.
func (epa ExecutePipelineActivity) AsBasicActivity() (BasicActivity, bool) {
	return &epa, true
}

// UnmarshalJSON is the custom unmarshaler for ExecutePipelineActivity struct.
func (epa *ExecutePipelineActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var executePipelineActivityTypeProperties ExecutePipelineActivityTypeProperties
				err = json.Unmarshal(*v, &executePipelineActivityTypeProperties)
				if err != nil {
					return err
				}
				epa.ExecutePipelineActivityTypeProperties = &executePipelineActivityTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if epa.AdditionalProperties == nil {
					epa.AdditionalProperties = make(map[string]interface{})
				}
				epa.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				epa.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				epa.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				epa.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				epa.Type = typeVar
			}
		}
	}

	return nil
}

// ExecutePipelineActivityTypeProperties execute pipeline activity properties.
type ExecutePipelineActivityTypeProperties struct {
	// Pipeline - Pipeline reference.
	Pipeline *PipelineReference `json:"pipeline,omitempty"`
	// Parameters - Pipeline parameters.
	Parameters map[string]interface{} `json:"parameters"`
	// WaitOnCompletion - Defines whether activity execution will wait for the dependent pipeline execution to finish. Default is false.
	WaitOnCompletion *bool `json:"waitOnCompletion,omitempty"`
}

// MarshalJSON is the custom marshaler for ExecutePipelineActivityTypeProperties.
func (epatp ExecutePipelineActivityTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if epatp.Pipeline != nil {
		objectMap["pipeline"] = epatp.Pipeline
	}
	if epatp.Parameters != nil {
		objectMap["parameters"] = epatp.Parameters
	}
	if epatp.WaitOnCompletion != nil {
		objectMap["waitOnCompletion"] = epatp.WaitOnCompletion
	}
	return json.Marshal(objectMap)
}

// ExecuteSSISPackageActivity execute SSIS package activity.
type ExecuteSSISPackageActivity struct {
	// ExecuteSSISPackageActivityTypeProperties - Execute SSIS package activity properties.
	*ExecuteSSISPackageActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) MarshalJSON() ([]byte, error) {
	espa.Type = TypeExecuteSSISPackage
	objectMap := make(map[string]interface{})
	if espa.ExecuteSSISPackageActivityTypeProperties != nil {
		objectMap["typeProperties"] = espa.ExecuteSSISPackageActivityTypeProperties
	}
	if espa.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = espa.LinkedServiceName
	}
	if espa.Policy != nil {
		objectMap["policy"] = espa.Policy
	}
	if espa.Name != nil {
		objectMap["name"] = espa.Name
	}
	if espa.Description != nil {
		objectMap["description"] = espa.Description
	}
	if espa.DependsOn != nil {
		objectMap["dependsOn"] = espa.DependsOn
	}
	if espa.Type != "" {
		objectMap["type"] = espa.Type
	}
	for k, v := range espa.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return &espa, true
}

// AsHDInsightSparkActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &espa, true
}

// AsFilterActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for ExecuteSSISPackageActivity.
func (espa ExecuteSSISPackageActivity) AsBasicActivity() (BasicActivity, bool) {
	return &espa, true
}

// UnmarshalJSON is the custom unmarshaler for ExecuteSSISPackageActivity struct.
func (espa *ExecuteSSISPackageActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var executeSSISPackageActivityTypeProperties ExecuteSSISPackageActivityTypeProperties
				err = json.Unmarshal(*v, &executeSSISPackageActivityTypeProperties)
				if err != nil {
					return err
				}
				espa.ExecuteSSISPackageActivityTypeProperties = &executeSSISPackageActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				espa.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				espa.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if espa.AdditionalProperties == nil {
					espa.AdditionalProperties = make(map[string]interface{})
				}
				espa.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				espa.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				espa.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				espa.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				espa.Type = typeVar
			}
		}
	}

	return nil
}

// ExecuteSSISPackageActivityTypeProperties execute SSIS package activity properties.
type ExecuteSSISPackageActivityTypeProperties struct {
	// PackageLocation - SSIS package location.
	PackageLocation *SSISPackageLocation `json:"packageLocation,omitempty"`
	// Runtime - Specifies the runtime to execute SSIS package. The value should be "x86" or "x64". Type: string (or Expression with resultType string).
	Runtime interface{} `json:"runtime,omitempty"`
	// LoggingLevel - The logging level of SSIS package execution. Type: string (or Expression with resultType string).
	LoggingLevel interface{} `json:"loggingLevel,omitempty"`
	// EnvironmentPath - The environment path to execute the SSIS package. Type: string (or Expression with resultType string).
	EnvironmentPath interface{} `json:"environmentPath,omitempty"`
	// ExecutionCredential - The package execution credential.
	ExecutionCredential *SSISExecutionCredential `json:"executionCredential,omitempty"`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// ProjectParameters - The project level parameters to execute the SSIS package.
	ProjectParameters map[string]*SSISExecutionParameter `json:"projectParameters"`
	// PackageParameters - The package level parameters to execute the SSIS package.
	PackageParameters map[string]*SSISExecutionParameter `json:"packageParameters"`
	// ProjectConnectionManagers - The project level connection managers to execute the SSIS package.
	ProjectConnectionManagers map[string]map[string]*SSISExecutionParameter `json:"projectConnectionManagers"`
	// PackageConnectionManagers - The package level connection managers to execute the SSIS package.
	PackageConnectionManagers map[string]map[string]*SSISExecutionParameter `json:"packageConnectionManagers"`
	// PropertyOverrides - The property overrides to execute the SSIS package.
	PropertyOverrides map[string]*SSISPropertyOverride `json:"propertyOverrides"`
	// LogLocation - SSIS package execution log location.
	LogLocation *SSISLogLocation `json:"logLocation,omitempty"`
}

// MarshalJSON is the custom marshaler for ExecuteSSISPackageActivityTypeProperties.
func (espatp ExecuteSSISPackageActivityTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if espatp.PackageLocation != nil {
		objectMap["packageLocation"] = espatp.PackageLocation
	}
	if espatp.Runtime != nil {
		objectMap["runtime"] = espatp.Runtime
	}
	if espatp.LoggingLevel != nil {
		objectMap["loggingLevel"] = espatp.LoggingLevel
	}
	if espatp.EnvironmentPath != nil {
		objectMap["environmentPath"] = espatp.EnvironmentPath
	}
	if espatp.ExecutionCredential != nil {
		objectMap["executionCredential"] = espatp.ExecutionCredential
	}
	if espatp.ConnectVia != nil {
		objectMap["connectVia"] = espatp.ConnectVia
	}
	if espatp.ProjectParameters != nil {
		objectMap["projectParameters"] = espatp.ProjectParameters
	}
	if espatp.PackageParameters != nil {
		objectMap["packageParameters"] = espatp.PackageParameters
	}
	if espatp.ProjectConnectionManagers != nil {
		objectMap["projectConnectionManagers"] = espatp.ProjectConnectionManagers
	}
	if espatp.PackageConnectionManagers != nil {
		objectMap["packageConnectionManagers"] = espatp.PackageConnectionManagers
	}
	if espatp.PropertyOverrides != nil {
		objectMap["propertyOverrides"] = espatp.PropertyOverrides
	}
	if espatp.LogLocation != nil {
		objectMap["logLocation"] = espatp.LogLocation
	}
	return json.Marshal(objectMap)
}

// BasicExecutionActivity base class for all execution activities.
type BasicExecutionActivity interface {
	AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool)
	AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool)
	AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool)
	AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool)
	AsGetMetadataActivity() (*GetMetadataActivity, bool)
	AsWebActivity() (*WebActivity, bool)
	AsLookupActivity() (*LookupActivity, bool)
	AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool)
	AsCustomActivity() (*CustomActivity, bool)
	AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool)
	AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool)
	AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool)
	AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool)
	AsHDInsightPigActivity() (*HDInsightPigActivity, bool)
	AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool)
	AsCopyActivity() (*CopyActivity, bool)
	AsExecutionActivity() (*ExecutionActivity, bool)
}

// ExecutionActivity base class for all execution activities.
type ExecutionActivity struct {
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

func unmarshalBasicExecutionActivity(body []byte) (BasicExecutionActivity, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeDatabricksNotebook):
		var dna DatabricksNotebookActivity
		err := json.Unmarshal(body, &dna)
		return dna, err
	case string(TypeDataLakeAnalyticsUSQL):
		var dlaua DataLakeAnalyticsUSQLActivity
		err := json.Unmarshal(body, &dlaua)
		return dlaua, err
	case string(TypeAzureMLUpdateResource):
		var amura AzureMLUpdateResourceActivity
		err := json.Unmarshal(body, &amura)
		return amura, err
	case string(TypeAzureMLBatchExecution):
		var ambea AzureMLBatchExecutionActivity
		err := json.Unmarshal(body, &ambea)
		return ambea, err
	case string(TypeGetMetadata):
		var gma GetMetadataActivity
		err := json.Unmarshal(body, &gma)
		return gma, err
	case string(TypeWebActivity):
		var wa WebActivity
		err := json.Unmarshal(body, &wa)
		return wa, err
	case string(TypeLookup):
		var la LookupActivity
		err := json.Unmarshal(body, &la)
		return la, err
	case string(TypeSQLServerStoredProcedure):
		var ssspa SQLServerStoredProcedureActivity
		err := json.Unmarshal(body, &ssspa)
		return ssspa, err
	case string(TypeCustom):
		var ca CustomActivity
		err := json.Unmarshal(body, &ca)
		return ca, err
	case string(TypeExecuteSSISPackage):
		var espa ExecuteSSISPackageActivity
		err := json.Unmarshal(body, &espa)
		return espa, err
	case string(TypeHDInsightSpark):
		var hisa HDInsightSparkActivity
		err := json.Unmarshal(body, &hisa)
		return hisa, err
	case string(TypeHDInsightStreaming):
		var hisa HDInsightStreamingActivity
		err := json.Unmarshal(body, &hisa)
		return hisa, err
	case string(TypeHDInsightMapReduce):
		var himra HDInsightMapReduceActivity
		err := json.Unmarshal(body, &himra)
		return himra, err
	case string(TypeHDInsightPig):
		var hipa HDInsightPigActivity
		err := json.Unmarshal(body, &hipa)
		return hipa, err
	case string(TypeHDInsightHive):
		var hiha HDInsightHiveActivity
		err := json.Unmarshal(body, &hiha)
		return hiha, err
	case string(TypeCopy):
		var ca CopyActivity
		err := json.Unmarshal(body, &ca)
		return ca, err
	default:
		var ea ExecutionActivity
		err := json.Unmarshal(body, &ea)
		return ea, err
	}
}
func unmarshalBasicExecutionActivityArray(body []byte) ([]BasicExecutionActivity, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	eaArray := make([]BasicExecutionActivity, len(rawMessages))

	for index, rawMessage := range rawMessages {
		ea, err := unmarshalBasicExecutionActivity(*rawMessage)
		if err != nil {
			return nil, err
		}
		eaArray[index] = ea
	}
	return eaArray, nil
}

// MarshalJSON is the custom marshaler for ExecutionActivity.
func (ea ExecutionActivity) MarshalJSON() ([]byte, error) {
	ea.Type = TypeExecution
	objectMap := make(map[string]interface{})
	if ea.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = ea.LinkedServiceName
	}
	if ea.Policy != nil {
		objectMap["policy"] = ea.Policy
	}
	if ea.Name != nil {
		objectMap["name"] = ea.Name
	}
	if ea.Description != nil {
		objectMap["description"] = ea.Description
	}
	if ea.DependsOn != nil {
		objectMap["dependsOn"] = ea.DependsOn
	}
	if ea.Type != "" {
		objectMap["type"] = ea.Type
	}
	for k, v := range ea.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return &ea, true
}

// AsBasicExecutionActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &ea, true
}

// AsFilterActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for ExecutionActivity.
func (ea ExecutionActivity) AsBasicActivity() (BasicActivity, bool) {
	return &ea, true
}

// UnmarshalJSON is the custom unmarshaler for ExecutionActivity struct.
func (ea *ExecutionActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				ea.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				ea.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ea.AdditionalProperties == nil {
					ea.AdditionalProperties = make(map[string]interface{})
				}
				ea.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				ea.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ea.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				ea.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ea.Type = typeVar
			}
		}
	}

	return nil
}

// Expression azure Data Factory expression definition.
type Expression struct {
	// Type - Expression type.
	Type *string `json:"type,omitempty"`
	// Value - Expression value.
	Value *string `json:"value,omitempty"`
}

// Factory factory resource type.
type Factory struct {
	autorest.Response `json:"-"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Identity - Managed service identity of the factory.
	Identity *FactoryIdentity `json:"identity,omitempty"`
	// FactoryProperties - Properties of the factory.
	*FactoryProperties `json:"properties,omitempty"`
	// ID - READ-ONLY; The resource identifier.
	ID *string `json:"id,omitempty"`
	// Name - READ-ONLY; The resource name.
	Name *string `json:"name,omitempty"`
	// Type - READ-ONLY; The resource type.
	Type *string `json:"type,omitempty"`
	// Location - The resource location.
	Location *string `json:"location,omitempty"`
	// Tags - The resource tags.
	Tags map[string]*string `json:"tags"`
}

// MarshalJSON is the custom marshaler for Factory.
func (f Factory) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if f.Identity != nil {
		objectMap["identity"] = f.Identity
	}
	if f.FactoryProperties != nil {
		objectMap["properties"] = f.FactoryProperties
	}
	if f.Location != nil {
		objectMap["location"] = f.Location
	}
	if f.Tags != nil {
		objectMap["tags"] = f.Tags
	}
	for k, v := range f.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for Factory struct.
func (f *Factory) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if f.AdditionalProperties == nil {
					f.AdditionalProperties = make(map[string]interface{})
				}
				f.AdditionalProperties[k] = additionalProperties
			}
		case "identity":
			if v != nil {
				var identity FactoryIdentity
				err = json.Unmarshal(*v, &identity)
				if err != nil {
					return err
				}
				f.Identity = &identity
			}
		case "properties":
			if v != nil {
				var factoryProperties FactoryProperties
				err = json.Unmarshal(*v, &factoryProperties)
				if err != nil {
					return err
				}
				f.FactoryProperties = &factoryProperties
			}
		case "id":
			if v != nil {
				var ID string
				err = json.Unmarshal(*v, &ID)
				if err != nil {
					return err
				}
				f.ID = &ID
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				f.Name = &name
			}
		case "type":
			if v != nil {
				var typeVar string
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				f.Type = &typeVar
			}
		case "location":
			if v != nil {
				var location string
				err = json.Unmarshal(*v, &location)
				if err != nil {
					return err
				}
				f.Location = &location
			}
		case "tags":
			if v != nil {
				var tags map[string]*string
				err = json.Unmarshal(*v, &tags)
				if err != nil {
					return err
				}
				f.Tags = tags
			}
		}
	}

	return nil
}

// FactoryIdentity identity properties of the factory resource.
type FactoryIdentity struct {
	// Type - The identity type. Currently the only supported type is 'SystemAssigned'.
	Type *string `json:"type,omitempty"`
	// PrincipalID - READ-ONLY; The principal id of the identity.
	PrincipalID *uuid.UUID `json:"principalId,omitempty"`
	// TenantID - READ-ONLY; The client tenant id of the identity.
	TenantID *uuid.UUID `json:"tenantId,omitempty"`
}

// MarshalJSON is the custom marshaler for FactoryIdentity.
func (fi FactoryIdentity) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if fi.Type != nil {
		objectMap["type"] = fi.Type
	}
	return json.Marshal(objectMap)
}

// FactoryListResponse a list of factory resources.
type FactoryListResponse struct {
	autorest.Response `json:"-"`
	// Value - List of factories.
	Value *[]Factory `json:"value,omitempty"`
	// NextLink - The link to the next page of results, if any remaining results exist.
	NextLink *string `json:"nextLink,omitempty"`
}

// FactoryListResponseIterator provides access to a complete listing of Factory values.
type FactoryListResponseIterator struct {
	i    int
	page FactoryListResponsePage
}

// NextWithContext advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
func (iter *FactoryListResponseIterator) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/FactoryListResponseIterator.NextWithContext")
		defer func() {
			sc := -1
			if iter.Response().Response.Response != nil {
				sc = iter.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	iter.i++
	if iter.i < len(iter.page.Values()) {
		return nil
	}
	err = iter.page.NextWithContext(ctx)
	if err != nil {
		iter.i--
		return err
	}
	iter.i = 0
	return nil
}

// Next advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (iter *FactoryListResponseIterator) Next() error {
	return iter.NextWithContext(context.Background())
}

// NotDone returns true if the enumeration should be started or is not yet complete.
func (iter FactoryListResponseIterator) NotDone() bool {
	return iter.page.NotDone() && iter.i < len(iter.page.Values())
}

// Response returns the raw server response from the last page request.
func (iter FactoryListResponseIterator) Response() FactoryListResponse {
	return iter.page.Response()
}

// Value returns the current value or a zero-initialized value if the
// iterator has advanced beyond the end of the collection.
func (iter FactoryListResponseIterator) Value() Factory {
	if !iter.page.NotDone() {
		return Factory{}
	}
	return iter.page.Values()[iter.i]
}

// Creates a new instance of the FactoryListResponseIterator type.
func NewFactoryListResponseIterator(page FactoryListResponsePage) FactoryListResponseIterator {
	return FactoryListResponseIterator{page: page}
}

// IsEmpty returns true if the ListResult contains no values.
func (flr FactoryListResponse) IsEmpty() bool {
	return flr.Value == nil || len(*flr.Value) == 0
}

// hasNextLink returns true if the NextLink is not empty.
func (flr FactoryListResponse) hasNextLink() bool {
	return flr.NextLink != nil && len(*flr.NextLink) != 0
}

// factoryListResponsePreparer prepares a request to retrieve the next set of results.
// It returns nil if no more results exist.
func (flr FactoryListResponse) factoryListResponsePreparer(ctx context.Context) (*http.Request, error) {
	if !flr.hasNextLink() {
		return nil, nil
	}
	return autorest.Prepare((&http.Request{}).WithContext(ctx),
		autorest.AsJSON(),
		autorest.AsGet(),
		autorest.WithBaseURL(to.String(flr.NextLink)))
}

// FactoryListResponsePage contains a page of Factory values.
type FactoryListResponsePage struct {
	fn  func(context.Context, FactoryListResponse) (FactoryListResponse, error)
	flr FactoryListResponse
}

// NextWithContext advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
func (page *FactoryListResponsePage) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/FactoryListResponsePage.NextWithContext")
		defer func() {
			sc := -1
			if page.Response().Response.Response != nil {
				sc = page.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	for {
		next, err := page.fn(ctx, page.flr)
		if err != nil {
			return err
		}
		page.flr = next
		if !next.hasNextLink() || !next.IsEmpty() {
			break
		}
	}
	return nil
}

// Next advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (page *FactoryListResponsePage) Next() error {
	return page.NextWithContext(context.Background())
}

// NotDone returns true if the page enumeration should be started or is not yet complete.
func (page FactoryListResponsePage) NotDone() bool {
	return !page.flr.IsEmpty()
}

// Response returns the raw server response from the last page request.
func (page FactoryListResponsePage) Response() FactoryListResponse {
	return page.flr
}

// Values returns the slice of values for the current page or nil if there are no values.
func (page FactoryListResponsePage) Values() []Factory {
	if page.flr.IsEmpty() {
		return nil
	}
	return *page.flr.Value
}

// Creates a new instance of the FactoryListResponsePage type.
func NewFactoryListResponsePage(cur FactoryListResponse, getNextPage func(context.Context, FactoryListResponse) (FactoryListResponse, error)) FactoryListResponsePage {
	return FactoryListResponsePage{
		fn:  getNextPage,
		flr: cur,
	}
}

// FactoryProperties factory resource properties.
type FactoryProperties struct {
	// ProvisioningState - READ-ONLY; Factory provisioning state, example Succeeded.
	ProvisioningState *string `json:"provisioningState,omitempty"`
	// CreateTime - READ-ONLY; Time the factory was created in ISO8601 format.
	CreateTime *date.Time `json:"createTime,omitempty"`
	// Version - READ-ONLY; Version of the factory.
	Version *string `json:"version,omitempty"`
	// VstsConfiguration - VSTS repo information of the factory.
	VstsConfiguration *FactoryVSTSConfiguration `json:"vstsConfiguration,omitempty"`
}

// MarshalJSON is the custom marshaler for FactoryProperties.
func (fp FactoryProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if fp.VstsConfiguration != nil {
		objectMap["vstsConfiguration"] = fp.VstsConfiguration
	}
	return json.Marshal(objectMap)
}

// FactoryRepoUpdate factory's VSTS repo information.
type FactoryRepoUpdate struct {
	// FactoryResourceID - The factory resource id.
	FactoryResourceID *string `json:"factoryResourceId,omitempty"`
	// ResourceGroupName - The resource group name.
	ResourceGroupName *string `json:"resourceGroupName,omitempty"`
	// VstsConfiguration - VSTS repo information of the factory.
	VstsConfiguration *FactoryVSTSConfiguration `json:"vstsConfiguration,omitempty"`
}

// FactoryUpdateParameters parameters for updating a factory resource.
type FactoryUpdateParameters struct {
	// Tags - The resource tags.
	Tags map[string]*string `json:"tags"`
	// Identity - Managed service identity of the factory.
	Identity *FactoryIdentity `json:"identity,omitempty"`
}

// MarshalJSON is the custom marshaler for FactoryUpdateParameters.
func (fup FactoryUpdateParameters) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if fup.Tags != nil {
		objectMap["tags"] = fup.Tags
	}
	if fup.Identity != nil {
		objectMap["identity"] = fup.Identity
	}
	return json.Marshal(objectMap)
}

// FactoryVSTSConfiguration factory's VSTS repo information.
type FactoryVSTSConfiguration struct {
	// AccountName - VSTS account name.
	AccountName *string `json:"accountName,omitempty"`
	// ProjectName - VSTS project name.
	ProjectName *string `json:"projectName,omitempty"`
	// RepositoryName - VSTS repository name.
	RepositoryName *string `json:"repositoryName,omitempty"`
	// CollaborationBranch - VSTS collaboration branch.
	CollaborationBranch *string `json:"collaborationBranch,omitempty"`
	// RootFolder - VSTS root folder.
	RootFolder *string `json:"rootFolder,omitempty"`
	// LastCommitID - VSTS last commit id.
	LastCommitID *string `json:"lastCommitId,omitempty"`
	// TenantID - VSTS tenant id.
	TenantID *string `json:"tenantId,omitempty"`
}

// FileServerLinkedService file system linked service.
type FileServerLinkedService struct {
	// FileServerLinkedServiceTypeProperties - File system linked service properties.
	*FileServerLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for FileServerLinkedService.
func (fsls FileServerLinkedService) MarshalJSON() ([]byte, error) {
	fsls.Type = TypeFileServer
	objectMap := make(map[string]interface{})
	if fsls.FileServerLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = fsls.FileServerLinkedServiceTypeProperties
	}
	if fsls.ConnectVia != nil {
		objectMap["connectVia"] = fsls.ConnectVia
	}
	if fsls.Description != nil {
		objectMap["description"] = fsls.Description
	}
	if fsls.Parameters != nil {
		objectMap["parameters"] = fsls.Parameters
	}
	if fsls.Annotations != nil {
		objectMap["annotations"] = fsls.Annotations
	}
	if fsls.Type != "" {
		objectMap["type"] = fsls.Type
	}
	for k, v := range fsls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return &fsls, true
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for FileServerLinkedService.
func (fsls FileServerLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &fsls, true
}

// UnmarshalJSON is the custom unmarshaler for FileServerLinkedService struct.
func (fsls *FileServerLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var fileServerLinkedServiceTypeProperties FileServerLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &fileServerLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				fsls.FileServerLinkedServiceTypeProperties = &fileServerLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if fsls.AdditionalProperties == nil {
					fsls.AdditionalProperties = make(map[string]interface{})
				}
				fsls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				fsls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				fsls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				fsls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				fsls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				fsls.Type = typeVar
			}
		}
	}

	return nil
}

// FileServerLinkedServiceTypeProperties file system linked service properties.
type FileServerLinkedServiceTypeProperties struct {
	// Host - Host name of the server. Type: string (or Expression with resultType string).
	Host interface{} `json:"host,omitempty"`
	// UserID - User ID to logon the server. Type: string (or Expression with resultType string).
	UserID interface{} `json:"userId,omitempty"`
	// Password - Password to logon the server.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for FileServerLinkedServiceTypeProperties struct.
func (fslstp *FileServerLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				fslstp.Host = host
			}
		case "userId":
			if v != nil {
				var userID interface{}
				err = json.Unmarshal(*v, &userID)
				if err != nil {
					return err
				}
				fslstp.UserID = userID
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				fslstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				fslstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// FileShareDataset an on-premises file system dataset.
type FileShareDataset struct {
	// FileShareDatasetTypeProperties - On-premises file system dataset properties.
	*FileShareDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for FileShareDataset.
func (fsd FileShareDataset) MarshalJSON() ([]byte, error) {
	fsd.Type = TypeFileShare
	objectMap := make(map[string]interface{})
	if fsd.FileShareDatasetTypeProperties != nil {
		objectMap["typeProperties"] = fsd.FileShareDatasetTypeProperties
	}
	if fsd.Description != nil {
		objectMap["description"] = fsd.Description
	}
	if fsd.Structure != nil {
		objectMap["structure"] = fsd.Structure
	}
	if fsd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = fsd.LinkedServiceName
	}
	if fsd.Parameters != nil {
		objectMap["parameters"] = fsd.Parameters
	}
	if fsd.Annotations != nil {
		objectMap["annotations"] = fsd.Annotations
	}
	if fsd.Type != "" {
		objectMap["type"] = fsd.Type
	}
	for k, v := range fsd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return &fsd, true
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for FileShareDataset.
func (fsd FileShareDataset) AsBasicDataset() (BasicDataset, bool) {
	return &fsd, true
}

// UnmarshalJSON is the custom unmarshaler for FileShareDataset struct.
func (fsd *FileShareDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var fileShareDatasetTypeProperties FileShareDatasetTypeProperties
				err = json.Unmarshal(*v, &fileShareDatasetTypeProperties)
				if err != nil {
					return err
				}
				fsd.FileShareDatasetTypeProperties = &fileShareDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if fsd.AdditionalProperties == nil {
					fsd.AdditionalProperties = make(map[string]interface{})
				}
				fsd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				fsd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				fsd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				fsd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				fsd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				fsd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				fsd.Type = typeVar
			}
		}
	}

	return nil
}

// FileShareDatasetTypeProperties on-premises file system dataset properties.
type FileShareDatasetTypeProperties struct {
	// FolderPath - The path of the on-premises file system. Type: string (or Expression with resultType string).
	FolderPath interface{} `json:"folderPath,omitempty"`
	// FileName - The name of the on-premises file system. Type: string (or Expression with resultType string).
	FileName interface{} `json:"fileName,omitempty"`
	// Format - The format of the files.
	Format BasicDatasetStorageFormat `json:"format,omitempty"`
	// FileFilter - 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).
	FileFilter interface{} `json:"fileFilter,omitempty"`
	// Compression - The data compression method used for the file system.
	Compression BasicDatasetCompression `json:"compression,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for FileShareDatasetTypeProperties struct.
func (fsdtp *FileShareDatasetTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "folderPath":
			if v != nil {
				var folderPath interface{}
				err = json.Unmarshal(*v, &folderPath)
				if err != nil {
					return err
				}
				fsdtp.FolderPath = folderPath
			}
		case "fileName":
			if v != nil {
				var fileName interface{}
				err = json.Unmarshal(*v, &fileName)
				if err != nil {
					return err
				}
				fsdtp.FileName = fileName
			}
		case "format":
			if v != nil {
				formatVar, err := unmarshalBasicDatasetStorageFormat(*v)
				if err != nil {
					return err
				}
				fsdtp.Format = formatVar
			}
		case "fileFilter":
			if v != nil {
				var fileFilter interface{}
				err = json.Unmarshal(*v, &fileFilter)
				if err != nil {
					return err
				}
				fsdtp.FileFilter = fileFilter
			}
		case "compression":
			if v != nil {
				compression, err := unmarshalBasicDatasetCompression(*v)
				if err != nil {
					return err
				}
				fsdtp.Compression = compression
			}
		}
	}

	return nil
}

// FileSystemSink a copy activity file system sink.
type FileSystemSink struct {
	// CopyBehavior - The type of copy behavior for copy sink.
	CopyBehavior interface{} `json:"copyBehavior,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for FileSystemSink.
func (fss FileSystemSink) MarshalJSON() ([]byte, error) {
	fss.Type = TypeFileSystemSink
	objectMap := make(map[string]interface{})
	if fss.CopyBehavior != nil {
		objectMap["copyBehavior"] = fss.CopyBehavior
	}
	if fss.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = fss.WriteBatchSize
	}
	if fss.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = fss.WriteBatchTimeout
	}
	if fss.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = fss.SinkRetryCount
	}
	if fss.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = fss.SinkRetryWait
	}
	if fss.Type != "" {
		objectMap["type"] = fss.Type
	}
	for k, v := range fss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return &fss, true
}

// AsBlobSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for FileSystemSink.
func (fss FileSystemSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &fss, true
}

// UnmarshalJSON is the custom unmarshaler for FileSystemSink struct.
func (fss *FileSystemSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "copyBehavior":
			if v != nil {
				var copyBehavior interface{}
				err = json.Unmarshal(*v, &copyBehavior)
				if err != nil {
					return err
				}
				fss.CopyBehavior = copyBehavior
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if fss.AdditionalProperties == nil {
					fss.AdditionalProperties = make(map[string]interface{})
				}
				fss.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				fss.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				fss.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				fss.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				fss.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				fss.Type = typeVar
			}
		}
	}

	return nil
}

// FileSystemSource a copy activity file system source.
type FileSystemSource struct {
	// Recursive - If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
	Recursive interface{} `json:"recursive,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for FileSystemSource.
func (fss FileSystemSource) MarshalJSON() ([]byte, error) {
	fss.Type = TypeFileSystemSource
	objectMap := make(map[string]interface{})
	if fss.Recursive != nil {
		objectMap["recursive"] = fss.Recursive
	}
	if fss.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = fss.SourceRetryCount
	}
	if fss.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = fss.SourceRetryWait
	}
	if fss.Type != "" {
		objectMap["type"] = fss.Type
	}
	for k, v := range fss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return &fss, true
}

// AsSQLDWSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for FileSystemSource.
func (fss FileSystemSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &fss, true
}

// UnmarshalJSON is the custom unmarshaler for FileSystemSource struct.
func (fss *FileSystemSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "recursive":
			if v != nil {
				var recursive interface{}
				err = json.Unmarshal(*v, &recursive)
				if err != nil {
					return err
				}
				fss.Recursive = recursive
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if fss.AdditionalProperties == nil {
					fss.AdditionalProperties = make(map[string]interface{})
				}
				fss.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				fss.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				fss.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				fss.Type = typeVar
			}
		}
	}

	return nil
}

// FilterActivity filter and return results from input array based on the conditions.
type FilterActivity struct {
	// FilterActivityTypeProperties - Filter activity properties.
	*FilterActivityTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for FilterActivity.
func (fa FilterActivity) MarshalJSON() ([]byte, error) {
	fa.Type = TypeFilter
	objectMap := make(map[string]interface{})
	if fa.FilterActivityTypeProperties != nil {
		objectMap["typeProperties"] = fa.FilterActivityTypeProperties
	}
	if fa.Name != nil {
		objectMap["name"] = fa.Name
	}
	if fa.Description != nil {
		objectMap["description"] = fa.Description
	}
	if fa.DependsOn != nil {
		objectMap["dependsOn"] = fa.DependsOn
	}
	if fa.Type != "" {
		objectMap["type"] = fa.Type
	}
	for k, v := range fa.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return nil, false
}

// AsFilterActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsFilterActivity() (*FilterActivity, bool) {
	return &fa, true
}

// AsUntilActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return &fa, true
}

// AsActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for FilterActivity.
func (fa FilterActivity) AsBasicActivity() (BasicActivity, bool) {
	return &fa, true
}

// UnmarshalJSON is the custom unmarshaler for FilterActivity struct.
func (fa *FilterActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var filterActivityTypeProperties FilterActivityTypeProperties
				err = json.Unmarshal(*v, &filterActivityTypeProperties)
				if err != nil {
					return err
				}
				fa.FilterActivityTypeProperties = &filterActivityTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if fa.AdditionalProperties == nil {
					fa.AdditionalProperties = make(map[string]interface{})
				}
				fa.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				fa.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				fa.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				fa.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				fa.Type = typeVar
			}
		}
	}

	return nil
}

// FilterActivityTypeProperties filter activity properties.
type FilterActivityTypeProperties struct {
	// Items - Input array on which filter should be applied.
	Items *Expression `json:"items,omitempty"`
	// Condition - Condition to be used for filtering the input.
	Condition *Expression `json:"condition,omitempty"`
}

// ForEachActivity this activity is used for iterating over a collection and execute given activities.
type ForEachActivity struct {
	// ForEachActivityTypeProperties - ForEach activity properties.
	*ForEachActivityTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ForEachActivity.
func (fea ForEachActivity) MarshalJSON() ([]byte, error) {
	fea.Type = TypeForEach
	objectMap := make(map[string]interface{})
	if fea.ForEachActivityTypeProperties != nil {
		objectMap["typeProperties"] = fea.ForEachActivityTypeProperties
	}
	if fea.Name != nil {
		objectMap["name"] = fea.Name
	}
	if fea.Description != nil {
		objectMap["description"] = fea.Description
	}
	if fea.DependsOn != nil {
		objectMap["dependsOn"] = fea.DependsOn
	}
	if fea.Type != "" {
		objectMap["type"] = fea.Type
	}
	for k, v := range fea.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return nil, false
}

// AsFilterActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return &fea, true
}

// AsIfConditionActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return &fea, true
}

// AsActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for ForEachActivity.
func (fea ForEachActivity) AsBasicActivity() (BasicActivity, bool) {
	return &fea, true
}

// UnmarshalJSON is the custom unmarshaler for ForEachActivity struct.
func (fea *ForEachActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var forEachActivityTypeProperties ForEachActivityTypeProperties
				err = json.Unmarshal(*v, &forEachActivityTypeProperties)
				if err != nil {
					return err
				}
				fea.ForEachActivityTypeProperties = &forEachActivityTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if fea.AdditionalProperties == nil {
					fea.AdditionalProperties = make(map[string]interface{})
				}
				fea.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				fea.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				fea.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				fea.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				fea.Type = typeVar
			}
		}
	}

	return nil
}

// ForEachActivityTypeProperties forEach activity properties.
type ForEachActivityTypeProperties struct {
	// IsSequential - Should the loop be executed in sequence or in parallel (max 50)
	IsSequential *bool `json:"isSequential,omitempty"`
	// BatchCount - Batch count to be used for controlling the number of parallel execution (when isSequential is set to false).
	BatchCount *int32 `json:"batchCount,omitempty"`
	// Items - Collection to iterate.
	Items *Expression `json:"items,omitempty"`
	// Activities - List of activities to execute .
	Activities *[]BasicActivity `json:"activities,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for ForEachActivityTypeProperties struct.
func (featp *ForEachActivityTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "isSequential":
			if v != nil {
				var isSequential bool
				err = json.Unmarshal(*v, &isSequential)
				if err != nil {
					return err
				}
				featp.IsSequential = &isSequential
			}
		case "batchCount":
			if v != nil {
				var batchCount int32
				err = json.Unmarshal(*v, &batchCount)
				if err != nil {
					return err
				}
				featp.BatchCount = &batchCount
			}
		case "items":
			if v != nil {
				var items Expression
				err = json.Unmarshal(*v, &items)
				if err != nil {
					return err
				}
				featp.Items = &items
			}
		case "activities":
			if v != nil {
				activities, err := unmarshalBasicActivityArray(*v)
				if err != nil {
					return err
				}
				featp.Activities = &activities
			}
		}
	}

	return nil
}

// FtpServerLinkedService a FTP server Linked Service.
type FtpServerLinkedService struct {
	// FtpServerLinkedServiceTypeProperties - Properties specific to this linked service type.
	*FtpServerLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for FtpServerLinkedService.
func (fsls FtpServerLinkedService) MarshalJSON() ([]byte, error) {
	fsls.Type = TypeFtpServer
	objectMap := make(map[string]interface{})
	if fsls.FtpServerLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = fsls.FtpServerLinkedServiceTypeProperties
	}
	if fsls.ConnectVia != nil {
		objectMap["connectVia"] = fsls.ConnectVia
	}
	if fsls.Description != nil {
		objectMap["description"] = fsls.Description
	}
	if fsls.Parameters != nil {
		objectMap["parameters"] = fsls.Parameters
	}
	if fsls.Annotations != nil {
		objectMap["annotations"] = fsls.Annotations
	}
	if fsls.Type != "" {
		objectMap["type"] = fsls.Type
	}
	for k, v := range fsls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return &fsls, true
}

// AsHTTPLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for FtpServerLinkedService.
func (fsls FtpServerLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &fsls, true
}

// UnmarshalJSON is the custom unmarshaler for FtpServerLinkedService struct.
func (fsls *FtpServerLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var ftpServerLinkedServiceTypeProperties FtpServerLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &ftpServerLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				fsls.FtpServerLinkedServiceTypeProperties = &ftpServerLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if fsls.AdditionalProperties == nil {
					fsls.AdditionalProperties = make(map[string]interface{})
				}
				fsls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				fsls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				fsls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				fsls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				fsls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				fsls.Type = typeVar
			}
		}
	}

	return nil
}

// FtpServerLinkedServiceTypeProperties properties specific to this linked service type.
type FtpServerLinkedServiceTypeProperties struct {
	// Host - Host name of the FTP server. Type: string (or Expression with resultType string).
	Host interface{} `json:"host,omitempty"`
	// Port - 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), minimum: 0.
	Port interface{} `json:"port,omitempty"`
	// AuthenticationType - The authentication type to be used to connect to the FTP server. Possible values include: 'FtpAuthenticationTypeBasic', 'FtpAuthenticationTypeAnonymous'
	AuthenticationType FtpAuthenticationType `json:"authenticationType,omitempty"`
	// UserName - Username to logon the FTP server. Type: string (or Expression with resultType string).
	UserName interface{} `json:"userName,omitempty"`
	// Password - Password to logon the FTP server.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
	// EnableSsl - If true, connect to the FTP server over SSL/TLS channel. Default value is true. Type: boolean (or Expression with resultType boolean).
	EnableSsl interface{} `json:"enableSsl,omitempty"`
	// EnableServerCertificateValidation - If true, validate the FTP server SSL certificate when connect over SSL/TLS channel. Default value is true. Type: boolean (or Expression with resultType boolean).
	EnableServerCertificateValidation interface{} `json:"enableServerCertificateValidation,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for FtpServerLinkedServiceTypeProperties struct.
func (fslstp *FtpServerLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				fslstp.Host = host
			}
		case "port":
			if v != nil {
				var port interface{}
				err = json.Unmarshal(*v, &port)
				if err != nil {
					return err
				}
				fslstp.Port = port
			}
		case "authenticationType":
			if v != nil {
				var authenticationType FtpAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				fslstp.AuthenticationType = authenticationType
			}
		case "userName":
			if v != nil {
				var userName interface{}
				err = json.Unmarshal(*v, &userName)
				if err != nil {
					return err
				}
				fslstp.UserName = userName
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				fslstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				fslstp.EncryptedCredential = encryptedCredential
			}
		case "enableSsl":
			if v != nil {
				var enableSsl interface{}
				err = json.Unmarshal(*v, &enableSsl)
				if err != nil {
					return err
				}
				fslstp.EnableSsl = enableSsl
			}
		case "enableServerCertificateValidation":
			if v != nil {
				var enableServerCertificateValidation interface{}
				err = json.Unmarshal(*v, &enableServerCertificateValidation)
				if err != nil {
					return err
				}
				fslstp.EnableServerCertificateValidation = enableServerCertificateValidation
			}
		}
	}

	return nil
}

// GetMetadataActivity activity to get metadata of dataset
type GetMetadataActivity struct {
	// GetMetadataActivityTypeProperties - GetMetadata activity properties.
	*GetMetadataActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for GetMetadataActivity.
func (gma GetMetadataActivity) MarshalJSON() ([]byte, error) {
	gma.Type = TypeGetMetadata
	objectMap := make(map[string]interface{})
	if gma.GetMetadataActivityTypeProperties != nil {
		objectMap["typeProperties"] = gma.GetMetadataActivityTypeProperties
	}
	if gma.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = gma.LinkedServiceName
	}
	if gma.Policy != nil {
		objectMap["policy"] = gma.Policy
	}
	if gma.Name != nil {
		objectMap["name"] = gma.Name
	}
	if gma.Description != nil {
		objectMap["description"] = gma.Description
	}
	if gma.DependsOn != nil {
		objectMap["dependsOn"] = gma.DependsOn
	}
	if gma.Type != "" {
		objectMap["type"] = gma.Type
	}
	for k, v := range gma.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return &gma, true
}

// AsWebActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &gma, true
}

// AsFilterActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for GetMetadataActivity.
func (gma GetMetadataActivity) AsBasicActivity() (BasicActivity, bool) {
	return &gma, true
}

// UnmarshalJSON is the custom unmarshaler for GetMetadataActivity struct.
func (gma *GetMetadataActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var getMetadataActivityTypeProperties GetMetadataActivityTypeProperties
				err = json.Unmarshal(*v, &getMetadataActivityTypeProperties)
				if err != nil {
					return err
				}
				gma.GetMetadataActivityTypeProperties = &getMetadataActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				gma.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				gma.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if gma.AdditionalProperties == nil {
					gma.AdditionalProperties = make(map[string]interface{})
				}
				gma.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				gma.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				gma.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				gma.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				gma.Type = typeVar
			}
		}
	}

	return nil
}

// GetMetadataActivityTypeProperties getMetadata activity properties.
type GetMetadataActivityTypeProperties struct {
	// Dataset - GetMetadata activity dataset reference.
	Dataset *DatasetReference `json:"dataset,omitempty"`
	// FieldList - Fields of metadata to get from dataset.
	FieldList *[]interface{} `json:"fieldList,omitempty"`
}

// GoogleBigQueryLinkedService google BigQuery service linked service.
type GoogleBigQueryLinkedService struct {
	// GoogleBigQueryLinkedServiceTypeProperties - Google BigQuery service linked service properties.
	*GoogleBigQueryLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) MarshalJSON() ([]byte, error) {
	gbqls.Type = TypeGoogleBigQuery
	objectMap := make(map[string]interface{})
	if gbqls.GoogleBigQueryLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = gbqls.GoogleBigQueryLinkedServiceTypeProperties
	}
	if gbqls.ConnectVia != nil {
		objectMap["connectVia"] = gbqls.ConnectVia
	}
	if gbqls.Description != nil {
		objectMap["description"] = gbqls.Description
	}
	if gbqls.Parameters != nil {
		objectMap["parameters"] = gbqls.Parameters
	}
	if gbqls.Annotations != nil {
		objectMap["annotations"] = gbqls.Annotations
	}
	if gbqls.Type != "" {
		objectMap["type"] = gbqls.Type
	}
	for k, v := range gbqls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return &gbqls, true
}

// AsEloquaLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for GoogleBigQueryLinkedService.
func (gbqls GoogleBigQueryLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &gbqls, true
}

// UnmarshalJSON is the custom unmarshaler for GoogleBigQueryLinkedService struct.
func (gbqls *GoogleBigQueryLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var googleBigQueryLinkedServiceTypeProperties GoogleBigQueryLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &googleBigQueryLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				gbqls.GoogleBigQueryLinkedServiceTypeProperties = &googleBigQueryLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if gbqls.AdditionalProperties == nil {
					gbqls.AdditionalProperties = make(map[string]interface{})
				}
				gbqls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				gbqls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				gbqls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				gbqls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				gbqls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				gbqls.Type = typeVar
			}
		}
	}

	return nil
}

// GoogleBigQueryLinkedServiceTypeProperties google BigQuery service linked service properties.
type GoogleBigQueryLinkedServiceTypeProperties struct {
	// Project - The default BigQuery project to query against.
	Project interface{} `json:"project,omitempty"`
	// AdditionalProjects - A comma-separated list of public BigQuery projects to access.
	AdditionalProjects interface{} `json:"additionalProjects,omitempty"`
	// RequestGoogleDriveScope - Whether to request access to Google Drive. Allowing Google Drive access enables support for federated tables that combine BigQuery data with data from Google Drive. The default value is false.
	RequestGoogleDriveScope interface{} `json:"requestGoogleDriveScope,omitempty"`
	// AuthenticationType - The OAuth 2.0 authentication mechanism used for authentication. ServiceAuthentication can only be used on self-hosted IR. Possible values include: 'ServiceAuthentication', 'UserAuthentication'
	AuthenticationType GoogleBigQueryAuthenticationType `json:"authenticationType,omitempty"`
	// RefreshToken - The refresh token obtained from Google for authorizing access to BigQuery for UserAuthentication.
	RefreshToken BasicSecretBase `json:"refreshToken,omitempty"`
	// ClientID - The client id of the google application used to acquire the refresh token.
	ClientID BasicSecretBase `json:"clientId,omitempty"`
	// ClientSecret - The client secret of the google application used to acquire the refresh token.
	ClientSecret BasicSecretBase `json:"clientSecret,omitempty"`
	// Email - The service account email ID that is used for ServiceAuthentication and can only be used on self-hosted IR.
	Email interface{} `json:"email,omitempty"`
	// KeyFilePath - 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.
	KeyFilePath interface{} `json:"keyFilePath,omitempty"`
	// TrustedCertPath - 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 using SSL on self-hosted IR. The default value is the cacerts.pem file installed with the IR.
	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
	// UseSystemTrustStore - Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.
	UseSystemTrustStore interface{} `json:"useSystemTrustStore,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for GoogleBigQueryLinkedServiceTypeProperties struct.
func (gbqlstp *GoogleBigQueryLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "project":
			if v != nil {
				var project interface{}
				err = json.Unmarshal(*v, &project)
				if err != nil {
					return err
				}
				gbqlstp.Project = project
			}
		case "additionalProjects":
			if v != nil {
				var additionalProjects interface{}
				err = json.Unmarshal(*v, &additionalProjects)
				if err != nil {
					return err
				}
				gbqlstp.AdditionalProjects = additionalProjects
			}
		case "requestGoogleDriveScope":
			if v != nil {
				var requestGoogleDriveScope interface{}
				err = json.Unmarshal(*v, &requestGoogleDriveScope)
				if err != nil {
					return err
				}
				gbqlstp.RequestGoogleDriveScope = requestGoogleDriveScope
			}
		case "authenticationType":
			if v != nil {
				var authenticationType GoogleBigQueryAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				gbqlstp.AuthenticationType = authenticationType
			}
		case "refreshToken":
			if v != nil {
				refreshToken, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				gbqlstp.RefreshToken = refreshToken
			}
		case "clientId":
			if v != nil {
				clientID, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				gbqlstp.ClientID = clientID
			}
		case "clientSecret":
			if v != nil {
				clientSecret, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				gbqlstp.ClientSecret = clientSecret
			}
		case "email":
			if v != nil {
				var email interface{}
				err = json.Unmarshal(*v, &email)
				if err != nil {
					return err
				}
				gbqlstp.Email = email
			}
		case "keyFilePath":
			if v != nil {
				var keyFilePath interface{}
				err = json.Unmarshal(*v, &keyFilePath)
				if err != nil {
					return err
				}
				gbqlstp.KeyFilePath = keyFilePath
			}
		case "trustedCertPath":
			if v != nil {
				var trustedCertPath interface{}
				err = json.Unmarshal(*v, &trustedCertPath)
				if err != nil {
					return err
				}
				gbqlstp.TrustedCertPath = trustedCertPath
			}
		case "useSystemTrustStore":
			if v != nil {
				var useSystemTrustStore interface{}
				err = json.Unmarshal(*v, &useSystemTrustStore)
				if err != nil {
					return err
				}
				gbqlstp.UseSystemTrustStore = useSystemTrustStore
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				gbqlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// GoogleBigQueryObjectDataset google BigQuery service dataset.
type GoogleBigQueryObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) MarshalJSON() ([]byte, error) {
	gbqod.Type = TypeGoogleBigQueryObject
	objectMap := make(map[string]interface{})
	if gbqod.Description != nil {
		objectMap["description"] = gbqod.Description
	}
	if gbqod.Structure != nil {
		objectMap["structure"] = gbqod.Structure
	}
	if gbqod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = gbqod.LinkedServiceName
	}
	if gbqod.Parameters != nil {
		objectMap["parameters"] = gbqod.Parameters
	}
	if gbqod.Annotations != nil {
		objectMap["annotations"] = gbqod.Annotations
	}
	if gbqod.Type != "" {
		objectMap["type"] = gbqod.Type
	}
	for k, v := range gbqod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return &gbqod, true
}

// AsEloquaObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for GoogleBigQueryObjectDataset.
func (gbqod GoogleBigQueryObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &gbqod, true
}

// UnmarshalJSON is the custom unmarshaler for GoogleBigQueryObjectDataset struct.
func (gbqod *GoogleBigQueryObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if gbqod.AdditionalProperties == nil {
					gbqod.AdditionalProperties = make(map[string]interface{})
				}
				gbqod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				gbqod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				gbqod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				gbqod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				gbqod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				gbqod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				gbqod.Type = typeVar
			}
		}
	}

	return nil
}

// GoogleBigQuerySource a copy activity Google BigQuery service source.
type GoogleBigQuerySource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) MarshalJSON() ([]byte, error) {
	gbqs.Type = TypeGoogleBigQuerySource
	objectMap := make(map[string]interface{})
	if gbqs.Query != nil {
		objectMap["query"] = gbqs.Query
	}
	if gbqs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = gbqs.SourceRetryCount
	}
	if gbqs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = gbqs.SourceRetryWait
	}
	if gbqs.Type != "" {
		objectMap["type"] = gbqs.Type
	}
	for k, v := range gbqs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return &gbqs, true
}

// AsEloquaSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for GoogleBigQuerySource.
func (gbqs GoogleBigQuerySource) AsBasicCopySource() (BasicCopySource, bool) {
	return &gbqs, true
}

// UnmarshalJSON is the custom unmarshaler for GoogleBigQuerySource struct.
func (gbqs *GoogleBigQuerySource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				gbqs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if gbqs.AdditionalProperties == nil {
					gbqs.AdditionalProperties = make(map[string]interface{})
				}
				gbqs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				gbqs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				gbqs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				gbqs.Type = typeVar
			}
		}
	}

	return nil
}

// GreenplumLinkedService greenplum Database linked service.
type GreenplumLinkedService struct {
	// GreenplumLinkedServiceTypeProperties - Greenplum Database linked service properties.
	*GreenplumLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for GreenplumLinkedService.
func (gls GreenplumLinkedService) MarshalJSON() ([]byte, error) {
	gls.Type = TypeGreenplum
	objectMap := make(map[string]interface{})
	if gls.GreenplumLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = gls.GreenplumLinkedServiceTypeProperties
	}
	if gls.ConnectVia != nil {
		objectMap["connectVia"] = gls.ConnectVia
	}
	if gls.Description != nil {
		objectMap["description"] = gls.Description
	}
	if gls.Parameters != nil {
		objectMap["parameters"] = gls.Parameters
	}
	if gls.Annotations != nil {
		objectMap["annotations"] = gls.Annotations
	}
	if gls.Type != "" {
		objectMap["type"] = gls.Type
	}
	for k, v := range gls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return &gls, true
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for GreenplumLinkedService.
func (gls GreenplumLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &gls, true
}

// UnmarshalJSON is the custom unmarshaler for GreenplumLinkedService struct.
func (gls *GreenplumLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var greenplumLinkedServiceTypeProperties GreenplumLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &greenplumLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				gls.GreenplumLinkedServiceTypeProperties = &greenplumLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if gls.AdditionalProperties == nil {
					gls.AdditionalProperties = make(map[string]interface{})
				}
				gls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				gls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				gls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				gls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				gls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				gls.Type = typeVar
			}
		}
	}

	return nil
}

// GreenplumLinkedServiceTypeProperties greenplum Database linked service properties.
type GreenplumLinkedServiceTypeProperties struct {
	// ConnectionString - An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// GreenplumSource a copy activity Greenplum Database source.
type GreenplumSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for GreenplumSource.
func (gs GreenplumSource) MarshalJSON() ([]byte, error) {
	gs.Type = TypeGreenplumSource
	objectMap := make(map[string]interface{})
	if gs.Query != nil {
		objectMap["query"] = gs.Query
	}
	if gs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = gs.SourceRetryCount
	}
	if gs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = gs.SourceRetryWait
	}
	if gs.Type != "" {
		objectMap["type"] = gs.Type
	}
	for k, v := range gs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return &gs, true
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for GreenplumSource.
func (gs GreenplumSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &gs, true
}

// UnmarshalJSON is the custom unmarshaler for GreenplumSource struct.
func (gs *GreenplumSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				gs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if gs.AdditionalProperties == nil {
					gs.AdditionalProperties = make(map[string]interface{})
				}
				gs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				gs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				gs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				gs.Type = typeVar
			}
		}
	}

	return nil
}

// GreenplumTableDataset greenplum Database dataset.
type GreenplumTableDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for GreenplumTableDataset.
func (gtd GreenplumTableDataset) MarshalJSON() ([]byte, error) {
	gtd.Type = TypeGreenplumTable
	objectMap := make(map[string]interface{})
	if gtd.Description != nil {
		objectMap["description"] = gtd.Description
	}
	if gtd.Structure != nil {
		objectMap["structure"] = gtd.Structure
	}
	if gtd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = gtd.LinkedServiceName
	}
	if gtd.Parameters != nil {
		objectMap["parameters"] = gtd.Parameters
	}
	if gtd.Annotations != nil {
		objectMap["annotations"] = gtd.Annotations
	}
	if gtd.Type != "" {
		objectMap["type"] = gtd.Type
	}
	for k, v := range gtd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return &gtd, true
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for GreenplumTableDataset.
func (gtd GreenplumTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &gtd, true
}

// UnmarshalJSON is the custom unmarshaler for GreenplumTableDataset struct.
func (gtd *GreenplumTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if gtd.AdditionalProperties == nil {
					gtd.AdditionalProperties = make(map[string]interface{})
				}
				gtd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				gtd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				gtd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				gtd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				gtd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				gtd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				gtd.Type = typeVar
			}
		}
	}

	return nil
}

// HBaseLinkedService hBase server linked service.
type HBaseLinkedService struct {
	// HBaseLinkedServiceTypeProperties - HBase server linked service properties.
	*HBaseLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HBaseLinkedService.
func (hbls HBaseLinkedService) MarshalJSON() ([]byte, error) {
	hbls.Type = TypeHBase
	objectMap := make(map[string]interface{})
	if hbls.HBaseLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = hbls.HBaseLinkedServiceTypeProperties
	}
	if hbls.ConnectVia != nil {
		objectMap["connectVia"] = hbls.ConnectVia
	}
	if hbls.Description != nil {
		objectMap["description"] = hbls.Description
	}
	if hbls.Parameters != nil {
		objectMap["parameters"] = hbls.Parameters
	}
	if hbls.Annotations != nil {
		objectMap["annotations"] = hbls.Annotations
	}
	if hbls.Type != "" {
		objectMap["type"] = hbls.Type
	}
	for k, v := range hbls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return &hbls, true
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for HBaseLinkedService.
func (hbls HBaseLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &hbls, true
}

// UnmarshalJSON is the custom unmarshaler for HBaseLinkedService struct.
func (hbls *HBaseLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var hBaseLinkedServiceTypeProperties HBaseLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &hBaseLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				hbls.HBaseLinkedServiceTypeProperties = &hBaseLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hbls.AdditionalProperties == nil {
					hbls.AdditionalProperties = make(map[string]interface{})
				}
				hbls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				hbls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hbls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				hbls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				hbls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hbls.Type = typeVar
			}
		}
	}

	return nil
}

// HBaseLinkedServiceTypeProperties hBase server linked service properties.
type HBaseLinkedServiceTypeProperties struct {
	// Host - The IP address or host name of the HBase server. (i.e. 192.168.222.160)
	Host interface{} `json:"host,omitempty"`
	// Port - The TCP port that the HBase instance uses to listen for client connections. The default value is 9090.
	Port interface{} `json:"port,omitempty"`
	// HTTPPath - The partial URL corresponding to the HBase server. (i.e. /gateway/sandbox/hbase/version)
	HTTPPath interface{} `json:"httpPath,omitempty"`
	// AuthenticationType - The authentication mechanism to use to connect to the HBase server. Possible values include: 'HBaseAuthenticationTypeAnonymous', 'HBaseAuthenticationTypeBasic'
	AuthenticationType HBaseAuthenticationType `json:"authenticationType,omitempty"`
	// Username - The user name used to connect to the HBase instance.
	Username interface{} `json:"username,omitempty"`
	// Password - The password corresponding to the user name.
	Password BasicSecretBase `json:"password,omitempty"`
	// EnableSsl - Specifies whether the connections to the server are encrypted using SSL. The default value is false.
	EnableSsl interface{} `json:"enableSsl,omitempty"`
	// TrustedCertPath - 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 using SSL on self-hosted IR. The default value is the cacerts.pem file installed with the IR.
	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
	// AllowHostNameCNMismatch - 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.
	AllowHostNameCNMismatch interface{} `json:"allowHostNameCNMismatch,omitempty"`
	// AllowSelfSignedServerCert - Specifies whether to allow self-signed certificates from the server. The default value is false.
	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for HBaseLinkedServiceTypeProperties struct.
func (hblstp *HBaseLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				hblstp.Host = host
			}
		case "port":
			if v != nil {
				var port interface{}
				err = json.Unmarshal(*v, &port)
				if err != nil {
					return err
				}
				hblstp.Port = port
			}
		case "httpPath":
			if v != nil {
				var HTTPPath interface{}
				err = json.Unmarshal(*v, &HTTPPath)
				if err != nil {
					return err
				}
				hblstp.HTTPPath = HTTPPath
			}
		case "authenticationType":
			if v != nil {
				var authenticationType HBaseAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				hblstp.AuthenticationType = authenticationType
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				hblstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				hblstp.Password = password
			}
		case "enableSsl":
			if v != nil {
				var enableSsl interface{}
				err = json.Unmarshal(*v, &enableSsl)
				if err != nil {
					return err
				}
				hblstp.EnableSsl = enableSsl
			}
		case "trustedCertPath":
			if v != nil {
				var trustedCertPath interface{}
				err = json.Unmarshal(*v, &trustedCertPath)
				if err != nil {
					return err
				}
				hblstp.TrustedCertPath = trustedCertPath
			}
		case "allowHostNameCNMismatch":
			if v != nil {
				var allowHostNameCNMismatch interface{}
				err = json.Unmarshal(*v, &allowHostNameCNMismatch)
				if err != nil {
					return err
				}
				hblstp.AllowHostNameCNMismatch = allowHostNameCNMismatch
			}
		case "allowSelfSignedServerCert":
			if v != nil {
				var allowSelfSignedServerCert interface{}
				err = json.Unmarshal(*v, &allowSelfSignedServerCert)
				if err != nil {
					return err
				}
				hblstp.AllowSelfSignedServerCert = allowSelfSignedServerCert
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				hblstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// HBaseObjectDataset hBase server dataset.
type HBaseObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HBaseObjectDataset.
func (hbod HBaseObjectDataset) MarshalJSON() ([]byte, error) {
	hbod.Type = TypeHBaseObject
	objectMap := make(map[string]interface{})
	if hbod.Description != nil {
		objectMap["description"] = hbod.Description
	}
	if hbod.Structure != nil {
		objectMap["structure"] = hbod.Structure
	}
	if hbod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = hbod.LinkedServiceName
	}
	if hbod.Parameters != nil {
		objectMap["parameters"] = hbod.Parameters
	}
	if hbod.Annotations != nil {
		objectMap["annotations"] = hbod.Annotations
	}
	if hbod.Type != "" {
		objectMap["type"] = hbod.Type
	}
	for k, v := range hbod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return &hbod, true
}

// AsGreenplumTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for HBaseObjectDataset.
func (hbod HBaseObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &hbod, true
}

// UnmarshalJSON is the custom unmarshaler for HBaseObjectDataset struct.
func (hbod *HBaseObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hbod.AdditionalProperties == nil {
					hbod.AdditionalProperties = make(map[string]interface{})
				}
				hbod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hbod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				hbod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				hbod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				hbod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				hbod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hbod.Type = typeVar
			}
		}
	}

	return nil
}

// HBaseSource a copy activity HBase server source.
type HBaseSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HBaseSource.
func (hbs HBaseSource) MarshalJSON() ([]byte, error) {
	hbs.Type = TypeHBaseSource
	objectMap := make(map[string]interface{})
	if hbs.Query != nil {
		objectMap["query"] = hbs.Query
	}
	if hbs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = hbs.SourceRetryCount
	}
	if hbs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = hbs.SourceRetryWait
	}
	if hbs.Type != "" {
		objectMap["type"] = hbs.Type
	}
	for k, v := range hbs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsHBaseSource() (*HBaseSource, bool) {
	return &hbs, true
}

// AsGreenplumSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for HBaseSource.
func (hbs HBaseSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &hbs, true
}

// UnmarshalJSON is the custom unmarshaler for HBaseSource struct.
func (hbs *HBaseSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				hbs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hbs.AdditionalProperties == nil {
					hbs.AdditionalProperties = make(map[string]interface{})
				}
				hbs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				hbs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				hbs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hbs.Type = typeVar
			}
		}
	}

	return nil
}

// HdfsLinkedService hadoop Distributed File System (HDFS) linked service.
type HdfsLinkedService struct {
	// HdfsLinkedServiceTypeProperties - HDFS linked service properties.
	*HdfsLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HdfsLinkedService.
func (hls HdfsLinkedService) MarshalJSON() ([]byte, error) {
	hls.Type = TypeHdfs
	objectMap := make(map[string]interface{})
	if hls.HdfsLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = hls.HdfsLinkedServiceTypeProperties
	}
	if hls.ConnectVia != nil {
		objectMap["connectVia"] = hls.ConnectVia
	}
	if hls.Description != nil {
		objectMap["description"] = hls.Description
	}
	if hls.Parameters != nil {
		objectMap["parameters"] = hls.Parameters
	}
	if hls.Annotations != nil {
		objectMap["annotations"] = hls.Annotations
	}
	if hls.Type != "" {
		objectMap["type"] = hls.Type
	}
	for k, v := range hls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return &hls, true
}

// AsOdbcLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for HdfsLinkedService.
func (hls HdfsLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &hls, true
}

// UnmarshalJSON is the custom unmarshaler for HdfsLinkedService struct.
func (hls *HdfsLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var hdfsLinkedServiceTypeProperties HdfsLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &hdfsLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				hls.HdfsLinkedServiceTypeProperties = &hdfsLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hls.AdditionalProperties == nil {
					hls.AdditionalProperties = make(map[string]interface{})
				}
				hls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				hls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				hls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				hls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hls.Type = typeVar
			}
		}
	}

	return nil
}

// HdfsLinkedServiceTypeProperties HDFS linked service properties.
type HdfsLinkedServiceTypeProperties struct {
	// URL - The URL of the HDFS service endpoint, e.g. http://myhostname:50070/webhdfs/v1 . Type: string (or Expression with resultType string).
	URL interface{} `json:"url,omitempty"`
	// AuthenticationType - Type of authentication used to connect to the HDFS. Possible values are: Anonymous and Windows. Type: string (or Expression with resultType string).
	AuthenticationType interface{} `json:"authenticationType,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
	// UserName - User name for Windows authentication. Type: string (or Expression with resultType string).
	UserName interface{} `json:"userName,omitempty"`
	// Password - Password for Windows authentication.
	Password BasicSecretBase `json:"password,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for HdfsLinkedServiceTypeProperties struct.
func (hlstp *HdfsLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "url":
			if v != nil {
				var URL interface{}
				err = json.Unmarshal(*v, &URL)
				if err != nil {
					return err
				}
				hlstp.URL = URL
			}
		case "authenticationType":
			if v != nil {
				var authenticationType interface{}
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				hlstp.AuthenticationType = authenticationType
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				hlstp.EncryptedCredential = encryptedCredential
			}
		case "userName":
			if v != nil {
				var userName interface{}
				err = json.Unmarshal(*v, &userName)
				if err != nil {
					return err
				}
				hlstp.UserName = userName
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				hlstp.Password = password
			}
		}
	}

	return nil
}

// HdfsSource a copy activity HDFS source.
type HdfsSource struct {
	// Recursive - If true, files under the folder path will be read recursively. Default is true. Type: boolean (or Expression with resultType boolean).
	Recursive interface{} `json:"recursive,omitempty"`
	// DistcpSettings - Specifies Distcp-related settings.
	DistcpSettings *DistcpSettings `json:"distcpSettings,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HdfsSource.
func (hs HdfsSource) MarshalJSON() ([]byte, error) {
	hs.Type = TypeHdfsSource
	objectMap := make(map[string]interface{})
	if hs.Recursive != nil {
		objectMap["recursive"] = hs.Recursive
	}
	if hs.DistcpSettings != nil {
		objectMap["distcpSettings"] = hs.DistcpSettings
	}
	if hs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = hs.SourceRetryCount
	}
	if hs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = hs.SourceRetryWait
	}
	if hs.Type != "" {
		objectMap["type"] = hs.Type
	}
	for k, v := range hs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsHdfsSource() (*HdfsSource, bool) {
	return &hs, true
}

// AsFileSystemSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for HdfsSource.
func (hs HdfsSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &hs, true
}

// UnmarshalJSON is the custom unmarshaler for HdfsSource struct.
func (hs *HdfsSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "recursive":
			if v != nil {
				var recursive interface{}
				err = json.Unmarshal(*v, &recursive)
				if err != nil {
					return err
				}
				hs.Recursive = recursive
			}
		case "distcpSettings":
			if v != nil {
				var distcpSettings DistcpSettings
				err = json.Unmarshal(*v, &distcpSettings)
				if err != nil {
					return err
				}
				hs.DistcpSettings = &distcpSettings
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hs.AdditionalProperties == nil {
					hs.AdditionalProperties = make(map[string]interface{})
				}
				hs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				hs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				hs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hs.Type = typeVar
			}
		}
	}

	return nil
}

// HDInsightHiveActivity hDInsight Hive activity type.
type HDInsightHiveActivity struct {
	// HDInsightHiveActivityTypeProperties - HDInsight Hive activity properties.
	*HDInsightHiveActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) MarshalJSON() ([]byte, error) {
	hiha.Type = TypeHDInsightHive
	objectMap := make(map[string]interface{})
	if hiha.HDInsightHiveActivityTypeProperties != nil {
		objectMap["typeProperties"] = hiha.HDInsightHiveActivityTypeProperties
	}
	if hiha.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = hiha.LinkedServiceName
	}
	if hiha.Policy != nil {
		objectMap["policy"] = hiha.Policy
	}
	if hiha.Name != nil {
		objectMap["name"] = hiha.Name
	}
	if hiha.Description != nil {
		objectMap["description"] = hiha.Description
	}
	if hiha.DependsOn != nil {
		objectMap["dependsOn"] = hiha.DependsOn
	}
	if hiha.Type != "" {
		objectMap["type"] = hiha.Type
	}
	for k, v := range hiha.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return &hiha, true
}

// AsCopyActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &hiha, true
}

// AsFilterActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for HDInsightHiveActivity.
func (hiha HDInsightHiveActivity) AsBasicActivity() (BasicActivity, bool) {
	return &hiha, true
}

// UnmarshalJSON is the custom unmarshaler for HDInsightHiveActivity struct.
func (hiha *HDInsightHiveActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var hDInsightHiveActivityTypeProperties HDInsightHiveActivityTypeProperties
				err = json.Unmarshal(*v, &hDInsightHiveActivityTypeProperties)
				if err != nil {
					return err
				}
				hiha.HDInsightHiveActivityTypeProperties = &hDInsightHiveActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				hiha.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				hiha.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hiha.AdditionalProperties == nil {
					hiha.AdditionalProperties = make(map[string]interface{})
				}
				hiha.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				hiha.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hiha.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				hiha.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hiha.Type = typeVar
			}
		}
	}

	return nil
}

// HDInsightHiveActivityTypeProperties hDInsight Hive activity properties.
type HDInsightHiveActivityTypeProperties struct {
	// StorageLinkedServices - Storage linked service references.
	StorageLinkedServices *[]LinkedServiceReference `json:"storageLinkedServices,omitempty"`
	// Arguments - User specified arguments to HDInsightActivity.
	Arguments *[]interface{} `json:"arguments,omitempty"`
	// GetDebugInfo - Debug info option. Possible values include: 'None', 'Always', 'Failure'
	GetDebugInfo HDInsightActivityDebugInfoOption `json:"getDebugInfo,omitempty"`
	// ScriptPath - Script path. Type: string (or Expression with resultType string).
	ScriptPath interface{} `json:"scriptPath,omitempty"`
	// ScriptLinkedService - Script linked service reference.
	ScriptLinkedService *LinkedServiceReference `json:"scriptLinkedService,omitempty"`
	// Defines - Allows user to specify defines for Hive job request.
	Defines map[string]interface{} `json:"defines"`
}

// MarshalJSON is the custom marshaler for HDInsightHiveActivityTypeProperties.
func (hihatp HDInsightHiveActivityTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if hihatp.StorageLinkedServices != nil {
		objectMap["storageLinkedServices"] = hihatp.StorageLinkedServices
	}
	if hihatp.Arguments != nil {
		objectMap["arguments"] = hihatp.Arguments
	}
	if hihatp.GetDebugInfo != "" {
		objectMap["getDebugInfo"] = hihatp.GetDebugInfo
	}
	if hihatp.ScriptPath != nil {
		objectMap["scriptPath"] = hihatp.ScriptPath
	}
	if hihatp.ScriptLinkedService != nil {
		objectMap["scriptLinkedService"] = hihatp.ScriptLinkedService
	}
	if hihatp.Defines != nil {
		objectMap["defines"] = hihatp.Defines
	}
	return json.Marshal(objectMap)
}

// HDInsightLinkedService hDInsight linked service.
type HDInsightLinkedService struct {
	// HDInsightLinkedServiceTypeProperties - HDInsight linked service properties.
	*HDInsightLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HDInsightLinkedService.
func (hils HDInsightLinkedService) MarshalJSON() ([]byte, error) {
	hils.Type = TypeHDInsight
	objectMap := make(map[string]interface{})
	if hils.HDInsightLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = hils.HDInsightLinkedServiceTypeProperties
	}
	if hils.ConnectVia != nil {
		objectMap["connectVia"] = hils.ConnectVia
	}
	if hils.Description != nil {
		objectMap["description"] = hils.Description
	}
	if hils.Parameters != nil {
		objectMap["parameters"] = hils.Parameters
	}
	if hils.Annotations != nil {
		objectMap["annotations"] = hils.Annotations
	}
	if hils.Type != "" {
		objectMap["type"] = hils.Type
	}
	for k, v := range hils.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return &hils, true
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for HDInsightLinkedService.
func (hils HDInsightLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &hils, true
}

// UnmarshalJSON is the custom unmarshaler for HDInsightLinkedService struct.
func (hils *HDInsightLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var hDInsightLinkedServiceTypeProperties HDInsightLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &hDInsightLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				hils.HDInsightLinkedServiceTypeProperties = &hDInsightLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hils.AdditionalProperties == nil {
					hils.AdditionalProperties = make(map[string]interface{})
				}
				hils.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				hils.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hils.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				hils.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				hils.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hils.Type = typeVar
			}
		}
	}

	return nil
}

// HDInsightLinkedServiceTypeProperties hDInsight linked service properties.
type HDInsightLinkedServiceTypeProperties struct {
	// ClusterURI - HDInsight cluster URI. Type: string (or Expression with resultType string).
	ClusterURI interface{} `json:"clusterUri,omitempty"`
	// UserName - HDInsight cluster user name. Type: string (or Expression with resultType string).
	UserName interface{} `json:"userName,omitempty"`
	// Password - HDInsight cluster password.
	Password BasicSecretBase `json:"password,omitempty"`
	// LinkedServiceName - The Azure Storage linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// HcatalogLinkedServiceName - A reference to the Azure SQL linked service that points to the HCatalog database.
	HcatalogLinkedServiceName *LinkedServiceReference `json:"hcatalogLinkedServiceName,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for HDInsightLinkedServiceTypeProperties struct.
func (hilstp *HDInsightLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "clusterUri":
			if v != nil {
				var clusterURI interface{}
				err = json.Unmarshal(*v, &clusterURI)
				if err != nil {
					return err
				}
				hilstp.ClusterURI = clusterURI
			}
		case "userName":
			if v != nil {
				var userName interface{}
				err = json.Unmarshal(*v, &userName)
				if err != nil {
					return err
				}
				hilstp.UserName = userName
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				hilstp.Password = password
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				hilstp.LinkedServiceName = &linkedServiceName
			}
		case "hcatalogLinkedServiceName":
			if v != nil {
				var hcatalogLinkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &hcatalogLinkedServiceName)
				if err != nil {
					return err
				}
				hilstp.HcatalogLinkedServiceName = &hcatalogLinkedServiceName
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				hilstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// HDInsightMapReduceActivity hDInsight MapReduce activity type.
type HDInsightMapReduceActivity struct {
	// HDInsightMapReduceActivityTypeProperties - HDInsight MapReduce activity properties.
	*HDInsightMapReduceActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) MarshalJSON() ([]byte, error) {
	himra.Type = TypeHDInsightMapReduce
	objectMap := make(map[string]interface{})
	if himra.HDInsightMapReduceActivityTypeProperties != nil {
		objectMap["typeProperties"] = himra.HDInsightMapReduceActivityTypeProperties
	}
	if himra.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = himra.LinkedServiceName
	}
	if himra.Policy != nil {
		objectMap["policy"] = himra.Policy
	}
	if himra.Name != nil {
		objectMap["name"] = himra.Name
	}
	if himra.Description != nil {
		objectMap["description"] = himra.Description
	}
	if himra.DependsOn != nil {
		objectMap["dependsOn"] = himra.DependsOn
	}
	if himra.Type != "" {
		objectMap["type"] = himra.Type
	}
	for k, v := range himra.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return &himra, true
}

// AsHDInsightPigActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &himra, true
}

// AsFilterActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for HDInsightMapReduceActivity.
func (himra HDInsightMapReduceActivity) AsBasicActivity() (BasicActivity, bool) {
	return &himra, true
}

// UnmarshalJSON is the custom unmarshaler for HDInsightMapReduceActivity struct.
func (himra *HDInsightMapReduceActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var hDInsightMapReduceActivityTypeProperties HDInsightMapReduceActivityTypeProperties
				err = json.Unmarshal(*v, &hDInsightMapReduceActivityTypeProperties)
				if err != nil {
					return err
				}
				himra.HDInsightMapReduceActivityTypeProperties = &hDInsightMapReduceActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				himra.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				himra.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if himra.AdditionalProperties == nil {
					himra.AdditionalProperties = make(map[string]interface{})
				}
				himra.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				himra.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				himra.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				himra.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				himra.Type = typeVar
			}
		}
	}

	return nil
}

// HDInsightMapReduceActivityTypeProperties hDInsight MapReduce activity properties.
type HDInsightMapReduceActivityTypeProperties struct {
	// StorageLinkedServices - Storage linked service references.
	StorageLinkedServices *[]LinkedServiceReference `json:"storageLinkedServices,omitempty"`
	// Arguments - User specified arguments to HDInsightActivity.
	Arguments *[]interface{} `json:"arguments,omitempty"`
	// GetDebugInfo - Debug info option. Possible values include: 'None', 'Always', 'Failure'
	GetDebugInfo HDInsightActivityDebugInfoOption `json:"getDebugInfo,omitempty"`
	// ClassName - Class name. Type: string (or Expression with resultType string).
	ClassName interface{} `json:"className,omitempty"`
	// JarFilePath - Jar path. Type: string (or Expression with resultType string).
	JarFilePath interface{} `json:"jarFilePath,omitempty"`
	// JarLinkedService - Jar linked service reference.
	JarLinkedService *LinkedServiceReference `json:"jarLinkedService,omitempty"`
	// JarLibs - Jar libs.
	JarLibs *[]interface{} `json:"jarLibs,omitempty"`
	// Defines - Allows user to specify defines for the MapReduce job request.
	Defines map[string]interface{} `json:"defines"`
}

// MarshalJSON is the custom marshaler for HDInsightMapReduceActivityTypeProperties.
func (himratp HDInsightMapReduceActivityTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if himratp.StorageLinkedServices != nil {
		objectMap["storageLinkedServices"] = himratp.StorageLinkedServices
	}
	if himratp.Arguments != nil {
		objectMap["arguments"] = himratp.Arguments
	}
	if himratp.GetDebugInfo != "" {
		objectMap["getDebugInfo"] = himratp.GetDebugInfo
	}
	if himratp.ClassName != nil {
		objectMap["className"] = himratp.ClassName
	}
	if himratp.JarFilePath != nil {
		objectMap["jarFilePath"] = himratp.JarFilePath
	}
	if himratp.JarLinkedService != nil {
		objectMap["jarLinkedService"] = himratp.JarLinkedService
	}
	if himratp.JarLibs != nil {
		objectMap["jarLibs"] = himratp.JarLibs
	}
	if himratp.Defines != nil {
		objectMap["defines"] = himratp.Defines
	}
	return json.Marshal(objectMap)
}

// HDInsightOnDemandLinkedService hDInsight ondemand linked service.
type HDInsightOnDemandLinkedService struct {
	// HDInsightOnDemandLinkedServiceTypeProperties - HDInsight ondemand linked service properties.
	*HDInsightOnDemandLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) MarshalJSON() ([]byte, error) {
	hiodls.Type = TypeHDInsightOnDemand
	objectMap := make(map[string]interface{})
	if hiodls.HDInsightOnDemandLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = hiodls.HDInsightOnDemandLinkedServiceTypeProperties
	}
	if hiodls.ConnectVia != nil {
		objectMap["connectVia"] = hiodls.ConnectVia
	}
	if hiodls.Description != nil {
		objectMap["description"] = hiodls.Description
	}
	if hiodls.Parameters != nil {
		objectMap["parameters"] = hiodls.Parameters
	}
	if hiodls.Annotations != nil {
		objectMap["annotations"] = hiodls.Annotations
	}
	if hiodls.Type != "" {
		objectMap["type"] = hiodls.Type
	}
	for k, v := range hiodls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return &hiodls, true
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for HDInsightOnDemandLinkedService.
func (hiodls HDInsightOnDemandLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &hiodls, true
}

// UnmarshalJSON is the custom unmarshaler for HDInsightOnDemandLinkedService struct.
func (hiodls *HDInsightOnDemandLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var hDInsightOnDemandLinkedServiceTypeProperties HDInsightOnDemandLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &hDInsightOnDemandLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				hiodls.HDInsightOnDemandLinkedServiceTypeProperties = &hDInsightOnDemandLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hiodls.AdditionalProperties == nil {
					hiodls.AdditionalProperties = make(map[string]interface{})
				}
				hiodls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				hiodls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hiodls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				hiodls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				hiodls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hiodls.Type = typeVar
			}
		}
	}

	return nil
}

// HDInsightOnDemandLinkedServiceTypeProperties hDInsight ondemand linked service properties.
type HDInsightOnDemandLinkedServiceTypeProperties struct {
	// ClusterSize - Number of worker/data nodes in the cluster. Suggestion value: 4. Type: string (or Expression with resultType string).
	ClusterSize interface{} `json:"clusterSize,omitempty"`
	// TimeToLive - The allowed idle time for the on-demand HDInsight cluster. Specifies how long the on-demand HDInsight cluster stays alive after completion of an activity run if there are no other active jobs in the cluster. The minimum value is 5 mins. Type: string (or Expression with resultType string).
	TimeToLive interface{} `json:"timeToLive,omitempty"`
	// Version - Version of the HDInsight cluster.  Type: string (or Expression with resultType string).
	Version interface{} `json:"version,omitempty"`
	// LinkedServiceName - Azure Storage linked service to be used by the on-demand cluster for storing and processing data.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// HostSubscriptionID - The customer’s subscription to host the cluster. Type: string (or Expression with resultType string).
	HostSubscriptionID interface{} `json:"hostSubscriptionId,omitempty"`
	// ServicePrincipalID - The service principal id for the hostSubscriptionId. Type: string (or Expression with resultType string).
	ServicePrincipalID interface{} `json:"servicePrincipalId,omitempty"`
	// ServicePrincipalKey - The key for the service principal id.
	ServicePrincipalKey BasicSecretBase `json:"servicePrincipalKey,omitempty"`
	// Tenant - The Tenant id/name to which the service principal belongs. Type: string (or Expression with resultType string).
	Tenant interface{} `json:"tenant,omitempty"`
	// ClusterResourceGroup - The resource group where the cluster belongs. Type: string (or Expression with resultType string).
	ClusterResourceGroup interface{} `json:"clusterResourceGroup,omitempty"`
	// ClusterNamePrefix - The prefix of cluster name, postfix will be distinct with timestamp. Type: string (or Expression with resultType string).
	ClusterNamePrefix interface{} `json:"clusterNamePrefix,omitempty"`
	// ClusterUserName - The username to access the cluster. Type: string (or Expression with resultType string).
	ClusterUserName interface{} `json:"clusterUserName,omitempty"`
	// ClusterPassword - The password to access the cluster.
	ClusterPassword BasicSecretBase `json:"clusterPassword,omitempty"`
	// ClusterSSHUserName - The username to SSH remotely connect to cluster’s node (for Linux). Type: string (or Expression with resultType string).
	ClusterSSHUserName interface{} `json:"clusterSshUserName,omitempty"`
	// ClusterSSHPassword - The password to SSH remotely connect cluster’s node (for Linux).
	ClusterSSHPassword BasicSecretBase `json:"clusterSshPassword,omitempty"`
	// AdditionalLinkedServiceNames - Specifies additional storage accounts for the HDInsight linked service so that the Data Factory service can register them on your behalf.
	AdditionalLinkedServiceNames *[]LinkedServiceReference `json:"additionalLinkedServiceNames,omitempty"`
	// HcatalogLinkedServiceName - 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 as the metastore.
	HcatalogLinkedServiceName *LinkedServiceReference `json:"hcatalogLinkedServiceName,omitempty"`
	// ClusterType - The cluster type. Type: string (or Expression with resultType string).
	ClusterType interface{} `json:"clusterType,omitempty"`
	// SparkVersion - The version of spark if the cluster type is 'spark'. Type: string (or Expression with resultType string).
	SparkVersion interface{} `json:"sparkVersion,omitempty"`
	// CoreConfiguration - Specifies the core configuration parameters (as in core-site.xml) for the HDInsight cluster to be created.
	CoreConfiguration interface{} `json:"coreConfiguration,omitempty"`
	// HBaseConfiguration - Specifies the HBase configuration parameters (hbase-site.xml) for the HDInsight cluster.
	HBaseConfiguration interface{} `json:"hBaseConfiguration,omitempty"`
	// HdfsConfiguration - Specifies the HDFS configuration parameters (hdfs-site.xml) for the HDInsight cluster.
	HdfsConfiguration interface{} `json:"hdfsConfiguration,omitempty"`
	// HiveConfiguration - Specifies the hive configuration parameters (hive-site.xml) for the HDInsight cluster.
	HiveConfiguration interface{} `json:"hiveConfiguration,omitempty"`
	// MapReduceConfiguration - Specifies the MapReduce configuration parameters (mapred-site.xml) for the HDInsight cluster.
	MapReduceConfiguration interface{} `json:"mapReduceConfiguration,omitempty"`
	// OozieConfiguration - Specifies the Oozie configuration parameters (oozie-site.xml) for the HDInsight cluster.
	OozieConfiguration interface{} `json:"oozieConfiguration,omitempty"`
	// StormConfiguration - Specifies the Storm configuration parameters (storm-site.xml) for the HDInsight cluster.
	StormConfiguration interface{} `json:"stormConfiguration,omitempty"`
	// YarnConfiguration - Specifies the Yarn configuration parameters (yarn-site.xml) for the HDInsight cluster.
	YarnConfiguration interface{} `json:"yarnConfiguration,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
	// HeadNodeSize - Specifies the size of the head node for the HDInsight cluster.
	HeadNodeSize interface{} `json:"headNodeSize,omitempty"`
	// DataNodeSize - Specifies the size of the data node for the HDInsight cluster.
	DataNodeSize interface{} `json:"dataNodeSize,omitempty"`
	// ZookeeperNodeSize - Specifies the size of the Zoo Keeper node for the HDInsight cluster.
	ZookeeperNodeSize interface{} `json:"zookeeperNodeSize,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for HDInsightOnDemandLinkedServiceTypeProperties struct.
func (hiodlstp *HDInsightOnDemandLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "clusterSize":
			if v != nil {
				var clusterSize interface{}
				err = json.Unmarshal(*v, &clusterSize)
				if err != nil {
					return err
				}
				hiodlstp.ClusterSize = clusterSize
			}
		case "timeToLive":
			if v != nil {
				var timeToLive interface{}
				err = json.Unmarshal(*v, &timeToLive)
				if err != nil {
					return err
				}
				hiodlstp.TimeToLive = timeToLive
			}
		case "version":
			if v != nil {
				var version interface{}
				err = json.Unmarshal(*v, &version)
				if err != nil {
					return err
				}
				hiodlstp.Version = version
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				hiodlstp.LinkedServiceName = &linkedServiceName
			}
		case "hostSubscriptionId":
			if v != nil {
				var hostSubscriptionID interface{}
				err = json.Unmarshal(*v, &hostSubscriptionID)
				if err != nil {
					return err
				}
				hiodlstp.HostSubscriptionID = hostSubscriptionID
			}
		case "servicePrincipalId":
			if v != nil {
				var servicePrincipalID interface{}
				err = json.Unmarshal(*v, &servicePrincipalID)
				if err != nil {
					return err
				}
				hiodlstp.ServicePrincipalID = servicePrincipalID
			}
		case "servicePrincipalKey":
			if v != nil {
				servicePrincipalKey, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				hiodlstp.ServicePrincipalKey = servicePrincipalKey
			}
		case "tenant":
			if v != nil {
				var tenant interface{}
				err = json.Unmarshal(*v, &tenant)
				if err != nil {
					return err
				}
				hiodlstp.Tenant = tenant
			}
		case "clusterResourceGroup":
			if v != nil {
				var clusterResourceGroup interface{}
				err = json.Unmarshal(*v, &clusterResourceGroup)
				if err != nil {
					return err
				}
				hiodlstp.ClusterResourceGroup = clusterResourceGroup
			}
		case "clusterNamePrefix":
			if v != nil {
				var clusterNamePrefix interface{}
				err = json.Unmarshal(*v, &clusterNamePrefix)
				if err != nil {
					return err
				}
				hiodlstp.ClusterNamePrefix = clusterNamePrefix
			}
		case "clusterUserName":
			if v != nil {
				var clusterUserName interface{}
				err = json.Unmarshal(*v, &clusterUserName)
				if err != nil {
					return err
				}
				hiodlstp.ClusterUserName = clusterUserName
			}
		case "clusterPassword":
			if v != nil {
				clusterPassword, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				hiodlstp.ClusterPassword = clusterPassword
			}
		case "clusterSshUserName":
			if v != nil {
				var clusterSSHUserName interface{}
				err = json.Unmarshal(*v, &clusterSSHUserName)
				if err != nil {
					return err
				}
				hiodlstp.ClusterSSHUserName = clusterSSHUserName
			}
		case "clusterSshPassword":
			if v != nil {
				clusterSSHPassword, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				hiodlstp.ClusterSSHPassword = clusterSSHPassword
			}
		case "additionalLinkedServiceNames":
			if v != nil {
				var additionalLinkedServiceNames []LinkedServiceReference
				err = json.Unmarshal(*v, &additionalLinkedServiceNames)
				if err != nil {
					return err
				}
				hiodlstp.AdditionalLinkedServiceNames = &additionalLinkedServiceNames
			}
		case "hcatalogLinkedServiceName":
			if v != nil {
				var hcatalogLinkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &hcatalogLinkedServiceName)
				if err != nil {
					return err
				}
				hiodlstp.HcatalogLinkedServiceName = &hcatalogLinkedServiceName
			}
		case "clusterType":
			if v != nil {
				var clusterType interface{}
				err = json.Unmarshal(*v, &clusterType)
				if err != nil {
					return err
				}
				hiodlstp.ClusterType = clusterType
			}
		case "sparkVersion":
			if v != nil {
				var sparkVersion interface{}
				err = json.Unmarshal(*v, &sparkVersion)
				if err != nil {
					return err
				}
				hiodlstp.SparkVersion = sparkVersion
			}
		case "coreConfiguration":
			if v != nil {
				var coreConfiguration interface{}
				err = json.Unmarshal(*v, &coreConfiguration)
				if err != nil {
					return err
				}
				hiodlstp.CoreConfiguration = coreConfiguration
			}
		case "hBaseConfiguration":
			if v != nil {
				var hBaseConfiguration interface{}
				err = json.Unmarshal(*v, &hBaseConfiguration)
				if err != nil {
					return err
				}
				hiodlstp.HBaseConfiguration = hBaseConfiguration
			}
		case "hdfsConfiguration":
			if v != nil {
				var hdfsConfiguration interface{}
				err = json.Unmarshal(*v, &hdfsConfiguration)
				if err != nil {
					return err
				}
				hiodlstp.HdfsConfiguration = hdfsConfiguration
			}
		case "hiveConfiguration":
			if v != nil {
				var hiveConfiguration interface{}
				err = json.Unmarshal(*v, &hiveConfiguration)
				if err != nil {
					return err
				}
				hiodlstp.HiveConfiguration = hiveConfiguration
			}
		case "mapReduceConfiguration":
			if v != nil {
				var mapReduceConfiguration interface{}
				err = json.Unmarshal(*v, &mapReduceConfiguration)
				if err != nil {
					return err
				}
				hiodlstp.MapReduceConfiguration = mapReduceConfiguration
			}
		case "oozieConfiguration":
			if v != nil {
				var oozieConfiguration interface{}
				err = json.Unmarshal(*v, &oozieConfiguration)
				if err != nil {
					return err
				}
				hiodlstp.OozieConfiguration = oozieConfiguration
			}
		case "stormConfiguration":
			if v != nil {
				var stormConfiguration interface{}
				err = json.Unmarshal(*v, &stormConfiguration)
				if err != nil {
					return err
				}
				hiodlstp.StormConfiguration = stormConfiguration
			}
		case "yarnConfiguration":
			if v != nil {
				var yarnConfiguration interface{}
				err = json.Unmarshal(*v, &yarnConfiguration)
				if err != nil {
					return err
				}
				hiodlstp.YarnConfiguration = yarnConfiguration
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				hiodlstp.EncryptedCredential = encryptedCredential
			}
		case "headNodeSize":
			if v != nil {
				var headNodeSize interface{}
				err = json.Unmarshal(*v, &headNodeSize)
				if err != nil {
					return err
				}
				hiodlstp.HeadNodeSize = headNodeSize
			}
		case "dataNodeSize":
			if v != nil {
				var dataNodeSize interface{}
				err = json.Unmarshal(*v, &dataNodeSize)
				if err != nil {
					return err
				}
				hiodlstp.DataNodeSize = dataNodeSize
			}
		case "zookeeperNodeSize":
			if v != nil {
				var zookeeperNodeSize interface{}
				err = json.Unmarshal(*v, &zookeeperNodeSize)
				if err != nil {
					return err
				}
				hiodlstp.ZookeeperNodeSize = zookeeperNodeSize
			}
		}
	}

	return nil
}

// HDInsightPigActivity hDInsight Pig activity type.
type HDInsightPigActivity struct {
	// HDInsightPigActivityTypeProperties - HDInsight Pig activity properties.
	*HDInsightPigActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HDInsightPigActivity.
func (hipa HDInsightPigActivity) MarshalJSON() ([]byte, error) {
	hipa.Type = TypeHDInsightPig
	objectMap := make(map[string]interface{})
	if hipa.HDInsightPigActivityTypeProperties != nil {
		objectMap["typeProperties"] = hipa.HDInsightPigActivityTypeProperties
	}
	if hipa.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = hipa.LinkedServiceName
	}
	if hipa.Policy != nil {
		objectMap["policy"] = hipa.Policy
	}
	if hipa.Name != nil {
		objectMap["name"] = hipa.Name
	}
	if hipa.Description != nil {
		objectMap["description"] = hipa.Description
	}
	if hipa.DependsOn != nil {
		objectMap["dependsOn"] = hipa.DependsOn
	}
	if hipa.Type != "" {
		objectMap["type"] = hipa.Type
	}
	for k, v := range hipa.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return &hipa, true
}

// AsHDInsightHiveActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &hipa, true
}

// AsFilterActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for HDInsightPigActivity.
func (hipa HDInsightPigActivity) AsBasicActivity() (BasicActivity, bool) {
	return &hipa, true
}

// UnmarshalJSON is the custom unmarshaler for HDInsightPigActivity struct.
func (hipa *HDInsightPigActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var hDInsightPigActivityTypeProperties HDInsightPigActivityTypeProperties
				err = json.Unmarshal(*v, &hDInsightPigActivityTypeProperties)
				if err != nil {
					return err
				}
				hipa.HDInsightPigActivityTypeProperties = &hDInsightPigActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				hipa.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				hipa.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hipa.AdditionalProperties == nil {
					hipa.AdditionalProperties = make(map[string]interface{})
				}
				hipa.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				hipa.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hipa.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				hipa.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hipa.Type = typeVar
			}
		}
	}

	return nil
}

// HDInsightPigActivityTypeProperties hDInsight Pig activity properties.
type HDInsightPigActivityTypeProperties struct {
	// StorageLinkedServices - Storage linked service references.
	StorageLinkedServices *[]LinkedServiceReference `json:"storageLinkedServices,omitempty"`
	// Arguments - User specified arguments to HDInsightActivity.
	Arguments *[]interface{} `json:"arguments,omitempty"`
	// GetDebugInfo - Debug info option. Possible values include: 'None', 'Always', 'Failure'
	GetDebugInfo HDInsightActivityDebugInfoOption `json:"getDebugInfo,omitempty"`
	// ScriptPath - Script path. Type: string (or Expression with resultType string).
	ScriptPath interface{} `json:"scriptPath,omitempty"`
	// ScriptLinkedService - Script linked service reference.
	ScriptLinkedService *LinkedServiceReference `json:"scriptLinkedService,omitempty"`
	// Defines - Allows user to specify defines for Pig job request.
	Defines map[string]interface{} `json:"defines"`
}

// MarshalJSON is the custom marshaler for HDInsightPigActivityTypeProperties.
func (hipatp HDInsightPigActivityTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if hipatp.StorageLinkedServices != nil {
		objectMap["storageLinkedServices"] = hipatp.StorageLinkedServices
	}
	if hipatp.Arguments != nil {
		objectMap["arguments"] = hipatp.Arguments
	}
	if hipatp.GetDebugInfo != "" {
		objectMap["getDebugInfo"] = hipatp.GetDebugInfo
	}
	if hipatp.ScriptPath != nil {
		objectMap["scriptPath"] = hipatp.ScriptPath
	}
	if hipatp.ScriptLinkedService != nil {
		objectMap["scriptLinkedService"] = hipatp.ScriptLinkedService
	}
	if hipatp.Defines != nil {
		objectMap["defines"] = hipatp.Defines
	}
	return json.Marshal(objectMap)
}

// HDInsightSparkActivity hDInsight Spark activity.
type HDInsightSparkActivity struct {
	// HDInsightSparkActivityTypeProperties - HDInsight spark activity properties.
	*HDInsightSparkActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) MarshalJSON() ([]byte, error) {
	hisa.Type = TypeHDInsightSpark
	objectMap := make(map[string]interface{})
	if hisa.HDInsightSparkActivityTypeProperties != nil {
		objectMap["typeProperties"] = hisa.HDInsightSparkActivityTypeProperties
	}
	if hisa.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = hisa.LinkedServiceName
	}
	if hisa.Policy != nil {
		objectMap["policy"] = hisa.Policy
	}
	if hisa.Name != nil {
		objectMap["name"] = hisa.Name
	}
	if hisa.Description != nil {
		objectMap["description"] = hisa.Description
	}
	if hisa.DependsOn != nil {
		objectMap["dependsOn"] = hisa.DependsOn
	}
	if hisa.Type != "" {
		objectMap["type"] = hisa.Type
	}
	for k, v := range hisa.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return &hisa, true
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &hisa, true
}

// AsFilterActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for HDInsightSparkActivity.
func (hisa HDInsightSparkActivity) AsBasicActivity() (BasicActivity, bool) {
	return &hisa, true
}

// UnmarshalJSON is the custom unmarshaler for HDInsightSparkActivity struct.
func (hisa *HDInsightSparkActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var hDInsightSparkActivityTypeProperties HDInsightSparkActivityTypeProperties
				err = json.Unmarshal(*v, &hDInsightSparkActivityTypeProperties)
				if err != nil {
					return err
				}
				hisa.HDInsightSparkActivityTypeProperties = &hDInsightSparkActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				hisa.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				hisa.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hisa.AdditionalProperties == nil {
					hisa.AdditionalProperties = make(map[string]interface{})
				}
				hisa.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				hisa.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hisa.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				hisa.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hisa.Type = typeVar
			}
		}
	}

	return nil
}

// HDInsightSparkActivityTypeProperties hDInsight spark activity properties.
type HDInsightSparkActivityTypeProperties struct {
	// RootPath - The root path in 'sparkJobLinkedService' for all the job’s files. Type: string (or Expression with resultType string).
	RootPath interface{} `json:"rootPath,omitempty"`
	// EntryFilePath - The relative path to the root folder of the code/package to be executed. Type: string (or Expression with resultType string).
	EntryFilePath interface{} `json:"entryFilePath,omitempty"`
	// Arguments - The user-specified arguments to HDInsightSparkActivity.
	Arguments *[]interface{} `json:"arguments,omitempty"`
	// GetDebugInfo - Debug info option. Possible values include: 'None', 'Always', 'Failure'
	GetDebugInfo HDInsightActivityDebugInfoOption `json:"getDebugInfo,omitempty"`
	// SparkJobLinkedService - The storage linked service for uploading the entry file and dependencies, and for receiving logs.
	SparkJobLinkedService *LinkedServiceReference `json:"sparkJobLinkedService,omitempty"`
	// ClassName - The application's Java/Spark main class.
	ClassName *string `json:"className,omitempty"`
	// ProxyUser - The user to impersonate that will execute the job. Type: string (or Expression with resultType string).
	ProxyUser interface{} `json:"proxyUser,omitempty"`
	// SparkConfig - Spark configuration property.
	SparkConfig map[string]interface{} `json:"sparkConfig"`
}

// MarshalJSON is the custom marshaler for HDInsightSparkActivityTypeProperties.
func (hisatp HDInsightSparkActivityTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if hisatp.RootPath != nil {
		objectMap["rootPath"] = hisatp.RootPath
	}
	if hisatp.EntryFilePath != nil {
		objectMap["entryFilePath"] = hisatp.EntryFilePath
	}
	if hisatp.Arguments != nil {
		objectMap["arguments"] = hisatp.Arguments
	}
	if hisatp.GetDebugInfo != "" {
		objectMap["getDebugInfo"] = hisatp.GetDebugInfo
	}
	if hisatp.SparkJobLinkedService != nil {
		objectMap["sparkJobLinkedService"] = hisatp.SparkJobLinkedService
	}
	if hisatp.ClassName != nil {
		objectMap["className"] = hisatp.ClassName
	}
	if hisatp.ProxyUser != nil {
		objectMap["proxyUser"] = hisatp.ProxyUser
	}
	if hisatp.SparkConfig != nil {
		objectMap["sparkConfig"] = hisatp.SparkConfig
	}
	return json.Marshal(objectMap)
}

// HDInsightStreamingActivity hDInsight streaming activity type.
type HDInsightStreamingActivity struct {
	// HDInsightStreamingActivityTypeProperties - HDInsight streaming activity properties.
	*HDInsightStreamingActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) MarshalJSON() ([]byte, error) {
	hisa.Type = TypeHDInsightStreaming
	objectMap := make(map[string]interface{})
	if hisa.HDInsightStreamingActivityTypeProperties != nil {
		objectMap["typeProperties"] = hisa.HDInsightStreamingActivityTypeProperties
	}
	if hisa.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = hisa.LinkedServiceName
	}
	if hisa.Policy != nil {
		objectMap["policy"] = hisa.Policy
	}
	if hisa.Name != nil {
		objectMap["name"] = hisa.Name
	}
	if hisa.Description != nil {
		objectMap["description"] = hisa.Description
	}
	if hisa.DependsOn != nil {
		objectMap["dependsOn"] = hisa.DependsOn
	}
	if hisa.Type != "" {
		objectMap["type"] = hisa.Type
	}
	for k, v := range hisa.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return &hisa, true
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &hisa, true
}

// AsFilterActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for HDInsightStreamingActivity.
func (hisa HDInsightStreamingActivity) AsBasicActivity() (BasicActivity, bool) {
	return &hisa, true
}

// UnmarshalJSON is the custom unmarshaler for HDInsightStreamingActivity struct.
func (hisa *HDInsightStreamingActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var hDInsightStreamingActivityTypeProperties HDInsightStreamingActivityTypeProperties
				err = json.Unmarshal(*v, &hDInsightStreamingActivityTypeProperties)
				if err != nil {
					return err
				}
				hisa.HDInsightStreamingActivityTypeProperties = &hDInsightStreamingActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				hisa.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				hisa.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hisa.AdditionalProperties == nil {
					hisa.AdditionalProperties = make(map[string]interface{})
				}
				hisa.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				hisa.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hisa.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				hisa.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hisa.Type = typeVar
			}
		}
	}

	return nil
}

// HDInsightStreamingActivityTypeProperties hDInsight streaming activity properties.
type HDInsightStreamingActivityTypeProperties struct {
	// StorageLinkedServices - Storage linked service references.
	StorageLinkedServices *[]LinkedServiceReference `json:"storageLinkedServices,omitempty"`
	// Arguments - User specified arguments to HDInsightActivity.
	Arguments *[]interface{} `json:"arguments,omitempty"`
	// GetDebugInfo - Debug info option. Possible values include: 'None', 'Always', 'Failure'
	GetDebugInfo HDInsightActivityDebugInfoOption `json:"getDebugInfo,omitempty"`
	// Mapper - Mapper executable name. Type: string (or Expression with resultType string).
	Mapper interface{} `json:"mapper,omitempty"`
	// Reducer - Reducer executable name. Type: string (or Expression with resultType string).
	Reducer interface{} `json:"reducer,omitempty"`
	// Input - Input blob path. Type: string (or Expression with resultType string).
	Input interface{} `json:"input,omitempty"`
	// Output - Output blob path. Type: string (or Expression with resultType string).
	Output interface{} `json:"output,omitempty"`
	// FilePaths - Paths to streaming job files. Can be directories.
	FilePaths *[]interface{} `json:"filePaths,omitempty"`
	// FileLinkedService - Linked service reference where the files are located.
	FileLinkedService *LinkedServiceReference `json:"fileLinkedService,omitempty"`
	// Combiner - Combiner executable name. Type: string (or Expression with resultType string).
	Combiner interface{} `json:"combiner,omitempty"`
	// CommandEnvironment - Command line environment values.
	CommandEnvironment *[]interface{} `json:"commandEnvironment,omitempty"`
	// Defines - Allows user to specify defines for streaming job request.
	Defines map[string]interface{} `json:"defines"`
}

// MarshalJSON is the custom marshaler for HDInsightStreamingActivityTypeProperties.
func (hisatp HDInsightStreamingActivityTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if hisatp.StorageLinkedServices != nil {
		objectMap["storageLinkedServices"] = hisatp.StorageLinkedServices
	}
	if hisatp.Arguments != nil {
		objectMap["arguments"] = hisatp.Arguments
	}
	if hisatp.GetDebugInfo != "" {
		objectMap["getDebugInfo"] = hisatp.GetDebugInfo
	}
	if hisatp.Mapper != nil {
		objectMap["mapper"] = hisatp.Mapper
	}
	if hisatp.Reducer != nil {
		objectMap["reducer"] = hisatp.Reducer
	}
	if hisatp.Input != nil {
		objectMap["input"] = hisatp.Input
	}
	if hisatp.Output != nil {
		objectMap["output"] = hisatp.Output
	}
	if hisatp.FilePaths != nil {
		objectMap["filePaths"] = hisatp.FilePaths
	}
	if hisatp.FileLinkedService != nil {
		objectMap["fileLinkedService"] = hisatp.FileLinkedService
	}
	if hisatp.Combiner != nil {
		objectMap["combiner"] = hisatp.Combiner
	}
	if hisatp.CommandEnvironment != nil {
		objectMap["commandEnvironment"] = hisatp.CommandEnvironment
	}
	if hisatp.Defines != nil {
		objectMap["defines"] = hisatp.Defines
	}
	return json.Marshal(objectMap)
}

// HiveLinkedService hive Server linked service.
type HiveLinkedService struct {
	// HiveLinkedServiceTypeProperties - Hive Server linked service properties.
	*HiveLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HiveLinkedService.
func (hls HiveLinkedService) MarshalJSON() ([]byte, error) {
	hls.Type = TypeHive
	objectMap := make(map[string]interface{})
	if hls.HiveLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = hls.HiveLinkedServiceTypeProperties
	}
	if hls.ConnectVia != nil {
		objectMap["connectVia"] = hls.ConnectVia
	}
	if hls.Description != nil {
		objectMap["description"] = hls.Description
	}
	if hls.Parameters != nil {
		objectMap["parameters"] = hls.Parameters
	}
	if hls.Annotations != nil {
		objectMap["annotations"] = hls.Annotations
	}
	if hls.Type != "" {
		objectMap["type"] = hls.Type
	}
	for k, v := range hls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return &hls, true
}

// AsHBaseLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for HiveLinkedService.
func (hls HiveLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &hls, true
}

// UnmarshalJSON is the custom unmarshaler for HiveLinkedService struct.
func (hls *HiveLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var hiveLinkedServiceTypeProperties HiveLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &hiveLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				hls.HiveLinkedServiceTypeProperties = &hiveLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hls.AdditionalProperties == nil {
					hls.AdditionalProperties = make(map[string]interface{})
				}
				hls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				hls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				hls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				hls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hls.Type = typeVar
			}
		}
	}

	return nil
}

// HiveLinkedServiceTypeProperties hive Server linked service properties.
type HiveLinkedServiceTypeProperties struct {
	// Host - IP address or host name of the Hive server, separated by ';' for multiple hosts (only when serviceDiscoveryMode is enable).
	Host interface{} `json:"host,omitempty"`
	// Port - The TCP port that the Hive server uses to listen for client connections.
	Port interface{} `json:"port,omitempty"`
	// ServerType - The type of Hive server. Possible values include: 'HiveServer1', 'HiveServer2', 'HiveThriftServer'
	ServerType HiveServerType `json:"serverType,omitempty"`
	// ThriftTransportProtocol - The transport protocol to use in the Thrift layer. Possible values include: 'Binary', 'SASL', 'HTTP'
	ThriftTransportProtocol HiveThriftTransportProtocol `json:"thriftTransportProtocol,omitempty"`
	// AuthenticationType - The authentication method used to access the Hive server. Possible values include: 'Anonymous', 'Username', 'UsernameAndPassword', 'WindowsAzureHDInsightService'
	AuthenticationType HiveAuthenticationType `json:"authenticationType,omitempty"`
	// ServiceDiscoveryMode - true to indicate using the ZooKeeper service, false not.
	ServiceDiscoveryMode interface{} `json:"serviceDiscoveryMode,omitempty"`
	// ZooKeeperNameSpace - The namespace on ZooKeeper under which Hive Server 2 nodes are added.
	ZooKeeperNameSpace interface{} `json:"zooKeeperNameSpace,omitempty"`
	// UseNativeQuery - Specifies whether the driver uses native HiveQL queries,or converts them into an equivalent form in HiveQL.
	UseNativeQuery interface{} `json:"useNativeQuery,omitempty"`
	// Username - The user name that you use to access Hive Server.
	Username interface{} `json:"username,omitempty"`
	// Password - The password corresponding to the user name that you provided in the Username field
	Password BasicSecretBase `json:"password,omitempty"`
	// HTTPPath - The partial URL corresponding to the Hive server.
	HTTPPath interface{} `json:"httpPath,omitempty"`
	// EnableSsl - Specifies whether the connections to the server are encrypted using SSL. The default value is false.
	EnableSsl interface{} `json:"enableSsl,omitempty"`
	// TrustedCertPath - 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 using SSL on self-hosted IR. The default value is the cacerts.pem file installed with the IR.
	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
	// UseSystemTrustStore - Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.
	UseSystemTrustStore interface{} `json:"useSystemTrustStore,omitempty"`
	// AllowHostNameCNMismatch - 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.
	AllowHostNameCNMismatch interface{} `json:"allowHostNameCNMismatch,omitempty"`
	// AllowSelfSignedServerCert - Specifies whether to allow self-signed certificates from the server. The default value is false.
	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for HiveLinkedServiceTypeProperties struct.
func (hlstp *HiveLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				hlstp.Host = host
			}
		case "port":
			if v != nil {
				var port interface{}
				err = json.Unmarshal(*v, &port)
				if err != nil {
					return err
				}
				hlstp.Port = port
			}
		case "serverType":
			if v != nil {
				var serverType HiveServerType
				err = json.Unmarshal(*v, &serverType)
				if err != nil {
					return err
				}
				hlstp.ServerType = serverType
			}
		case "thriftTransportProtocol":
			if v != nil {
				var thriftTransportProtocol HiveThriftTransportProtocol
				err = json.Unmarshal(*v, &thriftTransportProtocol)
				if err != nil {
					return err
				}
				hlstp.ThriftTransportProtocol = thriftTransportProtocol
			}
		case "authenticationType":
			if v != nil {
				var authenticationType HiveAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				hlstp.AuthenticationType = authenticationType
			}
		case "serviceDiscoveryMode":
			if v != nil {
				var serviceDiscoveryMode interface{}
				err = json.Unmarshal(*v, &serviceDiscoveryMode)
				if err != nil {
					return err
				}
				hlstp.ServiceDiscoveryMode = serviceDiscoveryMode
			}
		case "zooKeeperNameSpace":
			if v != nil {
				var zooKeeperNameSpace interface{}
				err = json.Unmarshal(*v, &zooKeeperNameSpace)
				if err != nil {
					return err
				}
				hlstp.ZooKeeperNameSpace = zooKeeperNameSpace
			}
		case "useNativeQuery":
			if v != nil {
				var useNativeQuery interface{}
				err = json.Unmarshal(*v, &useNativeQuery)
				if err != nil {
					return err
				}
				hlstp.UseNativeQuery = useNativeQuery
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				hlstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				hlstp.Password = password
			}
		case "httpPath":
			if v != nil {
				var HTTPPath interface{}
				err = json.Unmarshal(*v, &HTTPPath)
				if err != nil {
					return err
				}
				hlstp.HTTPPath = HTTPPath
			}
		case "enableSsl":
			if v != nil {
				var enableSsl interface{}
				err = json.Unmarshal(*v, &enableSsl)
				if err != nil {
					return err
				}
				hlstp.EnableSsl = enableSsl
			}
		case "trustedCertPath":
			if v != nil {
				var trustedCertPath interface{}
				err = json.Unmarshal(*v, &trustedCertPath)
				if err != nil {
					return err
				}
				hlstp.TrustedCertPath = trustedCertPath
			}
		case "useSystemTrustStore":
			if v != nil {
				var useSystemTrustStore interface{}
				err = json.Unmarshal(*v, &useSystemTrustStore)
				if err != nil {
					return err
				}
				hlstp.UseSystemTrustStore = useSystemTrustStore
			}
		case "allowHostNameCNMismatch":
			if v != nil {
				var allowHostNameCNMismatch interface{}
				err = json.Unmarshal(*v, &allowHostNameCNMismatch)
				if err != nil {
					return err
				}
				hlstp.AllowHostNameCNMismatch = allowHostNameCNMismatch
			}
		case "allowSelfSignedServerCert":
			if v != nil {
				var allowSelfSignedServerCert interface{}
				err = json.Unmarshal(*v, &allowSelfSignedServerCert)
				if err != nil {
					return err
				}
				hlstp.AllowSelfSignedServerCert = allowSelfSignedServerCert
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				hlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// HiveObjectDataset hive Server dataset.
type HiveObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HiveObjectDataset.
func (hod HiveObjectDataset) MarshalJSON() ([]byte, error) {
	hod.Type = TypeHiveObject
	objectMap := make(map[string]interface{})
	if hod.Description != nil {
		objectMap["description"] = hod.Description
	}
	if hod.Structure != nil {
		objectMap["structure"] = hod.Structure
	}
	if hod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = hod.LinkedServiceName
	}
	if hod.Parameters != nil {
		objectMap["parameters"] = hod.Parameters
	}
	if hod.Annotations != nil {
		objectMap["annotations"] = hod.Annotations
	}
	if hod.Type != "" {
		objectMap["type"] = hod.Type
	}
	for k, v := range hod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return &hod, true
}

// AsHBaseObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for HiveObjectDataset.
func (hod HiveObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &hod, true
}

// UnmarshalJSON is the custom unmarshaler for HiveObjectDataset struct.
func (hod *HiveObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hod.AdditionalProperties == nil {
					hod.AdditionalProperties = make(map[string]interface{})
				}
				hod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				hod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				hod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				hod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				hod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hod.Type = typeVar
			}
		}
	}

	return nil
}

// HiveSource a copy activity Hive Server source.
type HiveSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HiveSource.
func (hs HiveSource) MarshalJSON() ([]byte, error) {
	hs.Type = TypeHiveSource
	objectMap := make(map[string]interface{})
	if hs.Query != nil {
		objectMap["query"] = hs.Query
	}
	if hs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = hs.SourceRetryCount
	}
	if hs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = hs.SourceRetryWait
	}
	if hs.Type != "" {
		objectMap["type"] = hs.Type
	}
	for k, v := range hs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsHiveSource() (*HiveSource, bool) {
	return &hs, true
}

// AsHBaseSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for HiveSource.
func (hs HiveSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &hs, true
}

// UnmarshalJSON is the custom unmarshaler for HiveSource struct.
func (hs *HiveSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				hs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hs.AdditionalProperties == nil {
					hs.AdditionalProperties = make(map[string]interface{})
				}
				hs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				hs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				hs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hs.Type = typeVar
			}
		}
	}

	return nil
}

// HTTPDataset a file in an HTTP web server.
type HTTPDataset struct {
	// HTTPDatasetTypeProperties - Properties specific to this dataset type.
	*HTTPDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HTTPDataset.
func (hd HTTPDataset) MarshalJSON() ([]byte, error) {
	hd.Type = TypeHTTPFile
	objectMap := make(map[string]interface{})
	if hd.HTTPDatasetTypeProperties != nil {
		objectMap["typeProperties"] = hd.HTTPDatasetTypeProperties
	}
	if hd.Description != nil {
		objectMap["description"] = hd.Description
	}
	if hd.Structure != nil {
		objectMap["structure"] = hd.Structure
	}
	if hd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = hd.LinkedServiceName
	}
	if hd.Parameters != nil {
		objectMap["parameters"] = hd.Parameters
	}
	if hd.Annotations != nil {
		objectMap["annotations"] = hd.Annotations
	}
	if hd.Type != "" {
		objectMap["type"] = hd.Type
	}
	for k, v := range hd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return &hd, true
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for HTTPDataset.
func (hd HTTPDataset) AsBasicDataset() (BasicDataset, bool) {
	return &hd, true
}

// UnmarshalJSON is the custom unmarshaler for HTTPDataset struct.
func (hd *HTTPDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var HTTPDatasetTypeProperties HTTPDatasetTypeProperties
				err = json.Unmarshal(*v, &HTTPDatasetTypeProperties)
				if err != nil {
					return err
				}
				hd.HTTPDatasetTypeProperties = &HTTPDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hd.AdditionalProperties == nil {
					hd.AdditionalProperties = make(map[string]interface{})
				}
				hd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				hd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				hd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				hd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				hd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hd.Type = typeVar
			}
		}
	}

	return nil
}

// HTTPDatasetTypeProperties properties specific to this dataset type.
type HTTPDatasetTypeProperties struct {
	// RelativeURL - The relative URL based on the URL in the HttpLinkedService refers to an HTTP file Type: string (or Expression with resultType string).
	RelativeURL interface{} `json:"relativeUrl,omitempty"`
	// RequestMethod - The HTTP method for the HTTP request. Type: string (or Expression with resultType string).
	RequestMethod interface{} `json:"requestMethod,omitempty"`
	// RequestBody - The body for the HTTP request. Type: string (or Expression with resultType string).
	RequestBody interface{} `json:"requestBody,omitempty"`
	// AdditionalHeaders - 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 with resultType string).
	AdditionalHeaders interface{} `json:"additionalHeaders,omitempty"`
	// Format - The format of files.
	Format BasicDatasetStorageFormat `json:"format,omitempty"`
	// Compression - The data compression method used on files.
	Compression BasicDatasetCompression `json:"compression,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for HTTPDatasetTypeProperties struct.
func (hdtp *HTTPDatasetTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "relativeUrl":
			if v != nil {
				var relativeURL interface{}
				err = json.Unmarshal(*v, &relativeURL)
				if err != nil {
					return err
				}
				hdtp.RelativeURL = relativeURL
			}
		case "requestMethod":
			if v != nil {
				var requestMethod interface{}
				err = json.Unmarshal(*v, &requestMethod)
				if err != nil {
					return err
				}
				hdtp.RequestMethod = requestMethod
			}
		case "requestBody":
			if v != nil {
				var requestBody interface{}
				err = json.Unmarshal(*v, &requestBody)
				if err != nil {
					return err
				}
				hdtp.RequestBody = requestBody
			}
		case "additionalHeaders":
			if v != nil {
				var additionalHeaders interface{}
				err = json.Unmarshal(*v, &additionalHeaders)
				if err != nil {
					return err
				}
				hdtp.AdditionalHeaders = additionalHeaders
			}
		case "format":
			if v != nil {
				formatVar, err := unmarshalBasicDatasetStorageFormat(*v)
				if err != nil {
					return err
				}
				hdtp.Format = formatVar
			}
		case "compression":
			if v != nil {
				compression, err := unmarshalBasicDatasetCompression(*v)
				if err != nil {
					return err
				}
				hdtp.Compression = compression
			}
		}
	}

	return nil
}

// HTTPLinkedService linked service for an HTTP source.
type HTTPLinkedService struct {
	// HTTPLinkedServiceTypeProperties - Properties specific to this linked service type.
	*HTTPLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HTTPLinkedService.
func (hls HTTPLinkedService) MarshalJSON() ([]byte, error) {
	hls.Type = TypeHTTPServer
	objectMap := make(map[string]interface{})
	if hls.HTTPLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = hls.HTTPLinkedServiceTypeProperties
	}
	if hls.ConnectVia != nil {
		objectMap["connectVia"] = hls.ConnectVia
	}
	if hls.Description != nil {
		objectMap["description"] = hls.Description
	}
	if hls.Parameters != nil {
		objectMap["parameters"] = hls.Parameters
	}
	if hls.Annotations != nil {
		objectMap["annotations"] = hls.Annotations
	}
	if hls.Type != "" {
		objectMap["type"] = hls.Type
	}
	for k, v := range hls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return &hls, true
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for HTTPLinkedService.
func (hls HTTPLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &hls, true
}

// UnmarshalJSON is the custom unmarshaler for HTTPLinkedService struct.
func (hls *HTTPLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var HTTPLinkedServiceTypeProperties HTTPLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &HTTPLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				hls.HTTPLinkedServiceTypeProperties = &HTTPLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hls.AdditionalProperties == nil {
					hls.AdditionalProperties = make(map[string]interface{})
				}
				hls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				hls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				hls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				hls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hls.Type = typeVar
			}
		}
	}

	return nil
}

// HTTPLinkedServiceTypeProperties properties specific to this linked service type.
type HTTPLinkedServiceTypeProperties struct {
	// URL - The base URL of the HTTP endpoint, e.g. http://www.microsoft.com. Type: string (or Expression with resultType string).
	URL interface{} `json:"url,omitempty"`
	// AuthenticationType - The authentication type to be used to connect to the HTTP server. Possible values include: 'HTTPAuthenticationTypeBasic', 'HTTPAuthenticationTypeAnonymous', 'HTTPAuthenticationTypeDigest', 'HTTPAuthenticationTypeWindows', 'HTTPAuthenticationTypeClientCertificate'
	AuthenticationType HTTPAuthenticationType `json:"authenticationType,omitempty"`
	// UserName - User name for Basic, Digest, or Windows authentication. Type: string (or Expression with resultType string).
	UserName interface{} `json:"userName,omitempty"`
	// Password - Password for Basic, Digest, Windows, or ClientCertificate with EmbeddedCertData authentication.
	Password BasicSecretBase `json:"password,omitempty"`
	// EmbeddedCertData - Base64 encoded certificate data for ClientCertificate authentication. For on-premises copy with ClientCertificate authentication, either CertThumbprint or EmbeddedCertData/Password should be specified. Type: string (or Expression with resultType string).
	EmbeddedCertData interface{} `json:"embeddedCertData,omitempty"`
	// CertThumbprint - Thumbprint of certificate for ClientCertificate authentication. Only valid for on-premises copy. For on-premises copy with ClientCertificate authentication, either CertThumbprint or EmbeddedCertData/Password should be specified. Type: string (or Expression with resultType string).
	CertThumbprint interface{} `json:"certThumbprint,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
	// EnableServerCertificateValidation - If true, validate the HTTPS server SSL certificate. Default value is true. Type: boolean (or Expression with resultType boolean).
	EnableServerCertificateValidation interface{} `json:"enableServerCertificateValidation,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for HTTPLinkedServiceTypeProperties struct.
func (hlstp *HTTPLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "url":
			if v != nil {
				var URL interface{}
				err = json.Unmarshal(*v, &URL)
				if err != nil {
					return err
				}
				hlstp.URL = URL
			}
		case "authenticationType":
			if v != nil {
				var authenticationType HTTPAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				hlstp.AuthenticationType = authenticationType
			}
		case "userName":
			if v != nil {
				var userName interface{}
				err = json.Unmarshal(*v, &userName)
				if err != nil {
					return err
				}
				hlstp.UserName = userName
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				hlstp.Password = password
			}
		case "embeddedCertData":
			if v != nil {
				var embeddedCertData interface{}
				err = json.Unmarshal(*v, &embeddedCertData)
				if err != nil {
					return err
				}
				hlstp.EmbeddedCertData = embeddedCertData
			}
		case "certThumbprint":
			if v != nil {
				var certThumbprint interface{}
				err = json.Unmarshal(*v, &certThumbprint)
				if err != nil {
					return err
				}
				hlstp.CertThumbprint = certThumbprint
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				hlstp.EncryptedCredential = encryptedCredential
			}
		case "enableServerCertificateValidation":
			if v != nil {
				var enableServerCertificateValidation interface{}
				err = json.Unmarshal(*v, &enableServerCertificateValidation)
				if err != nil {
					return err
				}
				hlstp.EnableServerCertificateValidation = enableServerCertificateValidation
			}
		}
	}

	return nil
}

// HTTPSource a copy activity source for an HTTP file.
type HTTPSource struct {
	// HTTPRequestTimeout - Specifies the timeout for a HTTP client to get HTTP response from HTTP server. The default value is equivalent to System.Net.HttpWebRequest.Timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	HTTPRequestTimeout interface{} `json:"httpRequestTimeout,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HTTPSource.
func (hs HTTPSource) MarshalJSON() ([]byte, error) {
	hs.Type = TypeHTTPSource
	objectMap := make(map[string]interface{})
	if hs.HTTPRequestTimeout != nil {
		objectMap["httpRequestTimeout"] = hs.HTTPRequestTimeout
	}
	if hs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = hs.SourceRetryCount
	}
	if hs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = hs.SourceRetryWait
	}
	if hs.Type != "" {
		objectMap["type"] = hs.Type
	}
	for k, v := range hs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsHTTPSource() (*HTTPSource, bool) {
	return &hs, true
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for HTTPSource.
func (hs HTTPSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &hs, true
}

// UnmarshalJSON is the custom unmarshaler for HTTPSource struct.
func (hs *HTTPSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "httpRequestTimeout":
			if v != nil {
				var HTTPRequestTimeout interface{}
				err = json.Unmarshal(*v, &HTTPRequestTimeout)
				if err != nil {
					return err
				}
				hs.HTTPRequestTimeout = HTTPRequestTimeout
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hs.AdditionalProperties == nil {
					hs.AdditionalProperties = make(map[string]interface{})
				}
				hs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				hs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				hs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hs.Type = typeVar
			}
		}
	}

	return nil
}

// HubspotLinkedService hubspot Service linked service.
type HubspotLinkedService struct {
	// HubspotLinkedServiceTypeProperties - Hubspot Service linked service properties.
	*HubspotLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HubspotLinkedService.
func (hls HubspotLinkedService) MarshalJSON() ([]byte, error) {
	hls.Type = TypeHubspot
	objectMap := make(map[string]interface{})
	if hls.HubspotLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = hls.HubspotLinkedServiceTypeProperties
	}
	if hls.ConnectVia != nil {
		objectMap["connectVia"] = hls.ConnectVia
	}
	if hls.Description != nil {
		objectMap["description"] = hls.Description
	}
	if hls.Parameters != nil {
		objectMap["parameters"] = hls.Parameters
	}
	if hls.Annotations != nil {
		objectMap["annotations"] = hls.Annotations
	}
	if hls.Type != "" {
		objectMap["type"] = hls.Type
	}
	for k, v := range hls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return &hls, true
}

// AsHiveLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for HubspotLinkedService.
func (hls HubspotLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &hls, true
}

// UnmarshalJSON is the custom unmarshaler for HubspotLinkedService struct.
func (hls *HubspotLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var hubspotLinkedServiceTypeProperties HubspotLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &hubspotLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				hls.HubspotLinkedServiceTypeProperties = &hubspotLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hls.AdditionalProperties == nil {
					hls.AdditionalProperties = make(map[string]interface{})
				}
				hls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				hls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				hls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				hls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hls.Type = typeVar
			}
		}
	}

	return nil
}

// HubspotLinkedServiceTypeProperties hubspot Service linked service properties.
type HubspotLinkedServiceTypeProperties struct {
	// ClientID - The client ID associated with your Hubspot application.
	ClientID interface{} `json:"clientId,omitempty"`
	// ClientSecret - The client secret associated with your Hubspot application.
	ClientSecret BasicSecretBase `json:"clientSecret,omitempty"`
	// AccessToken - The access token obtained when initially authenticating your OAuth integration.
	AccessToken BasicSecretBase `json:"accessToken,omitempty"`
	// RefreshToken - The refresh token obtained when initially authenticating your OAuth integration.
	RefreshToken BasicSecretBase `json:"refreshToken,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true.
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for HubspotLinkedServiceTypeProperties struct.
func (hlstp *HubspotLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "clientId":
			if v != nil {
				var clientID interface{}
				err = json.Unmarshal(*v, &clientID)
				if err != nil {
					return err
				}
				hlstp.ClientID = clientID
			}
		case "clientSecret":
			if v != nil {
				clientSecret, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				hlstp.ClientSecret = clientSecret
			}
		case "accessToken":
			if v != nil {
				accessToken, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				hlstp.AccessToken = accessToken
			}
		case "refreshToken":
			if v != nil {
				refreshToken, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				hlstp.RefreshToken = refreshToken
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				hlstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				hlstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				hlstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				hlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// HubspotObjectDataset hubspot Service dataset.
type HubspotObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HubspotObjectDataset.
func (hod HubspotObjectDataset) MarshalJSON() ([]byte, error) {
	hod.Type = TypeHubspotObject
	objectMap := make(map[string]interface{})
	if hod.Description != nil {
		objectMap["description"] = hod.Description
	}
	if hod.Structure != nil {
		objectMap["structure"] = hod.Structure
	}
	if hod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = hod.LinkedServiceName
	}
	if hod.Parameters != nil {
		objectMap["parameters"] = hod.Parameters
	}
	if hod.Annotations != nil {
		objectMap["annotations"] = hod.Annotations
	}
	if hod.Type != "" {
		objectMap["type"] = hod.Type
	}
	for k, v := range hod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return &hod, true
}

// AsHiveObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for HubspotObjectDataset.
func (hod HubspotObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &hod, true
}

// UnmarshalJSON is the custom unmarshaler for HubspotObjectDataset struct.
func (hod *HubspotObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hod.AdditionalProperties == nil {
					hod.AdditionalProperties = make(map[string]interface{})
				}
				hod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				hod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				hod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				hod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				hod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				hod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hod.Type = typeVar
			}
		}
	}

	return nil
}

// HubspotSource a copy activity Hubspot Service source.
type HubspotSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for HubspotSource.
func (hs HubspotSource) MarshalJSON() ([]byte, error) {
	hs.Type = TypeHubspotSource
	objectMap := make(map[string]interface{})
	if hs.Query != nil {
		objectMap["query"] = hs.Query
	}
	if hs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = hs.SourceRetryCount
	}
	if hs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = hs.SourceRetryWait
	}
	if hs.Type != "" {
		objectMap["type"] = hs.Type
	}
	for k, v := range hs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsHubspotSource() (*HubspotSource, bool) {
	return &hs, true
}

// AsHiveSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for HubspotSource.
func (hs HubspotSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &hs, true
}

// UnmarshalJSON is the custom unmarshaler for HubspotSource struct.
func (hs *HubspotSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				hs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if hs.AdditionalProperties == nil {
					hs.AdditionalProperties = make(map[string]interface{})
				}
				hs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				hs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				hs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				hs.Type = typeVar
			}
		}
	}

	return nil
}

// IfConditionActivity this activity evaluates a boolean expression and executes either the activities
// under the ifTrueActivities property or the ifFalseActivities property depending on the result of the
// expression.
type IfConditionActivity struct {
	// IfConditionActivityTypeProperties - IfCondition activity properties.
	*IfConditionActivityTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for IfConditionActivity.
func (ica IfConditionActivity) MarshalJSON() ([]byte, error) {
	ica.Type = TypeIfCondition
	objectMap := make(map[string]interface{})
	if ica.IfConditionActivityTypeProperties != nil {
		objectMap["typeProperties"] = ica.IfConditionActivityTypeProperties
	}
	if ica.Name != nil {
		objectMap["name"] = ica.Name
	}
	if ica.Description != nil {
		objectMap["description"] = ica.Description
	}
	if ica.DependsOn != nil {
		objectMap["dependsOn"] = ica.DependsOn
	}
	if ica.Type != "" {
		objectMap["type"] = ica.Type
	}
	for k, v := range ica.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return nil, false
}

// AsFilterActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return &ica, true
}

// AsExecutePipelineActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return &ica, true
}

// AsActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for IfConditionActivity.
func (ica IfConditionActivity) AsBasicActivity() (BasicActivity, bool) {
	return &ica, true
}

// UnmarshalJSON is the custom unmarshaler for IfConditionActivity struct.
func (ica *IfConditionActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var ifConditionActivityTypeProperties IfConditionActivityTypeProperties
				err = json.Unmarshal(*v, &ifConditionActivityTypeProperties)
				if err != nil {
					return err
				}
				ica.IfConditionActivityTypeProperties = &ifConditionActivityTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ica.AdditionalProperties == nil {
					ica.AdditionalProperties = make(map[string]interface{})
				}
				ica.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				ica.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ica.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				ica.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ica.Type = typeVar
			}
		}
	}

	return nil
}

// IfConditionActivityTypeProperties ifCondition activity properties.
type IfConditionActivityTypeProperties struct {
	// Expression - An expression that would evaluate to Boolean. This is used to determine the block of activities (ifTrueActivities or ifFalseActivities) that will be executed.
	Expression *Expression `json:"expression,omitempty"`
	// IfTrueActivities - 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 action.
	IfTrueActivities *[]BasicActivity `json:"ifTrueActivities,omitempty"`
	// IfFalseActivities - 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 action.
	IfFalseActivities *[]BasicActivity `json:"ifFalseActivities,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for IfConditionActivityTypeProperties struct.
func (icatp *IfConditionActivityTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "expression":
			if v != nil {
				var expression Expression
				err = json.Unmarshal(*v, &expression)
				if err != nil {
					return err
				}
				icatp.Expression = &expression
			}
		case "ifTrueActivities":
			if v != nil {
				ifTrueActivities, err := unmarshalBasicActivityArray(*v)
				if err != nil {
					return err
				}
				icatp.IfTrueActivities = &ifTrueActivities
			}
		case "ifFalseActivities":
			if v != nil {
				ifFalseActivities, err := unmarshalBasicActivityArray(*v)
				if err != nil {
					return err
				}
				icatp.IfFalseActivities = &ifFalseActivities
			}
		}
	}

	return nil
}

// ImpalaLinkedService impala server linked service.
type ImpalaLinkedService struct {
	// ImpalaLinkedServiceTypeProperties - Impala server linked service properties.
	*ImpalaLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ImpalaLinkedService.
func (ils ImpalaLinkedService) MarshalJSON() ([]byte, error) {
	ils.Type = TypeImpala
	objectMap := make(map[string]interface{})
	if ils.ImpalaLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = ils.ImpalaLinkedServiceTypeProperties
	}
	if ils.ConnectVia != nil {
		objectMap["connectVia"] = ils.ConnectVia
	}
	if ils.Description != nil {
		objectMap["description"] = ils.Description
	}
	if ils.Parameters != nil {
		objectMap["parameters"] = ils.Parameters
	}
	if ils.Annotations != nil {
		objectMap["annotations"] = ils.Annotations
	}
	if ils.Type != "" {
		objectMap["type"] = ils.Type
	}
	for k, v := range ils.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return &ils, true
}

// AsHubspotLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for ImpalaLinkedService.
func (ils ImpalaLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &ils, true
}

// UnmarshalJSON is the custom unmarshaler for ImpalaLinkedService struct.
func (ils *ImpalaLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var impalaLinkedServiceTypeProperties ImpalaLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &impalaLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				ils.ImpalaLinkedServiceTypeProperties = &impalaLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ils.AdditionalProperties == nil {
					ils.AdditionalProperties = make(map[string]interface{})
				}
				ils.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				ils.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ils.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				ils.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				ils.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ils.Type = typeVar
			}
		}
	}

	return nil
}

// ImpalaLinkedServiceTypeProperties impala server linked service properties.
type ImpalaLinkedServiceTypeProperties struct {
	// Host - The IP address or host name of the Impala server. (i.e. 192.168.222.160)
	Host interface{} `json:"host,omitempty"`
	// Port - The TCP port that the Impala server uses to listen for client connections. The default value is 21050.
	Port interface{} `json:"port,omitempty"`
	// AuthenticationType - The authentication type to use. Possible values include: 'ImpalaAuthenticationTypeAnonymous', 'ImpalaAuthenticationTypeSASLUsername', 'ImpalaAuthenticationTypeUsernameAndPassword'
	AuthenticationType ImpalaAuthenticationType `json:"authenticationType,omitempty"`
	// Username - The user name used to access the Impala server. The default value is anonymous when using SASLUsername.
	Username interface{} `json:"username,omitempty"`
	// Password - The password corresponding to the user name when using UsernameAndPassword.
	Password BasicSecretBase `json:"password,omitempty"`
	// EnableSsl - Specifies whether the connections to the server are encrypted using SSL. The default value is false.
	EnableSsl interface{} `json:"enableSsl,omitempty"`
	// TrustedCertPath - 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 using SSL on self-hosted IR. The default value is the cacerts.pem file installed with the IR.
	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
	// UseSystemTrustStore - Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.
	UseSystemTrustStore interface{} `json:"useSystemTrustStore,omitempty"`
	// AllowHostNameCNMismatch - 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.
	AllowHostNameCNMismatch interface{} `json:"allowHostNameCNMismatch,omitempty"`
	// AllowSelfSignedServerCert - Specifies whether to allow self-signed certificates from the server. The default value is false.
	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for ImpalaLinkedServiceTypeProperties struct.
func (ilstp *ImpalaLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				ilstp.Host = host
			}
		case "port":
			if v != nil {
				var port interface{}
				err = json.Unmarshal(*v, &port)
				if err != nil {
					return err
				}
				ilstp.Port = port
			}
		case "authenticationType":
			if v != nil {
				var authenticationType ImpalaAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				ilstp.AuthenticationType = authenticationType
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				ilstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				ilstp.Password = password
			}
		case "enableSsl":
			if v != nil {
				var enableSsl interface{}
				err = json.Unmarshal(*v, &enableSsl)
				if err != nil {
					return err
				}
				ilstp.EnableSsl = enableSsl
			}
		case "trustedCertPath":
			if v != nil {
				var trustedCertPath interface{}
				err = json.Unmarshal(*v, &trustedCertPath)
				if err != nil {
					return err
				}
				ilstp.TrustedCertPath = trustedCertPath
			}
		case "useSystemTrustStore":
			if v != nil {
				var useSystemTrustStore interface{}
				err = json.Unmarshal(*v, &useSystemTrustStore)
				if err != nil {
					return err
				}
				ilstp.UseSystemTrustStore = useSystemTrustStore
			}
		case "allowHostNameCNMismatch":
			if v != nil {
				var allowHostNameCNMismatch interface{}
				err = json.Unmarshal(*v, &allowHostNameCNMismatch)
				if err != nil {
					return err
				}
				ilstp.AllowHostNameCNMismatch = allowHostNameCNMismatch
			}
		case "allowSelfSignedServerCert":
			if v != nil {
				var allowSelfSignedServerCert interface{}
				err = json.Unmarshal(*v, &allowSelfSignedServerCert)
				if err != nil {
					return err
				}
				ilstp.AllowSelfSignedServerCert = allowSelfSignedServerCert
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				ilstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// ImpalaObjectDataset impala server dataset.
type ImpalaObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) MarshalJSON() ([]byte, error) {
	iod.Type = TypeImpalaObject
	objectMap := make(map[string]interface{})
	if iod.Description != nil {
		objectMap["description"] = iod.Description
	}
	if iod.Structure != nil {
		objectMap["structure"] = iod.Structure
	}
	if iod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = iod.LinkedServiceName
	}
	if iod.Parameters != nil {
		objectMap["parameters"] = iod.Parameters
	}
	if iod.Annotations != nil {
		objectMap["annotations"] = iod.Annotations
	}
	if iod.Type != "" {
		objectMap["type"] = iod.Type
	}
	for k, v := range iod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return &iod, true
}

// AsHubspotObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for ImpalaObjectDataset.
func (iod ImpalaObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &iod, true
}

// UnmarshalJSON is the custom unmarshaler for ImpalaObjectDataset struct.
func (iod *ImpalaObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if iod.AdditionalProperties == nil {
					iod.AdditionalProperties = make(map[string]interface{})
				}
				iod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				iod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				iod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				iod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				iod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				iod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				iod.Type = typeVar
			}
		}
	}

	return nil
}

// ImpalaSource a copy activity Impala server source.
type ImpalaSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ImpalaSource.
func (is ImpalaSource) MarshalJSON() ([]byte, error) {
	is.Type = TypeImpalaSource
	objectMap := make(map[string]interface{})
	if is.Query != nil {
		objectMap["query"] = is.Query
	}
	if is.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = is.SourceRetryCount
	}
	if is.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = is.SourceRetryWait
	}
	if is.Type != "" {
		objectMap["type"] = is.Type
	}
	for k, v := range is.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsImpalaSource() (*ImpalaSource, bool) {
	return &is, true
}

// AsHubspotSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for ImpalaSource.
func (is ImpalaSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &is, true
}

// UnmarshalJSON is the custom unmarshaler for ImpalaSource struct.
func (is *ImpalaSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				is.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if is.AdditionalProperties == nil {
					is.AdditionalProperties = make(map[string]interface{})
				}
				is.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				is.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				is.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				is.Type = typeVar
			}
		}
	}

	return nil
}

// BasicIntegrationRuntime azure Data Factory nested object which serves as a compute resource for activities.
type BasicIntegrationRuntime interface {
	AsSelfHostedIntegrationRuntime() (*SelfHostedIntegrationRuntime, bool)
	AsManagedIntegrationRuntime() (*ManagedIntegrationRuntime, bool)
	AsIntegrationRuntime() (*IntegrationRuntime, bool)
}

// IntegrationRuntime azure Data Factory nested object which serves as a compute resource for activities.
type IntegrationRuntime struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Integration runtime description.
	Description *string `json:"description,omitempty"`
	// Type - Possible values include: 'TypeIntegrationRuntime', 'TypeSelfHosted', 'TypeManaged'
	Type TypeBasicIntegrationRuntime `json:"type,omitempty"`
}

func unmarshalBasicIntegrationRuntime(body []byte) (BasicIntegrationRuntime, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeSelfHosted):
		var shir SelfHostedIntegrationRuntime
		err := json.Unmarshal(body, &shir)
		return shir, err
	case string(TypeManaged):
		var mir ManagedIntegrationRuntime
		err := json.Unmarshal(body, &mir)
		return mir, err
	default:
		var ir IntegrationRuntime
		err := json.Unmarshal(body, &ir)
		return ir, err
	}
}
func unmarshalBasicIntegrationRuntimeArray(body []byte) ([]BasicIntegrationRuntime, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	irArray := make([]BasicIntegrationRuntime, len(rawMessages))

	for index, rawMessage := range rawMessages {
		ir, err := unmarshalBasicIntegrationRuntime(*rawMessage)
		if err != nil {
			return nil, err
		}
		irArray[index] = ir
	}
	return irArray, nil
}

// MarshalJSON is the custom marshaler for IntegrationRuntime.
func (ir IntegrationRuntime) MarshalJSON() ([]byte, error) {
	ir.Type = TypeIntegrationRuntime
	objectMap := make(map[string]interface{})
	if ir.Description != nil {
		objectMap["description"] = ir.Description
	}
	if ir.Type != "" {
		objectMap["type"] = ir.Type
	}
	for k, v := range ir.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSelfHostedIntegrationRuntime is the BasicIntegrationRuntime implementation for IntegrationRuntime.
func (ir IntegrationRuntime) AsSelfHostedIntegrationRuntime() (*SelfHostedIntegrationRuntime, bool) {
	return nil, false
}

// AsManagedIntegrationRuntime is the BasicIntegrationRuntime implementation for IntegrationRuntime.
func (ir IntegrationRuntime) AsManagedIntegrationRuntime() (*ManagedIntegrationRuntime, bool) {
	return nil, false
}

// AsIntegrationRuntime is the BasicIntegrationRuntime implementation for IntegrationRuntime.
func (ir IntegrationRuntime) AsIntegrationRuntime() (*IntegrationRuntime, bool) {
	return &ir, true
}

// AsBasicIntegrationRuntime is the BasicIntegrationRuntime implementation for IntegrationRuntime.
func (ir IntegrationRuntime) AsBasicIntegrationRuntime() (BasicIntegrationRuntime, bool) {
	return &ir, true
}

// UnmarshalJSON is the custom unmarshaler for IntegrationRuntime struct.
func (ir *IntegrationRuntime) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ir.AdditionalProperties == nil {
					ir.AdditionalProperties = make(map[string]interface{})
				}
				ir.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ir.Description = &description
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicIntegrationRuntime
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ir.Type = typeVar
			}
		}
	}

	return nil
}

// IntegrationRuntimeAuthKeys the integration runtime authentication keys.
type IntegrationRuntimeAuthKeys struct {
	autorest.Response `json:"-"`
	// AuthKey1 - The primary integration runtime authentication key.
	AuthKey1 *string `json:"authKey1,omitempty"`
	// AuthKey2 - The secondary integration runtime authentication key.
	AuthKey2 *string `json:"authKey2,omitempty"`
}

// IntegrationRuntimeComputeProperties the compute resource properties for managed integration runtime.
type IntegrationRuntimeComputeProperties struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Location - The location for managed integration runtime. The supported regions could be found on https://docs.microsoft.com/en-us/azure/data-factory/data-factory-data-movement-activities
	Location *string `json:"location,omitempty"`
	// NodeSize - The node size requirement to managed integration runtime.
	NodeSize *string `json:"nodeSize,omitempty"`
	// NumberOfNodes - The required number of nodes for managed integration runtime.
	NumberOfNodes *int32 `json:"numberOfNodes,omitempty"`
	// MaxParallelExecutionsPerNode - Maximum parallel executions count per node for managed integration runtime.
	MaxParallelExecutionsPerNode *int32 `json:"maxParallelExecutionsPerNode,omitempty"`
	// VNetProperties - VNet properties for managed integration runtime.
	VNetProperties *IntegrationRuntimeVNetProperties `json:"vNetProperties,omitempty"`
}

// MarshalJSON is the custom marshaler for IntegrationRuntimeComputeProperties.
func (ircp IntegrationRuntimeComputeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if ircp.Location != nil {
		objectMap["location"] = ircp.Location
	}
	if ircp.NodeSize != nil {
		objectMap["nodeSize"] = ircp.NodeSize
	}
	if ircp.NumberOfNodes != nil {
		objectMap["numberOfNodes"] = ircp.NumberOfNodes
	}
	if ircp.MaxParallelExecutionsPerNode != nil {
		objectMap["maxParallelExecutionsPerNode"] = ircp.MaxParallelExecutionsPerNode
	}
	if ircp.VNetProperties != nil {
		objectMap["vNetProperties"] = ircp.VNetProperties
	}
	for k, v := range ircp.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeComputeProperties struct.
func (ircp *IntegrationRuntimeComputeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ircp.AdditionalProperties == nil {
					ircp.AdditionalProperties = make(map[string]interface{})
				}
				ircp.AdditionalProperties[k] = additionalProperties
			}
		case "location":
			if v != nil {
				var location string
				err = json.Unmarshal(*v, &location)
				if err != nil {
					return err
				}
				ircp.Location = &location
			}
		case "nodeSize":
			if v != nil {
				var nodeSize string
				err = json.Unmarshal(*v, &nodeSize)
				if err != nil {
					return err
				}
				ircp.NodeSize = &nodeSize
			}
		case "numberOfNodes":
			if v != nil {
				var numberOfNodes int32
				err = json.Unmarshal(*v, &numberOfNodes)
				if err != nil {
					return err
				}
				ircp.NumberOfNodes = &numberOfNodes
			}
		case "maxParallelExecutionsPerNode":
			if v != nil {
				var maxParallelExecutionsPerNode int32
				err = json.Unmarshal(*v, &maxParallelExecutionsPerNode)
				if err != nil {
					return err
				}
				ircp.MaxParallelExecutionsPerNode = &maxParallelExecutionsPerNode
			}
		case "vNetProperties":
			if v != nil {
				var vNetProperties IntegrationRuntimeVNetProperties
				err = json.Unmarshal(*v, &vNetProperties)
				if err != nil {
					return err
				}
				ircp.VNetProperties = &vNetProperties
			}
		}
	}

	return nil
}

// IntegrationRuntimeConnectionInfo connection information for encrypting the on-premises data source
// credentials.
type IntegrationRuntimeConnectionInfo struct {
	autorest.Response `json:"-"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ServiceToken - READ-ONLY; The token generated in service. Callers use this token to authenticate to integration runtime.
	ServiceToken *string `json:"serviceToken,omitempty"`
	// IdentityCertThumbprint - READ-ONLY; The integration runtime SSL certificate thumbprint. Click-Once application uses it to do server validation.
	IdentityCertThumbprint *string `json:"identityCertThumbprint,omitempty"`
	// HostServiceURI - READ-ONLY; The on-premises integration runtime host URL.
	HostServiceURI *string `json:"hostServiceUri,omitempty"`
	// Version - READ-ONLY; The integration runtime version.
	Version *string `json:"version,omitempty"`
	// PublicKey - READ-ONLY; The public key for encrypting a credential when transferring the credential to the integration runtime.
	PublicKey *string `json:"publicKey,omitempty"`
	// IsIdentityCertExprired - READ-ONLY; Whether the identity certificate is expired.
	IsIdentityCertExprired *bool `json:"isIdentityCertExprired,omitempty"`
}

// MarshalJSON is the custom marshaler for IntegrationRuntimeConnectionInfo.
func (irci IntegrationRuntimeConnectionInfo) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	for k, v := range irci.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeConnectionInfo struct.
func (irci *IntegrationRuntimeConnectionInfo) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if irci.AdditionalProperties == nil {
					irci.AdditionalProperties = make(map[string]interface{})
				}
				irci.AdditionalProperties[k] = additionalProperties
			}
		case "serviceToken":
			if v != nil {
				var serviceToken string
				err = json.Unmarshal(*v, &serviceToken)
				if err != nil {
					return err
				}
				irci.ServiceToken = &serviceToken
			}
		case "identityCertThumbprint":
			if v != nil {
				var identityCertThumbprint string
				err = json.Unmarshal(*v, &identityCertThumbprint)
				if err != nil {
					return err
				}
				irci.IdentityCertThumbprint = &identityCertThumbprint
			}
		case "hostServiceUri":
			if v != nil {
				var hostServiceURI string
				err = json.Unmarshal(*v, &hostServiceURI)
				if err != nil {
					return err
				}
				irci.HostServiceURI = &hostServiceURI
			}
		case "version":
			if v != nil {
				var version string
				err = json.Unmarshal(*v, &version)
				if err != nil {
					return err
				}
				irci.Version = &version
			}
		case "publicKey":
			if v != nil {
				var publicKey string
				err = json.Unmarshal(*v, &publicKey)
				if err != nil {
					return err
				}
				irci.PublicKey = &publicKey
			}
		case "isIdentityCertExprired":
			if v != nil {
				var isIdentityCertExprired bool
				err = json.Unmarshal(*v, &isIdentityCertExprired)
				if err != nil {
					return err
				}
				irci.IsIdentityCertExprired = &isIdentityCertExprired
			}
		}
	}

	return nil
}

// IntegrationRuntimeCustomSetupScriptProperties custom setup script properties for a managed dedicated
// integration runtime.
type IntegrationRuntimeCustomSetupScriptProperties struct {
	// BlobContainerURI - The URI of the Azure blob container that contains the custom setup script.
	BlobContainerURI *string `json:"blobContainerUri,omitempty"`
	// SasToken - The SAS token of the Azure blob container.
	SasToken *SecureString `json:"sasToken,omitempty"`
}

// IntegrationRuntimeDataProxyProperties data proxy properties for a managed dedicated integration runtime.
type IntegrationRuntimeDataProxyProperties struct {
	// ConnectVia - The self-hosted integration runtime reference.
	ConnectVia *EntityReference `json:"connectVia,omitempty"`
	// StagingLinkedService - The staging linked service reference.
	StagingLinkedService *EntityReference `json:"stagingLinkedService,omitempty"`
	// Path - The path to contain the staged data in the Blob storage.
	Path *string `json:"path,omitempty"`
}

// IntegrationRuntimeListResponse a list of integration runtime resources.
type IntegrationRuntimeListResponse struct {
	autorest.Response `json:"-"`
	// Value - List of integration runtimes.
	Value *[]IntegrationRuntimeResource `json:"value,omitempty"`
	// NextLink - The link to the next page of results, if any remaining results exist.
	NextLink *string `json:"nextLink,omitempty"`
}

// IntegrationRuntimeListResponseIterator provides access to a complete listing of
// IntegrationRuntimeResource values.
type IntegrationRuntimeListResponseIterator struct {
	i    int
	page IntegrationRuntimeListResponsePage
}

// NextWithContext advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
func (iter *IntegrationRuntimeListResponseIterator) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/IntegrationRuntimeListResponseIterator.NextWithContext")
		defer func() {
			sc := -1
			if iter.Response().Response.Response != nil {
				sc = iter.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	iter.i++
	if iter.i < len(iter.page.Values()) {
		return nil
	}
	err = iter.page.NextWithContext(ctx)
	if err != nil {
		iter.i--
		return err
	}
	iter.i = 0
	return nil
}

// Next advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (iter *IntegrationRuntimeListResponseIterator) Next() error {
	return iter.NextWithContext(context.Background())
}

// NotDone returns true if the enumeration should be started or is not yet complete.
func (iter IntegrationRuntimeListResponseIterator) NotDone() bool {
	return iter.page.NotDone() && iter.i < len(iter.page.Values())
}

// Response returns the raw server response from the last page request.
func (iter IntegrationRuntimeListResponseIterator) Response() IntegrationRuntimeListResponse {
	return iter.page.Response()
}

// Value returns the current value or a zero-initialized value if the
// iterator has advanced beyond the end of the collection.
func (iter IntegrationRuntimeListResponseIterator) Value() IntegrationRuntimeResource {
	if !iter.page.NotDone() {
		return IntegrationRuntimeResource{}
	}
	return iter.page.Values()[iter.i]
}

// Creates a new instance of the IntegrationRuntimeListResponseIterator type.
func NewIntegrationRuntimeListResponseIterator(page IntegrationRuntimeListResponsePage) IntegrationRuntimeListResponseIterator {
	return IntegrationRuntimeListResponseIterator{page: page}
}

// IsEmpty returns true if the ListResult contains no values.
func (irlr IntegrationRuntimeListResponse) IsEmpty() bool {
	return irlr.Value == nil || len(*irlr.Value) == 0
}

// hasNextLink returns true if the NextLink is not empty.
func (irlr IntegrationRuntimeListResponse) hasNextLink() bool {
	return irlr.NextLink != nil && len(*irlr.NextLink) != 0
}

// integrationRuntimeListResponsePreparer prepares a request to retrieve the next set of results.
// It returns nil if no more results exist.
func (irlr IntegrationRuntimeListResponse) integrationRuntimeListResponsePreparer(ctx context.Context) (*http.Request, error) {
	if !irlr.hasNextLink() {
		return nil, nil
	}
	return autorest.Prepare((&http.Request{}).WithContext(ctx),
		autorest.AsJSON(),
		autorest.AsGet(),
		autorest.WithBaseURL(to.String(irlr.NextLink)))
}

// IntegrationRuntimeListResponsePage contains a page of IntegrationRuntimeResource values.
type IntegrationRuntimeListResponsePage struct {
	fn   func(context.Context, IntegrationRuntimeListResponse) (IntegrationRuntimeListResponse, error)
	irlr IntegrationRuntimeListResponse
}

// NextWithContext advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
func (page *IntegrationRuntimeListResponsePage) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/IntegrationRuntimeListResponsePage.NextWithContext")
		defer func() {
			sc := -1
			if page.Response().Response.Response != nil {
				sc = page.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	for {
		next, err := page.fn(ctx, page.irlr)
		if err != nil {
			return err
		}
		page.irlr = next
		if !next.hasNextLink() || !next.IsEmpty() {
			break
		}
	}
	return nil
}

// Next advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (page *IntegrationRuntimeListResponsePage) Next() error {
	return page.NextWithContext(context.Background())
}

// NotDone returns true if the page enumeration should be started or is not yet complete.
func (page IntegrationRuntimeListResponsePage) NotDone() bool {
	return !page.irlr.IsEmpty()
}

// Response returns the raw server response from the last page request.
func (page IntegrationRuntimeListResponsePage) Response() IntegrationRuntimeListResponse {
	return page.irlr
}

// Values returns the slice of values for the current page or nil if there are no values.
func (page IntegrationRuntimeListResponsePage) Values() []IntegrationRuntimeResource {
	if page.irlr.IsEmpty() {
		return nil
	}
	return *page.irlr.Value
}

// Creates a new instance of the IntegrationRuntimeListResponsePage type.
func NewIntegrationRuntimeListResponsePage(cur IntegrationRuntimeListResponse, getNextPage func(context.Context, IntegrationRuntimeListResponse) (IntegrationRuntimeListResponse, error)) IntegrationRuntimeListResponsePage {
	return IntegrationRuntimeListResponsePage{
		fn:   getNextPage,
		irlr: cur,
	}
}

// IntegrationRuntimeMonitoringData get monitoring data response.
type IntegrationRuntimeMonitoringData struct {
	autorest.Response `json:"-"`
	// Name - Integration runtime name.
	Name *string `json:"name,omitempty"`
	// Nodes - Integration runtime node monitoring data.
	Nodes *[]IntegrationRuntimeNodeMonitoringData `json:"nodes,omitempty"`
}

// IntegrationRuntimeNodeIPAddress the IP address of self-hosted integration runtime node.
type IntegrationRuntimeNodeIPAddress struct {
	autorest.Response `json:"-"`
	// IPAddress - READ-ONLY; The IP address of self-hosted integration runtime node.
	IPAddress *string `json:"ipAddress,omitempty"`
}

// MarshalJSON is the custom marshaler for IntegrationRuntimeNodeIPAddress.
func (irnia IntegrationRuntimeNodeIPAddress) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	return json.Marshal(objectMap)
}

// IntegrationRuntimeNodeMonitoringData monitoring data for integration runtime node.
type IntegrationRuntimeNodeMonitoringData struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// NodeName - READ-ONLY; Name of the integration runtime node.
	NodeName *string `json:"nodeName,omitempty"`
	// AvailableMemoryInMB - READ-ONLY; Available memory (MB) on the integration runtime node.
	AvailableMemoryInMB *int32 `json:"availableMemoryInMB,omitempty"`
	// CPUUtilization - READ-ONLY; CPU percentage on the integration runtime node.
	CPUUtilization *float64 `json:"cpuUtilization,omitempty"`
	// ConcurrentJobsLimit - READ-ONLY; Maximum concurrent jobs on the integration runtime node.
	ConcurrentJobsLimit *int32 `json:"concurrentJobsLimit,omitempty"`
	// ConcurrentJobsRunning - READ-ONLY; The number of jobs currently running on the integration runtime node.
	ConcurrentJobsRunning *int32 `json:"concurrentJobsRunning,omitempty"`
	// MaxConcurrentJobs - READ-ONLY; The maximum concurrent jobs in this integration runtime.
	MaxConcurrentJobs *int32 `json:"maxConcurrentJobs,omitempty"`
	// SentBytes - READ-ONLY; Sent bytes on the integration runtime node.
	SentBytes *float64 `json:"sentBytes,omitempty"`
	// ReceivedBytes - READ-ONLY; Received bytes on the integration runtime node.
	ReceivedBytes *float64 `json:"receivedBytes,omitempty"`
}

// MarshalJSON is the custom marshaler for IntegrationRuntimeNodeMonitoringData.
func (irnmd IntegrationRuntimeNodeMonitoringData) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	for k, v := range irnmd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeNodeMonitoringData struct.
func (irnmd *IntegrationRuntimeNodeMonitoringData) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if irnmd.AdditionalProperties == nil {
					irnmd.AdditionalProperties = make(map[string]interface{})
				}
				irnmd.AdditionalProperties[k] = additionalProperties
			}
		case "nodeName":
			if v != nil {
				var nodeName string
				err = json.Unmarshal(*v, &nodeName)
				if err != nil {
					return err
				}
				irnmd.NodeName = &nodeName
			}
		case "availableMemoryInMB":
			if v != nil {
				var availableMemoryInMB int32
				err = json.Unmarshal(*v, &availableMemoryInMB)
				if err != nil {
					return err
				}
				irnmd.AvailableMemoryInMB = &availableMemoryInMB
			}
		case "cpuUtilization":
			if v != nil {
				var CPUUtilization float64
				err = json.Unmarshal(*v, &CPUUtilization)
				if err != nil {
					return err
				}
				irnmd.CPUUtilization = &CPUUtilization
			}
		case "concurrentJobsLimit":
			if v != nil {
				var concurrentJobsLimit int32
				err = json.Unmarshal(*v, &concurrentJobsLimit)
				if err != nil {
					return err
				}
				irnmd.ConcurrentJobsLimit = &concurrentJobsLimit
			}
		case "concurrentJobsRunning":
			if v != nil {
				var concurrentJobsRunning int32
				err = json.Unmarshal(*v, &concurrentJobsRunning)
				if err != nil {
					return err
				}
				irnmd.ConcurrentJobsRunning = &concurrentJobsRunning
			}
		case "maxConcurrentJobs":
			if v != nil {
				var maxConcurrentJobs int32
				err = json.Unmarshal(*v, &maxConcurrentJobs)
				if err != nil {
					return err
				}
				irnmd.MaxConcurrentJobs = &maxConcurrentJobs
			}
		case "sentBytes":
			if v != nil {
				var sentBytes float64
				err = json.Unmarshal(*v, &sentBytes)
				if err != nil {
					return err
				}
				irnmd.SentBytes = &sentBytes
			}
		case "receivedBytes":
			if v != nil {
				var receivedBytes float64
				err = json.Unmarshal(*v, &receivedBytes)
				if err != nil {
					return err
				}
				irnmd.ReceivedBytes = &receivedBytes
			}
		}
	}

	return nil
}

// IntegrationRuntimeReference integration runtime reference type.
type IntegrationRuntimeReference struct {
	// Type - Type of integration runtime.
	Type *string `json:"type,omitempty"`
	// ReferenceName - Reference integration runtime name.
	ReferenceName *string `json:"referenceName,omitempty"`
	// Parameters - Arguments for integration runtime.
	Parameters map[string]interface{} `json:"parameters"`
}

// MarshalJSON is the custom marshaler for IntegrationRuntimeReference.
func (irr IntegrationRuntimeReference) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if irr.Type != nil {
		objectMap["type"] = irr.Type
	}
	if irr.ReferenceName != nil {
		objectMap["referenceName"] = irr.ReferenceName
	}
	if irr.Parameters != nil {
		objectMap["parameters"] = irr.Parameters
	}
	return json.Marshal(objectMap)
}

// IntegrationRuntimeRegenerateKeyParameters parameters to regenerate the authentication key.
type IntegrationRuntimeRegenerateKeyParameters struct {
	// KeyName - The name of the authentication key to regenerate. Possible values include: 'AuthKey1', 'AuthKey2'
	KeyName IntegrationRuntimeAuthKeyName `json:"keyName,omitempty"`
}

// IntegrationRuntimeRemoveNodeRequest request to remove a node.
type IntegrationRuntimeRemoveNodeRequest struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// NodeName - The name of the node to be removed.
	NodeName *string `json:"nodeName,omitempty"`
}

// MarshalJSON is the custom marshaler for IntegrationRuntimeRemoveNodeRequest.
func (irrnr IntegrationRuntimeRemoveNodeRequest) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if irrnr.NodeName != nil {
		objectMap["nodeName"] = irrnr.NodeName
	}
	for k, v := range irrnr.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeRemoveNodeRequest struct.
func (irrnr *IntegrationRuntimeRemoveNodeRequest) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if irrnr.AdditionalProperties == nil {
					irrnr.AdditionalProperties = make(map[string]interface{})
				}
				irrnr.AdditionalProperties[k] = additionalProperties
			}
		case "nodeName":
			if v != nil {
				var nodeName string
				err = json.Unmarshal(*v, &nodeName)
				if err != nil {
					return err
				}
				irrnr.NodeName = &nodeName
			}
		}
	}

	return nil
}

// IntegrationRuntimeResource integration runtime resource type.
type IntegrationRuntimeResource struct {
	autorest.Response `json:"-"`
	// Properties - Integration runtime properties.
	Properties BasicIntegrationRuntime `json:"properties,omitempty"`
	// ID - READ-ONLY; The resource identifier.
	ID *string `json:"id,omitempty"`
	// Name - READ-ONLY; The resource name.
	Name *string `json:"name,omitempty"`
	// Type - READ-ONLY; The resource type.
	Type *string `json:"type,omitempty"`
	// Etag - READ-ONLY; Etag identifies change in the resource.
	Etag *string `json:"etag,omitempty"`
}

// MarshalJSON is the custom marshaler for IntegrationRuntimeResource.
func (irr IntegrationRuntimeResource) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	objectMap["properties"] = irr.Properties
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeResource struct.
func (irr *IntegrationRuntimeResource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "properties":
			if v != nil {
				properties, err := unmarshalBasicIntegrationRuntime(*v)
				if err != nil {
					return err
				}
				irr.Properties = properties
			}
		case "id":
			if v != nil {
				var ID string
				err = json.Unmarshal(*v, &ID)
				if err != nil {
					return err
				}
				irr.ID = &ID
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				irr.Name = &name
			}
		case "type":
			if v != nil {
				var typeVar string
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				irr.Type = &typeVar
			}
		case "etag":
			if v != nil {
				var etag string
				err = json.Unmarshal(*v, &etag)
				if err != nil {
					return err
				}
				irr.Etag = &etag
			}
		}
	}

	return nil
}

// IntegrationRuntimeSsisCatalogInfo catalog information for managed dedicated integration runtime.
type IntegrationRuntimeSsisCatalogInfo struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// CatalogServerEndpoint - The catalog database server URL.
	CatalogServerEndpoint *string `json:"catalogServerEndpoint,omitempty"`
	// CatalogAdminUserName - The administrator user name of catalog database.
	CatalogAdminUserName *string `json:"catalogAdminUserName,omitempty"`
	// CatalogAdminPassword - The password of the administrator user account of the catalog database.
	CatalogAdminPassword *SecureString `json:"catalogAdminPassword,omitempty"`
	// CatalogPricingTier - The pricing tier for the catalog database. The valid values could be found in https://azure.microsoft.com/en-us/pricing/details/sql-database/
	CatalogPricingTier *string `json:"catalogPricingTier,omitempty"`
}

// MarshalJSON is the custom marshaler for IntegrationRuntimeSsisCatalogInfo.
func (irsci IntegrationRuntimeSsisCatalogInfo) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if irsci.CatalogServerEndpoint != nil {
		objectMap["catalogServerEndpoint"] = irsci.CatalogServerEndpoint
	}
	if irsci.CatalogAdminUserName != nil {
		objectMap["catalogAdminUserName"] = irsci.CatalogAdminUserName
	}
	if irsci.CatalogAdminPassword != nil {
		objectMap["catalogAdminPassword"] = irsci.CatalogAdminPassword
	}
	if irsci.CatalogPricingTier != nil {
		objectMap["catalogPricingTier"] = irsci.CatalogPricingTier
	}
	for k, v := range irsci.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeSsisCatalogInfo struct.
func (irsci *IntegrationRuntimeSsisCatalogInfo) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if irsci.AdditionalProperties == nil {
					irsci.AdditionalProperties = make(map[string]interface{})
				}
				irsci.AdditionalProperties[k] = additionalProperties
			}
		case "catalogServerEndpoint":
			if v != nil {
				var catalogServerEndpoint string
				err = json.Unmarshal(*v, &catalogServerEndpoint)
				if err != nil {
					return err
				}
				irsci.CatalogServerEndpoint = &catalogServerEndpoint
			}
		case "catalogAdminUserName":
			if v != nil {
				var catalogAdminUserName string
				err = json.Unmarshal(*v, &catalogAdminUserName)
				if err != nil {
					return err
				}
				irsci.CatalogAdminUserName = &catalogAdminUserName
			}
		case "catalogAdminPassword":
			if v != nil {
				var catalogAdminPassword SecureString
				err = json.Unmarshal(*v, &catalogAdminPassword)
				if err != nil {
					return err
				}
				irsci.CatalogAdminPassword = &catalogAdminPassword
			}
		case "catalogPricingTier":
			if v != nil {
				var catalogPricingTier string
				err = json.Unmarshal(*v, &catalogPricingTier)
				if err != nil {
					return err
				}
				irsci.CatalogPricingTier = &catalogPricingTier
			}
		}
	}

	return nil
}

// IntegrationRuntimeSsisProperties SSIS properties for managed integration runtime.
type IntegrationRuntimeSsisProperties struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// CatalogInfo - Catalog information for managed dedicated integration runtime.
	CatalogInfo *IntegrationRuntimeSsisCatalogInfo `json:"catalogInfo,omitempty"`
	// LicenseType - License type for bringing your own license scenario. Possible values include: 'BasePrice', 'LicenseIncluded'
	LicenseType IntegrationRuntimeLicenseType `json:"licenseType,omitempty"`
	// CustomSetupScriptProperties - Custom setup script properties for a managed dedicated integration runtime.
	CustomSetupScriptProperties *IntegrationRuntimeCustomSetupScriptProperties `json:"customSetupScriptProperties,omitempty"`
	// DataProxyProperties - Data proxy properties for a managed dedicated integration runtime.
	DataProxyProperties *IntegrationRuntimeDataProxyProperties `json:"dataProxyProperties,omitempty"`
	// Edition - The edition for the SSIS Integration Runtime. Possible values include: 'Standard', 'Enterprise'
	Edition IntegrationRuntimeEdition `json:"edition,omitempty"`
}

// MarshalJSON is the custom marshaler for IntegrationRuntimeSsisProperties.
func (irsp IntegrationRuntimeSsisProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if irsp.CatalogInfo != nil {
		objectMap["catalogInfo"] = irsp.CatalogInfo
	}
	if irsp.LicenseType != "" {
		objectMap["licenseType"] = irsp.LicenseType
	}
	if irsp.CustomSetupScriptProperties != nil {
		objectMap["customSetupScriptProperties"] = irsp.CustomSetupScriptProperties
	}
	if irsp.DataProxyProperties != nil {
		objectMap["dataProxyProperties"] = irsp.DataProxyProperties
	}
	if irsp.Edition != "" {
		objectMap["edition"] = irsp.Edition
	}
	for k, v := range irsp.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeSsisProperties struct.
func (irsp *IntegrationRuntimeSsisProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if irsp.AdditionalProperties == nil {
					irsp.AdditionalProperties = make(map[string]interface{})
				}
				irsp.AdditionalProperties[k] = additionalProperties
			}
		case "catalogInfo":
			if v != nil {
				var catalogInfo IntegrationRuntimeSsisCatalogInfo
				err = json.Unmarshal(*v, &catalogInfo)
				if err != nil {
					return err
				}
				irsp.CatalogInfo = &catalogInfo
			}
		case "licenseType":
			if v != nil {
				var licenseType IntegrationRuntimeLicenseType
				err = json.Unmarshal(*v, &licenseType)
				if err != nil {
					return err
				}
				irsp.LicenseType = licenseType
			}
		case "customSetupScriptProperties":
			if v != nil {
				var customSetupScriptProperties IntegrationRuntimeCustomSetupScriptProperties
				err = json.Unmarshal(*v, &customSetupScriptProperties)
				if err != nil {
					return err
				}
				irsp.CustomSetupScriptProperties = &customSetupScriptProperties
			}
		case "dataProxyProperties":
			if v != nil {
				var dataProxyProperties IntegrationRuntimeDataProxyProperties
				err = json.Unmarshal(*v, &dataProxyProperties)
				if err != nil {
					return err
				}
				irsp.DataProxyProperties = &dataProxyProperties
			}
		case "edition":
			if v != nil {
				var edition IntegrationRuntimeEdition
				err = json.Unmarshal(*v, &edition)
				if err != nil {
					return err
				}
				irsp.Edition = edition
			}
		}
	}

	return nil
}

// IntegrationRuntimesStartFuture an abstraction for monitoring and retrieving the results of a
// long-running operation.
type IntegrationRuntimesStartFuture struct {
	azure.FutureAPI
	// Result returns the result of the asynchronous operation.
	// If the operation has not completed it will return an error.
	Result func(IntegrationRuntimesClient) (IntegrationRuntimeStatusResponse, error)
}

// UnmarshalJSON is the custom unmarshaller for CreateFuture.
func (future *IntegrationRuntimesStartFuture) UnmarshalJSON(body []byte) error {
	var azFuture azure.Future
	if err := json.Unmarshal(body, &azFuture); err != nil {
		return err
	}
	future.FutureAPI = &azFuture
	future.Result = future.result
	return nil
}

// result is the default implementation for IntegrationRuntimesStartFuture.Result.
func (future *IntegrationRuntimesStartFuture) result(client IntegrationRuntimesClient) (irsr IntegrationRuntimeStatusResponse, err error) {
	var done bool
	done, err = future.DoneWithContext(context.Background(), client)
	if err != nil {
		err = autorest.NewErrorWithError(err, "datafactory.IntegrationRuntimesStartFuture", "Result", future.Response(), "Polling failure")
		return
	}
	if !done {
		irsr.Response.Response = future.Response()
		err = azure.NewAsyncOpIncompleteError("datafactory.IntegrationRuntimesStartFuture")
		return
	}
	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
	if irsr.Response.Response, err = future.GetResult(sender); err == nil && irsr.Response.Response.StatusCode != http.StatusNoContent {
		irsr, err = client.StartResponder(irsr.Response.Response)
		if err != nil {
			err = autorest.NewErrorWithError(err, "datafactory.IntegrationRuntimesStartFuture", "Result", irsr.Response.Response, "Failure responding to request")
		}
	}
	return
}

// IntegrationRuntimesStopFuture an abstraction for monitoring and retrieving the results of a long-running
// operation.
type IntegrationRuntimesStopFuture struct {
	azure.FutureAPI
	// Result returns the result of the asynchronous operation.
	// If the operation has not completed it will return an error.
	Result func(IntegrationRuntimesClient) (autorest.Response, error)
}

// UnmarshalJSON is the custom unmarshaller for CreateFuture.
func (future *IntegrationRuntimesStopFuture) UnmarshalJSON(body []byte) error {
	var azFuture azure.Future
	if err := json.Unmarshal(body, &azFuture); err != nil {
		return err
	}
	future.FutureAPI = &azFuture
	future.Result = future.result
	return nil
}

// result is the default implementation for IntegrationRuntimesStopFuture.Result.
func (future *IntegrationRuntimesStopFuture) result(client IntegrationRuntimesClient) (ar autorest.Response, err error) {
	var done bool
	done, err = future.DoneWithContext(context.Background(), client)
	if err != nil {
		err = autorest.NewErrorWithError(err, "datafactory.IntegrationRuntimesStopFuture", "Result", future.Response(), "Polling failure")
		return
	}
	if !done {
		ar.Response = future.Response()
		err = azure.NewAsyncOpIncompleteError("datafactory.IntegrationRuntimesStopFuture")
		return
	}
	ar.Response = future.Response()
	return
}

// BasicIntegrationRuntimeStatus integration runtime status.
type BasicIntegrationRuntimeStatus interface {
	AsSelfHostedIntegrationRuntimeStatus() (*SelfHostedIntegrationRuntimeStatus, bool)
	AsManagedIntegrationRuntimeStatus() (*ManagedIntegrationRuntimeStatus, bool)
	AsIntegrationRuntimeStatus() (*IntegrationRuntimeStatus, bool)
}

// IntegrationRuntimeStatus integration runtime status.
type IntegrationRuntimeStatus struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// DataFactoryName - READ-ONLY; The data factory name which the integration runtime belong to.
	DataFactoryName *string `json:"dataFactoryName,omitempty"`
	// State - READ-ONLY; The state of integration runtime. Possible values include: 'Initial', 'Stopped', 'Started', 'Starting', 'Stopping', 'NeedRegistration', 'Online', 'Limited', 'Offline'
	State IntegrationRuntimeState `json:"state,omitempty"`
	// Type - Possible values include: 'TypeBasicIntegrationRuntimeStatusTypeIntegrationRuntimeStatus', 'TypeBasicIntegrationRuntimeStatusTypeSelfHosted', 'TypeBasicIntegrationRuntimeStatusTypeManaged'
	Type TypeBasicIntegrationRuntimeStatus `json:"type,omitempty"`
}

func unmarshalBasicIntegrationRuntimeStatus(body []byte) (BasicIntegrationRuntimeStatus, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeBasicIntegrationRuntimeStatusTypeSelfHosted):
		var shirs SelfHostedIntegrationRuntimeStatus
		err := json.Unmarshal(body, &shirs)
		return shirs, err
	case string(TypeBasicIntegrationRuntimeStatusTypeManaged):
		var mirs ManagedIntegrationRuntimeStatus
		err := json.Unmarshal(body, &mirs)
		return mirs, err
	default:
		var irs IntegrationRuntimeStatus
		err := json.Unmarshal(body, &irs)
		return irs, err
	}
}
func unmarshalBasicIntegrationRuntimeStatusArray(body []byte) ([]BasicIntegrationRuntimeStatus, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	irsArray := make([]BasicIntegrationRuntimeStatus, len(rawMessages))

	for index, rawMessage := range rawMessages {
		irs, err := unmarshalBasicIntegrationRuntimeStatus(*rawMessage)
		if err != nil {
			return nil, err
		}
		irsArray[index] = irs
	}
	return irsArray, nil
}

// MarshalJSON is the custom marshaler for IntegrationRuntimeStatus.
func (irs IntegrationRuntimeStatus) MarshalJSON() ([]byte, error) {
	irs.Type = TypeBasicIntegrationRuntimeStatusTypeIntegrationRuntimeStatus
	objectMap := make(map[string]interface{})
	if irs.Type != "" {
		objectMap["type"] = irs.Type
	}
	for k, v := range irs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSelfHostedIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for IntegrationRuntimeStatus.
func (irs IntegrationRuntimeStatus) AsSelfHostedIntegrationRuntimeStatus() (*SelfHostedIntegrationRuntimeStatus, bool) {
	return nil, false
}

// AsManagedIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for IntegrationRuntimeStatus.
func (irs IntegrationRuntimeStatus) AsManagedIntegrationRuntimeStatus() (*ManagedIntegrationRuntimeStatus, bool) {
	return nil, false
}

// AsIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for IntegrationRuntimeStatus.
func (irs IntegrationRuntimeStatus) AsIntegrationRuntimeStatus() (*IntegrationRuntimeStatus, bool) {
	return &irs, true
}

// AsBasicIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for IntegrationRuntimeStatus.
func (irs IntegrationRuntimeStatus) AsBasicIntegrationRuntimeStatus() (BasicIntegrationRuntimeStatus, bool) {
	return &irs, true
}

// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeStatus struct.
func (irs *IntegrationRuntimeStatus) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if irs.AdditionalProperties == nil {
					irs.AdditionalProperties = make(map[string]interface{})
				}
				irs.AdditionalProperties[k] = additionalProperties
			}
		case "dataFactoryName":
			if v != nil {
				var dataFactoryName string
				err = json.Unmarshal(*v, &dataFactoryName)
				if err != nil {
					return err
				}
				irs.DataFactoryName = &dataFactoryName
			}
		case "state":
			if v != nil {
				var state IntegrationRuntimeState
				err = json.Unmarshal(*v, &state)
				if err != nil {
					return err
				}
				irs.State = state
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicIntegrationRuntimeStatus
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				irs.Type = typeVar
			}
		}
	}

	return nil
}

// IntegrationRuntimeStatusListResponse a list of integration runtime status.
type IntegrationRuntimeStatusListResponse struct {
	// Value - List of integration runtime status.
	Value *[]IntegrationRuntimeStatusResponse `json:"value,omitempty"`
	// NextLink - The link to the next page of results, if any remaining results exist.
	NextLink *string `json:"nextLink,omitempty"`
}

// IntegrationRuntimeStatusResponse integration runtime status response.
type IntegrationRuntimeStatusResponse struct {
	autorest.Response `json:"-"`
	// Name - READ-ONLY; The integration runtime name.
	Name *string `json:"name,omitempty"`
	// Properties - Integration runtime properties.
	Properties BasicIntegrationRuntimeStatus `json:"properties,omitempty"`
}

// MarshalJSON is the custom marshaler for IntegrationRuntimeStatusResponse.
func (irsr IntegrationRuntimeStatusResponse) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	objectMap["properties"] = irsr.Properties
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeStatusResponse struct.
func (irsr *IntegrationRuntimeStatusResponse) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				irsr.Name = &name
			}
		case "properties":
			if v != nil {
				properties, err := unmarshalBasicIntegrationRuntimeStatus(*v)
				if err != nil {
					return err
				}
				irsr.Properties = properties
			}
		}
	}

	return nil
}

// IntegrationRuntimeVNetProperties vNet properties for managed integration runtime.
type IntegrationRuntimeVNetProperties struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// VNetID - The ID of the VNet that this integration runtime will join.
	VNetID *string `json:"vNetId,omitempty"`
	// Subnet - The name of the subnet this integration runtime will join.
	Subnet *string `json:"subnet,omitempty"`
}

// MarshalJSON is the custom marshaler for IntegrationRuntimeVNetProperties.
func (irvnp IntegrationRuntimeVNetProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if irvnp.VNetID != nil {
		objectMap["vNetId"] = irvnp.VNetID
	}
	if irvnp.Subnet != nil {
		objectMap["subnet"] = irvnp.Subnet
	}
	for k, v := range irvnp.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for IntegrationRuntimeVNetProperties struct.
func (irvnp *IntegrationRuntimeVNetProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if irvnp.AdditionalProperties == nil {
					irvnp.AdditionalProperties = make(map[string]interface{})
				}
				irvnp.AdditionalProperties[k] = additionalProperties
			}
		case "vNetId":
			if v != nil {
				var vNetID string
				err = json.Unmarshal(*v, &vNetID)
				if err != nil {
					return err
				}
				irvnp.VNetID = &vNetID
			}
		case "subnet":
			if v != nil {
				var subnet string
				err = json.Unmarshal(*v, &subnet)
				if err != nil {
					return err
				}
				irvnp.Subnet = &subnet
			}
		}
	}

	return nil
}

// JiraLinkedService jira Service linked service.
type JiraLinkedService struct {
	// JiraLinkedServiceTypeProperties - Jira Service linked service properties.
	*JiraLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for JiraLinkedService.
func (jls JiraLinkedService) MarshalJSON() ([]byte, error) {
	jls.Type = TypeJira
	objectMap := make(map[string]interface{})
	if jls.JiraLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = jls.JiraLinkedServiceTypeProperties
	}
	if jls.ConnectVia != nil {
		objectMap["connectVia"] = jls.ConnectVia
	}
	if jls.Description != nil {
		objectMap["description"] = jls.Description
	}
	if jls.Parameters != nil {
		objectMap["parameters"] = jls.Parameters
	}
	if jls.Annotations != nil {
		objectMap["annotations"] = jls.Annotations
	}
	if jls.Type != "" {
		objectMap["type"] = jls.Type
	}
	for k, v := range jls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return &jls, true
}

// AsImpalaLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for JiraLinkedService.
func (jls JiraLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &jls, true
}

// UnmarshalJSON is the custom unmarshaler for JiraLinkedService struct.
func (jls *JiraLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var jiraLinkedServiceTypeProperties JiraLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &jiraLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				jls.JiraLinkedServiceTypeProperties = &jiraLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if jls.AdditionalProperties == nil {
					jls.AdditionalProperties = make(map[string]interface{})
				}
				jls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				jls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				jls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				jls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				jls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				jls.Type = typeVar
			}
		}
	}

	return nil
}

// JiraLinkedServiceTypeProperties jira Service linked service properties.
type JiraLinkedServiceTypeProperties struct {
	// Host - The IP address or host name of the Jira service. (e.g. jira.example.com)
	Host interface{} `json:"host,omitempty"`
	// Port - 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 through HTTP.
	Port interface{} `json:"port,omitempty"`
	// Username - The user name that you use to access Jira Service.
	Username interface{} `json:"username,omitempty"`
	// Password - The password corresponding to the user name that you provided in the username field.
	Password BasicSecretBase `json:"password,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true.
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for JiraLinkedServiceTypeProperties struct.
func (jlstp *JiraLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				jlstp.Host = host
			}
		case "port":
			if v != nil {
				var port interface{}
				err = json.Unmarshal(*v, &port)
				if err != nil {
					return err
				}
				jlstp.Port = port
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				jlstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				jlstp.Password = password
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				jlstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				jlstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				jlstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				jlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// JiraObjectDataset jira Service dataset.
type JiraObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for JiraObjectDataset.
func (jod JiraObjectDataset) MarshalJSON() ([]byte, error) {
	jod.Type = TypeJiraObject
	objectMap := make(map[string]interface{})
	if jod.Description != nil {
		objectMap["description"] = jod.Description
	}
	if jod.Structure != nil {
		objectMap["structure"] = jod.Structure
	}
	if jod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = jod.LinkedServiceName
	}
	if jod.Parameters != nil {
		objectMap["parameters"] = jod.Parameters
	}
	if jod.Annotations != nil {
		objectMap["annotations"] = jod.Annotations
	}
	if jod.Type != "" {
		objectMap["type"] = jod.Type
	}
	for k, v := range jod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return &jod, true
}

// AsImpalaObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for JiraObjectDataset.
func (jod JiraObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &jod, true
}

// UnmarshalJSON is the custom unmarshaler for JiraObjectDataset struct.
func (jod *JiraObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if jod.AdditionalProperties == nil {
					jod.AdditionalProperties = make(map[string]interface{})
				}
				jod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				jod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				jod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				jod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				jod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				jod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				jod.Type = typeVar
			}
		}
	}

	return nil
}

// JiraSource a copy activity Jira Service source.
type JiraSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for JiraSource.
func (js JiraSource) MarshalJSON() ([]byte, error) {
	js.Type = TypeJiraSource
	objectMap := make(map[string]interface{})
	if js.Query != nil {
		objectMap["query"] = js.Query
	}
	if js.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = js.SourceRetryCount
	}
	if js.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = js.SourceRetryWait
	}
	if js.Type != "" {
		objectMap["type"] = js.Type
	}
	for k, v := range js.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsJiraSource() (*JiraSource, bool) {
	return &js, true
}

// AsImpalaSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for JiraSource.
func (js JiraSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &js, true
}

// UnmarshalJSON is the custom unmarshaler for JiraSource struct.
func (js *JiraSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				js.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if js.AdditionalProperties == nil {
					js.AdditionalProperties = make(map[string]interface{})
				}
				js.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				js.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				js.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				js.Type = typeVar
			}
		}
	}

	return nil
}

// JSONFormat the data stored in JSON format.
type JSONFormat struct {
	// FilePattern - 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. Possible values include: 'SetOfObjects', 'ArrayOfObjects'
	FilePattern JSONFormatFilePattern `json:"filePattern,omitempty"`
	// NestingSeparator - The character used to separate nesting levels. Default value is '.' (dot). Type: string (or Expression with resultType string).
	NestingSeparator interface{} `json:"nestingSeparator,omitempty"`
	// EncodingName - 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 encoding. The full list of supported values can be 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 with resultType string).
	EncodingName interface{} `json:"encodingName,omitempty"`
	// JSONNodeReference - The JSONPath of the JSON array element to be flattened. Example: "$.ArrayPath". Type: string (or Expression with resultType string).
	JSONNodeReference interface{} `json:"jsonNodeReference,omitempty"`
	// JSONPathDefinition - 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 "$"; for fields inside the array chosen by jsonNodeReference property, start from the array element. Example: {"Column1": "$.Column1Path", "Column2": "Column2PathInArray"}. Type: object (or Expression with resultType object).
	JSONPathDefinition interface{} `json:"jsonPathDefinition,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Serializer - Serializer. Type: string (or Expression with resultType string).
	Serializer interface{} `json:"serializer,omitempty"`
	// Deserializer - Deserializer. Type: string (or Expression with resultType string).
	Deserializer interface{} `json:"deserializer,omitempty"`
	// Type - Possible values include: 'TypeDatasetStorageFormat', 'TypeParquetFormat', 'TypeOrcFormat', 'TypeAvroFormat', 'TypeJSONFormat', 'TypeTextFormat'
	Type TypeBasicDatasetStorageFormat `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for JSONFormat.
func (jf JSONFormat) MarshalJSON() ([]byte, error) {
	jf.Type = TypeJSONFormat
	objectMap := make(map[string]interface{})
	if jf.FilePattern != "" {
		objectMap["filePattern"] = jf.FilePattern
	}
	if jf.NestingSeparator != nil {
		objectMap["nestingSeparator"] = jf.NestingSeparator
	}
	if jf.EncodingName != nil {
		objectMap["encodingName"] = jf.EncodingName
	}
	if jf.JSONNodeReference != nil {
		objectMap["jsonNodeReference"] = jf.JSONNodeReference
	}
	if jf.JSONPathDefinition != nil {
		objectMap["jsonPathDefinition"] = jf.JSONPathDefinition
	}
	if jf.Serializer != nil {
		objectMap["serializer"] = jf.Serializer
	}
	if jf.Deserializer != nil {
		objectMap["deserializer"] = jf.Deserializer
	}
	if jf.Type != "" {
		objectMap["type"] = jf.Type
	}
	for k, v := range jf.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsParquetFormat is the BasicDatasetStorageFormat implementation for JSONFormat.
func (jf JSONFormat) AsParquetFormat() (*ParquetFormat, bool) {
	return nil, false
}

// AsOrcFormat is the BasicDatasetStorageFormat implementation for JSONFormat.
func (jf JSONFormat) AsOrcFormat() (*OrcFormat, bool) {
	return nil, false
}

// AsAvroFormat is the BasicDatasetStorageFormat implementation for JSONFormat.
func (jf JSONFormat) AsAvroFormat() (*AvroFormat, bool) {
	return nil, false
}

// AsJSONFormat is the BasicDatasetStorageFormat implementation for JSONFormat.
func (jf JSONFormat) AsJSONFormat() (*JSONFormat, bool) {
	return &jf, true
}

// AsTextFormat is the BasicDatasetStorageFormat implementation for JSONFormat.
func (jf JSONFormat) AsTextFormat() (*TextFormat, bool) {
	return nil, false
}

// AsDatasetStorageFormat is the BasicDatasetStorageFormat implementation for JSONFormat.
func (jf JSONFormat) AsDatasetStorageFormat() (*DatasetStorageFormat, bool) {
	return nil, false
}

// AsBasicDatasetStorageFormat is the BasicDatasetStorageFormat implementation for JSONFormat.
func (jf JSONFormat) AsBasicDatasetStorageFormat() (BasicDatasetStorageFormat, bool) {
	return &jf, true
}

// UnmarshalJSON is the custom unmarshaler for JSONFormat struct.
func (jf *JSONFormat) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "filePattern":
			if v != nil {
				var filePattern JSONFormatFilePattern
				err = json.Unmarshal(*v, &filePattern)
				if err != nil {
					return err
				}
				jf.FilePattern = filePattern
			}
		case "nestingSeparator":
			if v != nil {
				var nestingSeparator interface{}
				err = json.Unmarshal(*v, &nestingSeparator)
				if err != nil {
					return err
				}
				jf.NestingSeparator = nestingSeparator
			}
		case "encodingName":
			if v != nil {
				var encodingName interface{}
				err = json.Unmarshal(*v, &encodingName)
				if err != nil {
					return err
				}
				jf.EncodingName = encodingName
			}
		case "jsonNodeReference":
			if v != nil {
				var JSONNodeReference interface{}
				err = json.Unmarshal(*v, &JSONNodeReference)
				if err != nil {
					return err
				}
				jf.JSONNodeReference = JSONNodeReference
			}
		case "jsonPathDefinition":
			if v != nil {
				var JSONPathDefinition interface{}
				err = json.Unmarshal(*v, &JSONPathDefinition)
				if err != nil {
					return err
				}
				jf.JSONPathDefinition = JSONPathDefinition
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if jf.AdditionalProperties == nil {
					jf.AdditionalProperties = make(map[string]interface{})
				}
				jf.AdditionalProperties[k] = additionalProperties
			}
		case "serializer":
			if v != nil {
				var serializer interface{}
				err = json.Unmarshal(*v, &serializer)
				if err != nil {
					return err
				}
				jf.Serializer = serializer
			}
		case "deserializer":
			if v != nil {
				var deserializer interface{}
				err = json.Unmarshal(*v, &deserializer)
				if err != nil {
					return err
				}
				jf.Deserializer = deserializer
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDatasetStorageFormat
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				jf.Type = typeVar
			}
		}
	}

	return nil
}

// LinkedIntegrationRuntime the linked integration runtime information.
type LinkedIntegrationRuntime struct {
	// Name - READ-ONLY; The name of the linked integration runtime.
	Name *string `json:"name,omitempty"`
	// SubscriptionID - READ-ONLY; The subscription ID for which the linked integration runtime belong to.
	SubscriptionID *string `json:"subscriptionId,omitempty"`
	// DataFactoryName - READ-ONLY; The name of the data factory for which the linked integration runtime belong to.
	DataFactoryName *string `json:"dataFactoryName,omitempty"`
	// DataFactoryLocation - READ-ONLY; The location of the data factory for which the linked integration runtime belong to.
	DataFactoryLocation *string `json:"dataFactoryLocation,omitempty"`
	// CreateTime - READ-ONLY; The creating time of the linked integration runtime.
	CreateTime *date.Time `json:"createTime,omitempty"`
}

// MarshalJSON is the custom marshaler for LinkedIntegrationRuntime.
func (lir LinkedIntegrationRuntime) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	return json.Marshal(objectMap)
}

// LinkedIntegrationRuntimeKey the base definition of a secret type.
type LinkedIntegrationRuntimeKey struct {
	// Key - Type of the secret.
	Key *SecureString `json:"key,omitempty"`
	// AuthorizationType - Possible values include: 'AuthorizationTypeLinkedIntegrationRuntimeProperties', 'AuthorizationTypeRBAC', 'AuthorizationTypeKey'
	AuthorizationType AuthorizationType `json:"authorizationType,omitempty"`
}

// MarshalJSON is the custom marshaler for LinkedIntegrationRuntimeKey.
func (lirk LinkedIntegrationRuntimeKey) MarshalJSON() ([]byte, error) {
	lirk.AuthorizationType = AuthorizationTypeKey
	objectMap := make(map[string]interface{})
	if lirk.Key != nil {
		objectMap["key"] = lirk.Key
	}
	if lirk.AuthorizationType != "" {
		objectMap["authorizationType"] = lirk.AuthorizationType
	}
	return json.Marshal(objectMap)
}

// AsLinkedIntegrationRuntimeRbac is the BasicLinkedIntegrationRuntimeProperties implementation for LinkedIntegrationRuntimeKey.
func (lirk LinkedIntegrationRuntimeKey) AsLinkedIntegrationRuntimeRbac() (*LinkedIntegrationRuntimeRbac, bool) {
	return nil, false
}

// AsLinkedIntegrationRuntimeKey is the BasicLinkedIntegrationRuntimeProperties implementation for LinkedIntegrationRuntimeKey.
func (lirk LinkedIntegrationRuntimeKey) AsLinkedIntegrationRuntimeKey() (*LinkedIntegrationRuntimeKey, bool) {
	return &lirk, true
}

// AsLinkedIntegrationRuntimeProperties is the BasicLinkedIntegrationRuntimeProperties implementation for LinkedIntegrationRuntimeKey.
func (lirk LinkedIntegrationRuntimeKey) AsLinkedIntegrationRuntimeProperties() (*LinkedIntegrationRuntimeProperties, bool) {
	return nil, false
}

// AsBasicLinkedIntegrationRuntimeProperties is the BasicLinkedIntegrationRuntimeProperties implementation for LinkedIntegrationRuntimeKey.
func (lirk LinkedIntegrationRuntimeKey) AsBasicLinkedIntegrationRuntimeProperties() (BasicLinkedIntegrationRuntimeProperties, bool) {
	return &lirk, true
}

// BasicLinkedIntegrationRuntimeProperties the base definition of a secret type.
type BasicLinkedIntegrationRuntimeProperties interface {
	AsLinkedIntegrationRuntimeRbac() (*LinkedIntegrationRuntimeRbac, bool)
	AsLinkedIntegrationRuntimeKey() (*LinkedIntegrationRuntimeKey, bool)
	AsLinkedIntegrationRuntimeProperties() (*LinkedIntegrationRuntimeProperties, bool)
}

// LinkedIntegrationRuntimeProperties the base definition of a secret type.
type LinkedIntegrationRuntimeProperties struct {
	// AuthorizationType - Possible values include: 'AuthorizationTypeLinkedIntegrationRuntimeProperties', 'AuthorizationTypeRBAC', 'AuthorizationTypeKey'
	AuthorizationType AuthorizationType `json:"authorizationType,omitempty"`
}

func unmarshalBasicLinkedIntegrationRuntimeProperties(body []byte) (BasicLinkedIntegrationRuntimeProperties, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["authorizationType"] {
	case string(AuthorizationTypeRBAC):
		var lirr LinkedIntegrationRuntimeRbac
		err := json.Unmarshal(body, &lirr)
		return lirr, err
	case string(AuthorizationTypeKey):
		var lirk LinkedIntegrationRuntimeKey
		err := json.Unmarshal(body, &lirk)
		return lirk, err
	default:
		var lirp LinkedIntegrationRuntimeProperties
		err := json.Unmarshal(body, &lirp)
		return lirp, err
	}
}
func unmarshalBasicLinkedIntegrationRuntimePropertiesArray(body []byte) ([]BasicLinkedIntegrationRuntimeProperties, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	lirpArray := make([]BasicLinkedIntegrationRuntimeProperties, len(rawMessages))

	for index, rawMessage := range rawMessages {
		lirp, err := unmarshalBasicLinkedIntegrationRuntimeProperties(*rawMessage)
		if err != nil {
			return nil, err
		}
		lirpArray[index] = lirp
	}
	return lirpArray, nil
}

// MarshalJSON is the custom marshaler for LinkedIntegrationRuntimeProperties.
func (lirp LinkedIntegrationRuntimeProperties) MarshalJSON() ([]byte, error) {
	lirp.AuthorizationType = AuthorizationTypeLinkedIntegrationRuntimeProperties
	objectMap := make(map[string]interface{})
	if lirp.AuthorizationType != "" {
		objectMap["authorizationType"] = lirp.AuthorizationType
	}
	return json.Marshal(objectMap)
}

// AsLinkedIntegrationRuntimeRbac is the BasicLinkedIntegrationRuntimeProperties implementation for LinkedIntegrationRuntimeProperties.
func (lirp LinkedIntegrationRuntimeProperties) AsLinkedIntegrationRuntimeRbac() (*LinkedIntegrationRuntimeRbac, bool) {
	return nil, false
}

// AsLinkedIntegrationRuntimeKey is the BasicLinkedIntegrationRuntimeProperties implementation for LinkedIntegrationRuntimeProperties.
func (lirp LinkedIntegrationRuntimeProperties) AsLinkedIntegrationRuntimeKey() (*LinkedIntegrationRuntimeKey, bool) {
	return nil, false
}

// AsLinkedIntegrationRuntimeProperties is the BasicLinkedIntegrationRuntimeProperties implementation for LinkedIntegrationRuntimeProperties.
func (lirp LinkedIntegrationRuntimeProperties) AsLinkedIntegrationRuntimeProperties() (*LinkedIntegrationRuntimeProperties, bool) {
	return &lirp, true
}

// AsBasicLinkedIntegrationRuntimeProperties is the BasicLinkedIntegrationRuntimeProperties implementation for LinkedIntegrationRuntimeProperties.
func (lirp LinkedIntegrationRuntimeProperties) AsBasicLinkedIntegrationRuntimeProperties() (BasicLinkedIntegrationRuntimeProperties, bool) {
	return &lirp, true
}

// LinkedIntegrationRuntimeRbac the base definition of a secret type.
type LinkedIntegrationRuntimeRbac struct {
	// ResourceID - The resource ID of the integration runtime to be shared.
	ResourceID *string `json:"resourceId,omitempty"`
	// AuthorizationType - Possible values include: 'AuthorizationTypeLinkedIntegrationRuntimeProperties', 'AuthorizationTypeRBAC', 'AuthorizationTypeKey'
	AuthorizationType AuthorizationType `json:"authorizationType,omitempty"`
}

// MarshalJSON is the custom marshaler for LinkedIntegrationRuntimeRbac.
func (lirr LinkedIntegrationRuntimeRbac) MarshalJSON() ([]byte, error) {
	lirr.AuthorizationType = AuthorizationTypeRBAC
	objectMap := make(map[string]interface{})
	if lirr.ResourceID != nil {
		objectMap["resourceId"] = lirr.ResourceID
	}
	if lirr.AuthorizationType != "" {
		objectMap["authorizationType"] = lirr.AuthorizationType
	}
	return json.Marshal(objectMap)
}

// AsLinkedIntegrationRuntimeRbac is the BasicLinkedIntegrationRuntimeProperties implementation for LinkedIntegrationRuntimeRbac.
func (lirr LinkedIntegrationRuntimeRbac) AsLinkedIntegrationRuntimeRbac() (*LinkedIntegrationRuntimeRbac, bool) {
	return &lirr, true
}

// AsLinkedIntegrationRuntimeKey is the BasicLinkedIntegrationRuntimeProperties implementation for LinkedIntegrationRuntimeRbac.
func (lirr LinkedIntegrationRuntimeRbac) AsLinkedIntegrationRuntimeKey() (*LinkedIntegrationRuntimeKey, bool) {
	return nil, false
}

// AsLinkedIntegrationRuntimeProperties is the BasicLinkedIntegrationRuntimeProperties implementation for LinkedIntegrationRuntimeRbac.
func (lirr LinkedIntegrationRuntimeRbac) AsLinkedIntegrationRuntimeProperties() (*LinkedIntegrationRuntimeProperties, bool) {
	return nil, false
}

// AsBasicLinkedIntegrationRuntimeProperties is the BasicLinkedIntegrationRuntimeProperties implementation for LinkedIntegrationRuntimeRbac.
func (lirr LinkedIntegrationRuntimeRbac) AsBasicLinkedIntegrationRuntimeProperties() (BasicLinkedIntegrationRuntimeProperties, bool) {
	return &lirr, true
}

// LinkedIntegrationRuntimeTypeProperties the base definition of a secret type.
type LinkedIntegrationRuntimeTypeProperties struct {
	LinkedInfo BasicLinkedIntegrationRuntimeProperties `json:"linkedInfo,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for LinkedIntegrationRuntimeTypeProperties struct.
func (lirtp *LinkedIntegrationRuntimeTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "linkedInfo":
			if v != nil {
				linkedInfo, err := unmarshalBasicLinkedIntegrationRuntimeProperties(*v)
				if err != nil {
					return err
				}
				lirtp.LinkedInfo = linkedInfo
			}
		}
	}

	return nil
}

// BasicLinkedService the Azure Data Factory nested object which contains the information and credential which can be
// used to connect with related store or compute resource.
type BasicLinkedService interface {
	AsResponsysLinkedService() (*ResponsysLinkedService, bool)
	AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool)
	AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool)
	AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool)
	AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool)
	AsNetezzaLinkedService() (*NetezzaLinkedService, bool)
	AsVerticaLinkedService() (*VerticaLinkedService, bool)
	AsZohoLinkedService() (*ZohoLinkedService, bool)
	AsXeroLinkedService() (*XeroLinkedService, bool)
	AsSquareLinkedService() (*SquareLinkedService, bool)
	AsSparkLinkedService() (*SparkLinkedService, bool)
	AsShopifyLinkedService() (*ShopifyLinkedService, bool)
	AsServiceNowLinkedService() (*ServiceNowLinkedService, bool)
	AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool)
	AsPrestoLinkedService() (*PrestoLinkedService, bool)
	AsPhoenixLinkedService() (*PhoenixLinkedService, bool)
	AsPaypalLinkedService() (*PaypalLinkedService, bool)
	AsMarketoLinkedService() (*MarketoLinkedService, bool)
	AsMariaDBLinkedService() (*MariaDBLinkedService, bool)
	AsMagentoLinkedService() (*MagentoLinkedService, bool)
	AsJiraLinkedService() (*JiraLinkedService, bool)
	AsImpalaLinkedService() (*ImpalaLinkedService, bool)
	AsHubspotLinkedService() (*HubspotLinkedService, bool)
	AsHiveLinkedService() (*HiveLinkedService, bool)
	AsHBaseLinkedService() (*HBaseLinkedService, bool)
	AsGreenplumLinkedService() (*GreenplumLinkedService, bool)
	AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool)
	AsEloquaLinkedService() (*EloquaLinkedService, bool)
	AsDrillLinkedService() (*DrillLinkedService, bool)
	AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool)
	AsConcurLinkedService() (*ConcurLinkedService, bool)
	AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool)
	AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool)
	AsSapHanaLinkedService() (*SapHanaLinkedService, bool)
	AsSapBWLinkedService() (*SapBWLinkedService, bool)
	AsSftpServerLinkedService() (*SftpServerLinkedService, bool)
	AsFtpServerLinkedService() (*FtpServerLinkedService, bool)
	AsHTTPLinkedService() (*HTTPLinkedService, bool)
	AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool)
	AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool)
	AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool)
	AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool)
	AsSapEccLinkedService() (*SapEccLinkedService, bool)
	AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool)
	AsSalesforceLinkedService() (*SalesforceLinkedService, bool)
	AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool)
	AsMongoDbLinkedService() (*MongoDbLinkedService, bool)
	AsCassandraLinkedService() (*CassandraLinkedService, bool)
	AsWebLinkedService() (*WebLinkedService, bool)
	AsODataLinkedService() (*ODataLinkedService, bool)
	AsHdfsLinkedService() (*HdfsLinkedService, bool)
	AsOdbcLinkedService() (*OdbcLinkedService, bool)
	AsAzureMLLinkedService() (*AzureMLLinkedService, bool)
	AsTeradataLinkedService() (*TeradataLinkedService, bool)
	AsDb2LinkedService() (*Db2LinkedService, bool)
	AsSybaseLinkedService() (*SybaseLinkedService, bool)
	AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool)
	AsMySQLLinkedService() (*MySQLLinkedService, bool)
	AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool)
	AsOracleLinkedService() (*OracleLinkedService, bool)
	AsFileServerLinkedService() (*FileServerLinkedService, bool)
	AsHDInsightLinkedService() (*HDInsightLinkedService, bool)
	AsDynamicsLinkedService() (*DynamicsLinkedService, bool)
	AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool)
	AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool)
	AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool)
	AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool)
	AsSQLServerLinkedService() (*SQLServerLinkedService, bool)
	AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool)
	AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool)
	AsLinkedService() (*LinkedService, bool)
}

// LinkedService the Azure Data Factory nested object which contains the information and credential which can
// be used to connect with related store or compute resource.
type LinkedService struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

func unmarshalBasicLinkedService(body []byte) (BasicLinkedService, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeResponsys):
		var rls ResponsysLinkedService
		err := json.Unmarshal(body, &rls)
		return rls, err
	case string(TypeAzureDatabricks):
		var adls AzureDatabricksLinkedService
		err := json.Unmarshal(body, &adls)
		return adls, err
	case string(TypeAzureDataLakeAnalytics):
		var adlals AzureDataLakeAnalyticsLinkedService
		err := json.Unmarshal(body, &adlals)
		return adlals, err
	case string(TypeHDInsightOnDemand):
		var hiodls HDInsightOnDemandLinkedService
		err := json.Unmarshal(body, &hiodls)
		return hiodls, err
	case string(TypeSalesforceMarketingCloud):
		var smcls SalesforceMarketingCloudLinkedService
		err := json.Unmarshal(body, &smcls)
		return smcls, err
	case string(TypeNetezza):
		var nls NetezzaLinkedService
		err := json.Unmarshal(body, &nls)
		return nls, err
	case string(TypeVertica):
		var vls VerticaLinkedService
		err := json.Unmarshal(body, &vls)
		return vls, err
	case string(TypeZoho):
		var zls ZohoLinkedService
		err := json.Unmarshal(body, &zls)
		return zls, err
	case string(TypeXero):
		var xls XeroLinkedService
		err := json.Unmarshal(body, &xls)
		return xls, err
	case string(TypeSquare):
		var sls SquareLinkedService
		err := json.Unmarshal(body, &sls)
		return sls, err
	case string(TypeSpark):
		var sls SparkLinkedService
		err := json.Unmarshal(body, &sls)
		return sls, err
	case string(TypeShopify):
		var sls ShopifyLinkedService
		err := json.Unmarshal(body, &sls)
		return sls, err
	case string(TypeServiceNow):
		var snls ServiceNowLinkedService
		err := json.Unmarshal(body, &snls)
		return snls, err
	case string(TypeQuickBooks):
		var qbls QuickBooksLinkedService
		err := json.Unmarshal(body, &qbls)
		return qbls, err
	case string(TypePresto):
		var pls PrestoLinkedService
		err := json.Unmarshal(body, &pls)
		return pls, err
	case string(TypePhoenix):
		var pls PhoenixLinkedService
		err := json.Unmarshal(body, &pls)
		return pls, err
	case string(TypePaypal):
		var pls PaypalLinkedService
		err := json.Unmarshal(body, &pls)
		return pls, err
	case string(TypeMarketo):
		var mls MarketoLinkedService
		err := json.Unmarshal(body, &mls)
		return mls, err
	case string(TypeMariaDB):
		var mdls MariaDBLinkedService
		err := json.Unmarshal(body, &mdls)
		return mdls, err
	case string(TypeMagento):
		var mls MagentoLinkedService
		err := json.Unmarshal(body, &mls)
		return mls, err
	case string(TypeJira):
		var jls JiraLinkedService
		err := json.Unmarshal(body, &jls)
		return jls, err
	case string(TypeImpala):
		var ils ImpalaLinkedService
		err := json.Unmarshal(body, &ils)
		return ils, err
	case string(TypeHubspot):
		var hls HubspotLinkedService
		err := json.Unmarshal(body, &hls)
		return hls, err
	case string(TypeHive):
		var hls HiveLinkedService
		err := json.Unmarshal(body, &hls)
		return hls, err
	case string(TypeHBase):
		var hbls HBaseLinkedService
		err := json.Unmarshal(body, &hbls)
		return hbls, err
	case string(TypeGreenplum):
		var gls GreenplumLinkedService
		err := json.Unmarshal(body, &gls)
		return gls, err
	case string(TypeGoogleBigQuery):
		var gbqls GoogleBigQueryLinkedService
		err := json.Unmarshal(body, &gbqls)
		return gbqls, err
	case string(TypeEloqua):
		var els EloquaLinkedService
		err := json.Unmarshal(body, &els)
		return els, err
	case string(TypeDrill):
		var dls DrillLinkedService
		err := json.Unmarshal(body, &dls)
		return dls, err
	case string(TypeCouchbase):
		var cls CouchbaseLinkedService
		err := json.Unmarshal(body, &cls)
		return cls, err
	case string(TypeConcur):
		var cls ConcurLinkedService
		err := json.Unmarshal(body, &cls)
		return cls, err
	case string(TypeAzurePostgreSQL):
		var apsls AzurePostgreSQLLinkedService
		err := json.Unmarshal(body, &apsls)
		return apsls, err
	case string(TypeAmazonMWS):
		var amls AmazonMWSLinkedService
		err := json.Unmarshal(body, &amls)
		return amls, err
	case string(TypeSapHana):
		var shls SapHanaLinkedService
		err := json.Unmarshal(body, &shls)
		return shls, err
	case string(TypeSapBW):
		var sbls SapBWLinkedService
		err := json.Unmarshal(body, &sbls)
		return sbls, err
	case string(TypeSftp):
		var ssls SftpServerLinkedService
		err := json.Unmarshal(body, &ssls)
		return ssls, err
	case string(TypeFtpServer):
		var fsls FtpServerLinkedService
		err := json.Unmarshal(body, &fsls)
		return fsls, err
	case string(TypeHTTPServer):
		var hls HTTPLinkedService
		err := json.Unmarshal(body, &hls)
		return hls, err
	case string(TypeAzureSearch):
		var asls AzureSearchLinkedService
		err := json.Unmarshal(body, &asls)
		return asls, err
	case string(TypeCustomDataSource):
		var cdsls CustomDataSourceLinkedService
		err := json.Unmarshal(body, &cdsls)
		return cdsls, err
	case string(TypeAmazonRedshift):
		var arls AmazonRedshiftLinkedService
		err := json.Unmarshal(body, &arls)
		return arls, err
	case string(TypeAmazonS3):
		var asls AmazonS3LinkedService
		err := json.Unmarshal(body, &asls)
		return asls, err
	case string(TypeSapEcc):
		var sels SapEccLinkedService
		err := json.Unmarshal(body, &sels)
		return sels, err
	case string(TypeSapCloudForCustomer):
		var scfcls SapCloudForCustomerLinkedService
		err := json.Unmarshal(body, &scfcls)
		return scfcls, err
	case string(TypeSalesforce):
		var sls SalesforceLinkedService
		err := json.Unmarshal(body, &sls)
		return sls, err
	case string(TypeAzureDataLakeStore):
		var adlsls AzureDataLakeStoreLinkedService
		err := json.Unmarshal(body, &adlsls)
		return adlsls, err
	case string(TypeMongoDb):
		var mdls MongoDbLinkedService
		err := json.Unmarshal(body, &mdls)
		return mdls, err
	case string(TypeCassandra):
		var cls CassandraLinkedService
		err := json.Unmarshal(body, &cls)
		return cls, err
	case string(TypeWeb):
		var wls WebLinkedService
		err := json.Unmarshal(body, &wls)
		return wls, err
	case string(TypeOData):
		var odls ODataLinkedService
		err := json.Unmarshal(body, &odls)
		return odls, err
	case string(TypeHdfs):
		var hls HdfsLinkedService
		err := json.Unmarshal(body, &hls)
		return hls, err
	case string(TypeOdbc):
		var ols OdbcLinkedService
		err := json.Unmarshal(body, &ols)
		return ols, err
	case string(TypeAzureML):
		var amls AzureMLLinkedService
		err := json.Unmarshal(body, &amls)
		return amls, err
	case string(TypeTeradata):
		var TLSVar TeradataLinkedService
		err := json.Unmarshal(body, &TLSVar)
		return TLSVar, err
	case string(TypeDb2):
		var d2ls Db2LinkedService
		err := json.Unmarshal(body, &d2ls)
		return d2ls, err
	case string(TypeSybase):
		var sls SybaseLinkedService
		err := json.Unmarshal(body, &sls)
		return sls, err
	case string(TypePostgreSQL):
		var psls PostgreSQLLinkedService
		err := json.Unmarshal(body, &psls)
		return psls, err
	case string(TypeMySQL):
		var msls MySQLLinkedService
		err := json.Unmarshal(body, &msls)
		return msls, err
	case string(TypeAzureMySQL):
		var amsls AzureMySQLLinkedService
		err := json.Unmarshal(body, &amsls)
		return amsls, err
	case string(TypeOracle):
		var ols OracleLinkedService
		err := json.Unmarshal(body, &ols)
		return ols, err
	case string(TypeFileServer):
		var fsls FileServerLinkedService
		err := json.Unmarshal(body, &fsls)
		return fsls, err
	case string(TypeHDInsight):
		var hils HDInsightLinkedService
		err := json.Unmarshal(body, &hils)
		return hils, err
	case string(TypeDynamics):
		var dls DynamicsLinkedService
		err := json.Unmarshal(body, &dls)
		return dls, err
	case string(TypeCosmosDb):
		var cdls CosmosDbLinkedService
		err := json.Unmarshal(body, &cdls)
		return cdls, err
	case string(TypeAzureKeyVault):
		var akvls AzureKeyVaultLinkedService
		err := json.Unmarshal(body, &akvls)
		return akvls, err
	case string(TypeAzureBatch):
		var abls AzureBatchLinkedService
		err := json.Unmarshal(body, &abls)
		return abls, err
	case string(TypeAzureSQLDatabase):
		var asdls AzureSQLDatabaseLinkedService
		err := json.Unmarshal(body, &asdls)
		return asdls, err
	case string(TypeSQLServer):
		var ssls SQLServerLinkedService
		err := json.Unmarshal(body, &ssls)
		return ssls, err
	case string(TypeAzureSQLDW):
		var asdls AzureSQLDWLinkedService
		err := json.Unmarshal(body, &asdls)
		return asdls, err
	case string(TypeAzureStorage):
		var asls AzureStorageLinkedService
		err := json.Unmarshal(body, &asls)
		return asls, err
	default:
		var ls LinkedService
		err := json.Unmarshal(body, &ls)
		return ls, err
	}
}
func unmarshalBasicLinkedServiceArray(body []byte) ([]BasicLinkedService, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	lsArray := make([]BasicLinkedService, len(rawMessages))

	for index, rawMessage := range rawMessages {
		ls, err := unmarshalBasicLinkedService(*rawMessage)
		if err != nil {
			return nil, err
		}
		lsArray[index] = ls
	}
	return lsArray, nil
}

// MarshalJSON is the custom marshaler for LinkedService.
func (ls LinkedService) MarshalJSON() ([]byte, error) {
	ls.Type = TypeLinkedService
	objectMap := make(map[string]interface{})
	if ls.ConnectVia != nil {
		objectMap["connectVia"] = ls.ConnectVia
	}
	if ls.Description != nil {
		objectMap["description"] = ls.Description
	}
	if ls.Parameters != nil {
		objectMap["parameters"] = ls.Parameters
	}
	if ls.Annotations != nil {
		objectMap["annotations"] = ls.Annotations
	}
	if ls.Type != "" {
		objectMap["type"] = ls.Type
	}
	for k, v := range ls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsLinkedService() (*LinkedService, bool) {
	return &ls, true
}

// AsBasicLinkedService is the BasicLinkedService implementation for LinkedService.
func (ls LinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &ls, true
}

// UnmarshalJSON is the custom unmarshaler for LinkedService struct.
func (ls *LinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ls.AdditionalProperties == nil {
					ls.AdditionalProperties = make(map[string]interface{})
				}
				ls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				ls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				ls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				ls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ls.Type = typeVar
			}
		}
	}

	return nil
}

// LinkedServiceListResponse a list of linked service resources.
type LinkedServiceListResponse struct {
	autorest.Response `json:"-"`
	// Value - List of linked services.
	Value *[]LinkedServiceResource `json:"value,omitempty"`
	// NextLink - The link to the next page of results, if any remaining results exist.
	NextLink *string `json:"nextLink,omitempty"`
}

// LinkedServiceListResponseIterator provides access to a complete listing of LinkedServiceResource values.
type LinkedServiceListResponseIterator struct {
	i    int
	page LinkedServiceListResponsePage
}

// NextWithContext advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
func (iter *LinkedServiceListResponseIterator) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/LinkedServiceListResponseIterator.NextWithContext")
		defer func() {
			sc := -1
			if iter.Response().Response.Response != nil {
				sc = iter.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	iter.i++
	if iter.i < len(iter.page.Values()) {
		return nil
	}
	err = iter.page.NextWithContext(ctx)
	if err != nil {
		iter.i--
		return err
	}
	iter.i = 0
	return nil
}

// Next advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (iter *LinkedServiceListResponseIterator) Next() error {
	return iter.NextWithContext(context.Background())
}

// NotDone returns true if the enumeration should be started or is not yet complete.
func (iter LinkedServiceListResponseIterator) NotDone() bool {
	return iter.page.NotDone() && iter.i < len(iter.page.Values())
}

// Response returns the raw server response from the last page request.
func (iter LinkedServiceListResponseIterator) Response() LinkedServiceListResponse {
	return iter.page.Response()
}

// Value returns the current value or a zero-initialized value if the
// iterator has advanced beyond the end of the collection.
func (iter LinkedServiceListResponseIterator) Value() LinkedServiceResource {
	if !iter.page.NotDone() {
		return LinkedServiceResource{}
	}
	return iter.page.Values()[iter.i]
}

// Creates a new instance of the LinkedServiceListResponseIterator type.
func NewLinkedServiceListResponseIterator(page LinkedServiceListResponsePage) LinkedServiceListResponseIterator {
	return LinkedServiceListResponseIterator{page: page}
}

// IsEmpty returns true if the ListResult contains no values.
func (lslr LinkedServiceListResponse) IsEmpty() bool {
	return lslr.Value == nil || len(*lslr.Value) == 0
}

// hasNextLink returns true if the NextLink is not empty.
func (lslr LinkedServiceListResponse) hasNextLink() bool {
	return lslr.NextLink != nil && len(*lslr.NextLink) != 0
}

// linkedServiceListResponsePreparer prepares a request to retrieve the next set of results.
// It returns nil if no more results exist.
func (lslr LinkedServiceListResponse) linkedServiceListResponsePreparer(ctx context.Context) (*http.Request, error) {
	if !lslr.hasNextLink() {
		return nil, nil
	}
	return autorest.Prepare((&http.Request{}).WithContext(ctx),
		autorest.AsJSON(),
		autorest.AsGet(),
		autorest.WithBaseURL(to.String(lslr.NextLink)))
}

// LinkedServiceListResponsePage contains a page of LinkedServiceResource values.
type LinkedServiceListResponsePage struct {
	fn   func(context.Context, LinkedServiceListResponse) (LinkedServiceListResponse, error)
	lslr LinkedServiceListResponse
}

// NextWithContext advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
func (page *LinkedServiceListResponsePage) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/LinkedServiceListResponsePage.NextWithContext")
		defer func() {
			sc := -1
			if page.Response().Response.Response != nil {
				sc = page.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	for {
		next, err := page.fn(ctx, page.lslr)
		if err != nil {
			return err
		}
		page.lslr = next
		if !next.hasNextLink() || !next.IsEmpty() {
			break
		}
	}
	return nil
}

// Next advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (page *LinkedServiceListResponsePage) Next() error {
	return page.NextWithContext(context.Background())
}

// NotDone returns true if the page enumeration should be started or is not yet complete.
func (page LinkedServiceListResponsePage) NotDone() bool {
	return !page.lslr.IsEmpty()
}

// Response returns the raw server response from the last page request.
func (page LinkedServiceListResponsePage) Response() LinkedServiceListResponse {
	return page.lslr
}

// Values returns the slice of values for the current page or nil if there are no values.
func (page LinkedServiceListResponsePage) Values() []LinkedServiceResource {
	if page.lslr.IsEmpty() {
		return nil
	}
	return *page.lslr.Value
}

// Creates a new instance of the LinkedServiceListResponsePage type.
func NewLinkedServiceListResponsePage(cur LinkedServiceListResponse, getNextPage func(context.Context, LinkedServiceListResponse) (LinkedServiceListResponse, error)) LinkedServiceListResponsePage {
	return LinkedServiceListResponsePage{
		fn:   getNextPage,
		lslr: cur,
	}
}

// LinkedServiceReference linked service reference type.
type LinkedServiceReference struct {
	// Type - Linked service reference type.
	Type *string `json:"type,omitempty"`
	// ReferenceName - Reference LinkedService name.
	ReferenceName *string `json:"referenceName,omitempty"`
	// Parameters - Arguments for LinkedService.
	Parameters map[string]interface{} `json:"parameters"`
}

// MarshalJSON is the custom marshaler for LinkedServiceReference.
func (lsr LinkedServiceReference) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if lsr.Type != nil {
		objectMap["type"] = lsr.Type
	}
	if lsr.ReferenceName != nil {
		objectMap["referenceName"] = lsr.ReferenceName
	}
	if lsr.Parameters != nil {
		objectMap["parameters"] = lsr.Parameters
	}
	return json.Marshal(objectMap)
}

// LinkedServiceResource linked service resource type.
type LinkedServiceResource struct {
	autorest.Response `json:"-"`
	// Properties - Properties of linked service.
	Properties BasicLinkedService `json:"properties,omitempty"`
	// ID - READ-ONLY; The resource identifier.
	ID *string `json:"id,omitempty"`
	// Name - READ-ONLY; The resource name.
	Name *string `json:"name,omitempty"`
	// Type - READ-ONLY; The resource type.
	Type *string `json:"type,omitempty"`
	// Etag - READ-ONLY; Etag identifies change in the resource.
	Etag *string `json:"etag,omitempty"`
}

// MarshalJSON is the custom marshaler for LinkedServiceResource.
func (lsr LinkedServiceResource) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	objectMap["properties"] = lsr.Properties
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for LinkedServiceResource struct.
func (lsr *LinkedServiceResource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "properties":
			if v != nil {
				properties, err := unmarshalBasicLinkedService(*v)
				if err != nil {
					return err
				}
				lsr.Properties = properties
			}
		case "id":
			if v != nil {
				var ID string
				err = json.Unmarshal(*v, &ID)
				if err != nil {
					return err
				}
				lsr.ID = &ID
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				lsr.Name = &name
			}
		case "type":
			if v != nil {
				var typeVar string
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				lsr.Type = &typeVar
			}
		case "etag":
			if v != nil {
				var etag string
				err = json.Unmarshal(*v, &etag)
				if err != nil {
					return err
				}
				lsr.Etag = &etag
			}
		}
	}

	return nil
}

// LookupActivity lookup activity.
type LookupActivity struct {
	// LookupActivityTypeProperties - Lookup activity properties.
	*LookupActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for LookupActivity.
func (la LookupActivity) MarshalJSON() ([]byte, error) {
	la.Type = TypeLookup
	objectMap := make(map[string]interface{})
	if la.LookupActivityTypeProperties != nil {
		objectMap["typeProperties"] = la.LookupActivityTypeProperties
	}
	if la.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = la.LinkedServiceName
	}
	if la.Policy != nil {
		objectMap["policy"] = la.Policy
	}
	if la.Name != nil {
		objectMap["name"] = la.Name
	}
	if la.Description != nil {
		objectMap["description"] = la.Description
	}
	if la.DependsOn != nil {
		objectMap["dependsOn"] = la.DependsOn
	}
	if la.Type != "" {
		objectMap["type"] = la.Type
	}
	for k, v := range la.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsLookupActivity() (*LookupActivity, bool) {
	return &la, true
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &la, true
}

// AsFilterActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for LookupActivity.
func (la LookupActivity) AsBasicActivity() (BasicActivity, bool) {
	return &la, true
}

// UnmarshalJSON is the custom unmarshaler for LookupActivity struct.
func (la *LookupActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var lookupActivityTypeProperties LookupActivityTypeProperties
				err = json.Unmarshal(*v, &lookupActivityTypeProperties)
				if err != nil {
					return err
				}
				la.LookupActivityTypeProperties = &lookupActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				la.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				la.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if la.AdditionalProperties == nil {
					la.AdditionalProperties = make(map[string]interface{})
				}
				la.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				la.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				la.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				la.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				la.Type = typeVar
			}
		}
	}

	return nil
}

// LookupActivityTypeProperties lookup activity properties.
type LookupActivityTypeProperties struct {
	// Source - Dataset-specific source properties, same as copy activity source.
	Source BasicCopySource `json:"source,omitempty"`
	// Dataset - Lookup activity dataset reference.
	Dataset *DatasetReference `json:"dataset,omitempty"`
	// FirstRowOnly - Whether to return first row or all rows. Default value is true. Type: boolean (or Expression with resultType boolean).
	FirstRowOnly interface{} `json:"firstRowOnly,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for LookupActivityTypeProperties struct.
func (latp *LookupActivityTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "source":
			if v != nil {
				source, err := unmarshalBasicCopySource(*v)
				if err != nil {
					return err
				}
				latp.Source = source
			}
		case "dataset":
			if v != nil {
				var dataset DatasetReference
				err = json.Unmarshal(*v, &dataset)
				if err != nil {
					return err
				}
				latp.Dataset = &dataset
			}
		case "firstRowOnly":
			if v != nil {
				var firstRowOnly interface{}
				err = json.Unmarshal(*v, &firstRowOnly)
				if err != nil {
					return err
				}
				latp.FirstRowOnly = firstRowOnly
			}
		}
	}

	return nil
}

// MagentoLinkedService magento server linked service.
type MagentoLinkedService struct {
	// MagentoLinkedServiceTypeProperties - Magento server linked service properties.
	*MagentoLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for MagentoLinkedService.
func (mls MagentoLinkedService) MarshalJSON() ([]byte, error) {
	mls.Type = TypeMagento
	objectMap := make(map[string]interface{})
	if mls.MagentoLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = mls.MagentoLinkedServiceTypeProperties
	}
	if mls.ConnectVia != nil {
		objectMap["connectVia"] = mls.ConnectVia
	}
	if mls.Description != nil {
		objectMap["description"] = mls.Description
	}
	if mls.Parameters != nil {
		objectMap["parameters"] = mls.Parameters
	}
	if mls.Annotations != nil {
		objectMap["annotations"] = mls.Annotations
	}
	if mls.Type != "" {
		objectMap["type"] = mls.Type
	}
	for k, v := range mls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return &mls, true
}

// AsJiraLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for MagentoLinkedService.
func (mls MagentoLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &mls, true
}

// UnmarshalJSON is the custom unmarshaler for MagentoLinkedService struct.
func (mls *MagentoLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var magentoLinkedServiceTypeProperties MagentoLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &magentoLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				mls.MagentoLinkedServiceTypeProperties = &magentoLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if mls.AdditionalProperties == nil {
					mls.AdditionalProperties = make(map[string]interface{})
				}
				mls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				mls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				mls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				mls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				mls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				mls.Type = typeVar
			}
		}
	}

	return nil
}

// MagentoLinkedServiceTypeProperties magento server linked service properties.
type MagentoLinkedServiceTypeProperties struct {
	// Host - The URL of the Magento instance. (i.e. 192.168.222.110/magento3)
	Host interface{} `json:"host,omitempty"`
	// AccessToken - The access token from Magento.
	AccessToken BasicSecretBase `json:"accessToken,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true.
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for MagentoLinkedServiceTypeProperties struct.
func (mlstp *MagentoLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				mlstp.Host = host
			}
		case "accessToken":
			if v != nil {
				accessToken, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				mlstp.AccessToken = accessToken
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				mlstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				mlstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				mlstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				mlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// MagentoObjectDataset magento server dataset.
type MagentoObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for MagentoObjectDataset.
func (mod MagentoObjectDataset) MarshalJSON() ([]byte, error) {
	mod.Type = TypeMagentoObject
	objectMap := make(map[string]interface{})
	if mod.Description != nil {
		objectMap["description"] = mod.Description
	}
	if mod.Structure != nil {
		objectMap["structure"] = mod.Structure
	}
	if mod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = mod.LinkedServiceName
	}
	if mod.Parameters != nil {
		objectMap["parameters"] = mod.Parameters
	}
	if mod.Annotations != nil {
		objectMap["annotations"] = mod.Annotations
	}
	if mod.Type != "" {
		objectMap["type"] = mod.Type
	}
	for k, v := range mod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return &mod, true
}

// AsJiraObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for MagentoObjectDataset.
func (mod MagentoObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &mod, true
}

// UnmarshalJSON is the custom unmarshaler for MagentoObjectDataset struct.
func (mod *MagentoObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if mod.AdditionalProperties == nil {
					mod.AdditionalProperties = make(map[string]interface{})
				}
				mod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				mod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				mod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				mod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				mod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				mod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				mod.Type = typeVar
			}
		}
	}

	return nil
}

// MagentoSource a copy activity Magento server source.
type MagentoSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for MagentoSource.
func (ms MagentoSource) MarshalJSON() ([]byte, error) {
	ms.Type = TypeMagentoSource
	objectMap := make(map[string]interface{})
	if ms.Query != nil {
		objectMap["query"] = ms.Query
	}
	if ms.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ms.SourceRetryCount
	}
	if ms.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ms.SourceRetryWait
	}
	if ms.Type != "" {
		objectMap["type"] = ms.Type
	}
	for k, v := range ms.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsMagentoSource() (*MagentoSource, bool) {
	return &ms, true
}

// AsJiraSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for MagentoSource.
func (ms MagentoSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ms, true
}

// UnmarshalJSON is the custom unmarshaler for MagentoSource struct.
func (ms *MagentoSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ms.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ms.AdditionalProperties == nil {
					ms.AdditionalProperties = make(map[string]interface{})
				}
				ms.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ms.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ms.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ms.Type = typeVar
			}
		}
	}

	return nil
}

// ManagedIntegrationRuntime managed integration runtime, including managed elastic and managed dedicated
// integration runtimes.
type ManagedIntegrationRuntime struct {
	// State - READ-ONLY; Integration runtime state, only valid for managed dedicated integration runtime. Possible values include: 'Initial', 'Stopped', 'Started', 'Starting', 'Stopping', 'NeedRegistration', 'Online', 'Limited', 'Offline'
	State IntegrationRuntimeState `json:"state,omitempty"`
	// ManagedIntegrationRuntimeTypeProperties - Managed integration runtime properties.
	*ManagedIntegrationRuntimeTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Integration runtime description.
	Description *string `json:"description,omitempty"`
	// Type - Possible values include: 'TypeIntegrationRuntime', 'TypeSelfHosted', 'TypeManaged'
	Type TypeBasicIntegrationRuntime `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ManagedIntegrationRuntime.
func (mir ManagedIntegrationRuntime) MarshalJSON() ([]byte, error) {
	mir.Type = TypeManaged
	objectMap := make(map[string]interface{})
	if mir.ManagedIntegrationRuntimeTypeProperties != nil {
		objectMap["typeProperties"] = mir.ManagedIntegrationRuntimeTypeProperties
	}
	if mir.Description != nil {
		objectMap["description"] = mir.Description
	}
	if mir.Type != "" {
		objectMap["type"] = mir.Type
	}
	for k, v := range mir.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSelfHostedIntegrationRuntime is the BasicIntegrationRuntime implementation for ManagedIntegrationRuntime.
func (mir ManagedIntegrationRuntime) AsSelfHostedIntegrationRuntime() (*SelfHostedIntegrationRuntime, bool) {
	return nil, false
}

// AsManagedIntegrationRuntime is the BasicIntegrationRuntime implementation for ManagedIntegrationRuntime.
func (mir ManagedIntegrationRuntime) AsManagedIntegrationRuntime() (*ManagedIntegrationRuntime, bool) {
	return &mir, true
}

// AsIntegrationRuntime is the BasicIntegrationRuntime implementation for ManagedIntegrationRuntime.
func (mir ManagedIntegrationRuntime) AsIntegrationRuntime() (*IntegrationRuntime, bool) {
	return nil, false
}

// AsBasicIntegrationRuntime is the BasicIntegrationRuntime implementation for ManagedIntegrationRuntime.
func (mir ManagedIntegrationRuntime) AsBasicIntegrationRuntime() (BasicIntegrationRuntime, bool) {
	return &mir, true
}

// UnmarshalJSON is the custom unmarshaler for ManagedIntegrationRuntime struct.
func (mir *ManagedIntegrationRuntime) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "state":
			if v != nil {
				var state IntegrationRuntimeState
				err = json.Unmarshal(*v, &state)
				if err != nil {
					return err
				}
				mir.State = state
			}
		case "typeProperties":
			if v != nil {
				var managedIntegrationRuntimeTypeProperties ManagedIntegrationRuntimeTypeProperties
				err = json.Unmarshal(*v, &managedIntegrationRuntimeTypeProperties)
				if err != nil {
					return err
				}
				mir.ManagedIntegrationRuntimeTypeProperties = &managedIntegrationRuntimeTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if mir.AdditionalProperties == nil {
					mir.AdditionalProperties = make(map[string]interface{})
				}
				mir.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				mir.Description = &description
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicIntegrationRuntime
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				mir.Type = typeVar
			}
		}
	}

	return nil
}

// ManagedIntegrationRuntimeError error definition for managed integration runtime.
type ManagedIntegrationRuntimeError struct {
	// Time - READ-ONLY; The time when the error occurred.
	Time *date.Time `json:"time,omitempty"`
	// Code - READ-ONLY; Error code.
	Code *string `json:"code,omitempty"`
	// Parameters - READ-ONLY; Managed integration runtime error parameters.
	Parameters *[]string `json:"parameters,omitempty"`
	// Message - READ-ONLY; Error message.
	Message *string `json:"message,omitempty"`
}

// MarshalJSON is the custom marshaler for ManagedIntegrationRuntimeError.
func (mire ManagedIntegrationRuntimeError) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	return json.Marshal(objectMap)
}

// ManagedIntegrationRuntimeNode properties of integration runtime node.
type ManagedIntegrationRuntimeNode struct {
	// NodeID - READ-ONLY; The managed integration runtime node id.
	NodeID *string `json:"nodeId,omitempty"`
	// Status - READ-ONLY; The managed integration runtime node status. Possible values include: 'ManagedIntegrationRuntimeNodeStatusStarting', 'ManagedIntegrationRuntimeNodeStatusAvailable', 'ManagedIntegrationRuntimeNodeStatusRecycling', 'ManagedIntegrationRuntimeNodeStatusUnavailable'
	Status ManagedIntegrationRuntimeNodeStatus `json:"status,omitempty"`
	// Errors - The errors that occurred on this integration runtime node.
	Errors *[]ManagedIntegrationRuntimeError `json:"errors,omitempty"`
}

// MarshalJSON is the custom marshaler for ManagedIntegrationRuntimeNode.
func (mirn ManagedIntegrationRuntimeNode) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if mirn.Errors != nil {
		objectMap["errors"] = mirn.Errors
	}
	return json.Marshal(objectMap)
}

// ManagedIntegrationRuntimeOperationResult properties of managed integration runtime operation result.
type ManagedIntegrationRuntimeOperationResult struct {
	// Type - READ-ONLY; The operation type. Could be start or stop.
	Type *string `json:"type,omitempty"`
	// StartTime - READ-ONLY; The start time of the operation.
	StartTime *date.Time `json:"startTime,omitempty"`
	// Result - READ-ONLY; The operation result.
	Result *string `json:"result,omitempty"`
	// ErrorCode - READ-ONLY; The error code.
	ErrorCode *string `json:"errorCode,omitempty"`
	// Parameters - READ-ONLY; Managed integration runtime error parameters.
	Parameters *[]string `json:"parameters,omitempty"`
	// ActivityID - READ-ONLY; The activity id for the operation request.
	ActivityID *string `json:"activityId,omitempty"`
}

// MarshalJSON is the custom marshaler for ManagedIntegrationRuntimeOperationResult.
func (miror ManagedIntegrationRuntimeOperationResult) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	return json.Marshal(objectMap)
}

// ManagedIntegrationRuntimeStatus managed integration runtime status.
type ManagedIntegrationRuntimeStatus struct {
	// ManagedIntegrationRuntimeStatusTypeProperties - Managed integration runtime status type properties.
	*ManagedIntegrationRuntimeStatusTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// DataFactoryName - READ-ONLY; The data factory name which the integration runtime belong to.
	DataFactoryName *string `json:"dataFactoryName,omitempty"`
	// State - READ-ONLY; The state of integration runtime. Possible values include: 'Initial', 'Stopped', 'Started', 'Starting', 'Stopping', 'NeedRegistration', 'Online', 'Limited', 'Offline'
	State IntegrationRuntimeState `json:"state,omitempty"`
	// Type - Possible values include: 'TypeBasicIntegrationRuntimeStatusTypeIntegrationRuntimeStatus', 'TypeBasicIntegrationRuntimeStatusTypeSelfHosted', 'TypeBasicIntegrationRuntimeStatusTypeManaged'
	Type TypeBasicIntegrationRuntimeStatus `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ManagedIntegrationRuntimeStatus.
func (mirs ManagedIntegrationRuntimeStatus) MarshalJSON() ([]byte, error) {
	mirs.Type = TypeBasicIntegrationRuntimeStatusTypeManaged
	objectMap := make(map[string]interface{})
	if mirs.ManagedIntegrationRuntimeStatusTypeProperties != nil {
		objectMap["typeProperties"] = mirs.ManagedIntegrationRuntimeStatusTypeProperties
	}
	if mirs.Type != "" {
		objectMap["type"] = mirs.Type
	}
	for k, v := range mirs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSelfHostedIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for ManagedIntegrationRuntimeStatus.
func (mirs ManagedIntegrationRuntimeStatus) AsSelfHostedIntegrationRuntimeStatus() (*SelfHostedIntegrationRuntimeStatus, bool) {
	return nil, false
}

// AsManagedIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for ManagedIntegrationRuntimeStatus.
func (mirs ManagedIntegrationRuntimeStatus) AsManagedIntegrationRuntimeStatus() (*ManagedIntegrationRuntimeStatus, bool) {
	return &mirs, true
}

// AsIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for ManagedIntegrationRuntimeStatus.
func (mirs ManagedIntegrationRuntimeStatus) AsIntegrationRuntimeStatus() (*IntegrationRuntimeStatus, bool) {
	return nil, false
}

// AsBasicIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for ManagedIntegrationRuntimeStatus.
func (mirs ManagedIntegrationRuntimeStatus) AsBasicIntegrationRuntimeStatus() (BasicIntegrationRuntimeStatus, bool) {
	return &mirs, true
}

// UnmarshalJSON is the custom unmarshaler for ManagedIntegrationRuntimeStatus struct.
func (mirs *ManagedIntegrationRuntimeStatus) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var managedIntegrationRuntimeStatusTypeProperties ManagedIntegrationRuntimeStatusTypeProperties
				err = json.Unmarshal(*v, &managedIntegrationRuntimeStatusTypeProperties)
				if err != nil {
					return err
				}
				mirs.ManagedIntegrationRuntimeStatusTypeProperties = &managedIntegrationRuntimeStatusTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if mirs.AdditionalProperties == nil {
					mirs.AdditionalProperties = make(map[string]interface{})
				}
				mirs.AdditionalProperties[k] = additionalProperties
			}
		case "dataFactoryName":
			if v != nil {
				var dataFactoryName string
				err = json.Unmarshal(*v, &dataFactoryName)
				if err != nil {
					return err
				}
				mirs.DataFactoryName = &dataFactoryName
			}
		case "state":
			if v != nil {
				var state IntegrationRuntimeState
				err = json.Unmarshal(*v, &state)
				if err != nil {
					return err
				}
				mirs.State = state
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicIntegrationRuntimeStatus
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				mirs.Type = typeVar
			}
		}
	}

	return nil
}

// ManagedIntegrationRuntimeStatusTypeProperties managed integration runtime status type properties.
type ManagedIntegrationRuntimeStatusTypeProperties struct {
	// CreateTime - READ-ONLY; The time at which the integration runtime was created, in ISO8601 format.
	CreateTime *date.Time `json:"createTime,omitempty"`
	// Nodes - READ-ONLY; The list of nodes for managed integration runtime.
	Nodes *[]ManagedIntegrationRuntimeNode `json:"nodes,omitempty"`
	// OtherErrors - READ-ONLY; The errors that occurred on this integration runtime.
	OtherErrors *[]ManagedIntegrationRuntimeError `json:"otherErrors,omitempty"`
	// LastOperation - READ-ONLY; The last operation result that occurred on this integration runtime.
	LastOperation *ManagedIntegrationRuntimeOperationResult `json:"lastOperation,omitempty"`
}

// MarshalJSON is the custom marshaler for ManagedIntegrationRuntimeStatusTypeProperties.
func (mirstp ManagedIntegrationRuntimeStatusTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	return json.Marshal(objectMap)
}

// ManagedIntegrationRuntimeTypeProperties managed integration runtime type properties.
type ManagedIntegrationRuntimeTypeProperties struct {
	// ComputeProperties - The compute resource for managed integration runtime.
	ComputeProperties *IntegrationRuntimeComputeProperties `json:"computeProperties,omitempty"`
	// SsisProperties - SSIS properties for managed integration runtime.
	SsisProperties *IntegrationRuntimeSsisProperties `json:"ssisProperties,omitempty"`
}

// MariaDBLinkedService mariaDB server linked service.
type MariaDBLinkedService struct {
	// MariaDBLinkedServiceTypeProperties - MariaDB server linked service properties.
	*MariaDBLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for MariaDBLinkedService.
func (mdls MariaDBLinkedService) MarshalJSON() ([]byte, error) {
	mdls.Type = TypeMariaDB
	objectMap := make(map[string]interface{})
	if mdls.MariaDBLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = mdls.MariaDBLinkedServiceTypeProperties
	}
	if mdls.ConnectVia != nil {
		objectMap["connectVia"] = mdls.ConnectVia
	}
	if mdls.Description != nil {
		objectMap["description"] = mdls.Description
	}
	if mdls.Parameters != nil {
		objectMap["parameters"] = mdls.Parameters
	}
	if mdls.Annotations != nil {
		objectMap["annotations"] = mdls.Annotations
	}
	if mdls.Type != "" {
		objectMap["type"] = mdls.Type
	}
	for k, v := range mdls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return &mdls, true
}

// AsMagentoLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for MariaDBLinkedService.
func (mdls MariaDBLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &mdls, true
}

// UnmarshalJSON is the custom unmarshaler for MariaDBLinkedService struct.
func (mdls *MariaDBLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var mariaDBLinkedServiceTypeProperties MariaDBLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &mariaDBLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				mdls.MariaDBLinkedServiceTypeProperties = &mariaDBLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if mdls.AdditionalProperties == nil {
					mdls.AdditionalProperties = make(map[string]interface{})
				}
				mdls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				mdls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				mdls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				mdls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				mdls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				mdls.Type = typeVar
			}
		}
	}

	return nil
}

// MariaDBLinkedServiceTypeProperties mariaDB server linked service properties.
type MariaDBLinkedServiceTypeProperties struct {
	// ConnectionString - An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// MariaDBSource a copy activity MariaDB server source.
type MariaDBSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for MariaDBSource.
func (mds MariaDBSource) MarshalJSON() ([]byte, error) {
	mds.Type = TypeMariaDBSource
	objectMap := make(map[string]interface{})
	if mds.Query != nil {
		objectMap["query"] = mds.Query
	}
	if mds.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = mds.SourceRetryCount
	}
	if mds.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = mds.SourceRetryWait
	}
	if mds.Type != "" {
		objectMap["type"] = mds.Type
	}
	for k, v := range mds.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return &mds, true
}

// AsMagentoSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for MariaDBSource.
func (mds MariaDBSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &mds, true
}

// UnmarshalJSON is the custom unmarshaler for MariaDBSource struct.
func (mds *MariaDBSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				mds.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if mds.AdditionalProperties == nil {
					mds.AdditionalProperties = make(map[string]interface{})
				}
				mds.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				mds.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				mds.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				mds.Type = typeVar
			}
		}
	}

	return nil
}

// MariaDBTableDataset mariaDB server dataset.
type MariaDBTableDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) MarshalJSON() ([]byte, error) {
	mdtd.Type = TypeMariaDBTable
	objectMap := make(map[string]interface{})
	if mdtd.Description != nil {
		objectMap["description"] = mdtd.Description
	}
	if mdtd.Structure != nil {
		objectMap["structure"] = mdtd.Structure
	}
	if mdtd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = mdtd.LinkedServiceName
	}
	if mdtd.Parameters != nil {
		objectMap["parameters"] = mdtd.Parameters
	}
	if mdtd.Annotations != nil {
		objectMap["annotations"] = mdtd.Annotations
	}
	if mdtd.Type != "" {
		objectMap["type"] = mdtd.Type
	}
	for k, v := range mdtd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return &mdtd, true
}

// AsMagentoObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for MariaDBTableDataset.
func (mdtd MariaDBTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &mdtd, true
}

// UnmarshalJSON is the custom unmarshaler for MariaDBTableDataset struct.
func (mdtd *MariaDBTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if mdtd.AdditionalProperties == nil {
					mdtd.AdditionalProperties = make(map[string]interface{})
				}
				mdtd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				mdtd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				mdtd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				mdtd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				mdtd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				mdtd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				mdtd.Type = typeVar
			}
		}
	}

	return nil
}

// MarketoLinkedService marketo server linked service.
type MarketoLinkedService struct {
	// MarketoLinkedServiceTypeProperties - Marketo server linked service properties.
	*MarketoLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for MarketoLinkedService.
func (mls MarketoLinkedService) MarshalJSON() ([]byte, error) {
	mls.Type = TypeMarketo
	objectMap := make(map[string]interface{})
	if mls.MarketoLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = mls.MarketoLinkedServiceTypeProperties
	}
	if mls.ConnectVia != nil {
		objectMap["connectVia"] = mls.ConnectVia
	}
	if mls.Description != nil {
		objectMap["description"] = mls.Description
	}
	if mls.Parameters != nil {
		objectMap["parameters"] = mls.Parameters
	}
	if mls.Annotations != nil {
		objectMap["annotations"] = mls.Annotations
	}
	if mls.Type != "" {
		objectMap["type"] = mls.Type
	}
	for k, v := range mls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return &mls, true
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for MarketoLinkedService.
func (mls MarketoLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &mls, true
}

// UnmarshalJSON is the custom unmarshaler for MarketoLinkedService struct.
func (mls *MarketoLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var marketoLinkedServiceTypeProperties MarketoLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &marketoLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				mls.MarketoLinkedServiceTypeProperties = &marketoLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if mls.AdditionalProperties == nil {
					mls.AdditionalProperties = make(map[string]interface{})
				}
				mls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				mls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				mls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				mls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				mls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				mls.Type = typeVar
			}
		}
	}

	return nil
}

// MarketoLinkedServiceTypeProperties marketo server linked service properties.
type MarketoLinkedServiceTypeProperties struct {
	// Endpoint - The endpoint of the Marketo server. (i.e. 123-ABC-321.mktorest.com)
	Endpoint interface{} `json:"endpoint,omitempty"`
	// ClientID - The client Id of your Marketo service.
	ClientID interface{} `json:"clientId,omitempty"`
	// ClientSecret - The client secret of your Marketo service.
	ClientSecret BasicSecretBase `json:"clientSecret,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true.
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for MarketoLinkedServiceTypeProperties struct.
func (mlstp *MarketoLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "endpoint":
			if v != nil {
				var endpoint interface{}
				err = json.Unmarshal(*v, &endpoint)
				if err != nil {
					return err
				}
				mlstp.Endpoint = endpoint
			}
		case "clientId":
			if v != nil {
				var clientID interface{}
				err = json.Unmarshal(*v, &clientID)
				if err != nil {
					return err
				}
				mlstp.ClientID = clientID
			}
		case "clientSecret":
			if v != nil {
				clientSecret, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				mlstp.ClientSecret = clientSecret
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				mlstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				mlstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				mlstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				mlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// MarketoObjectDataset marketo server dataset.
type MarketoObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for MarketoObjectDataset.
func (mod MarketoObjectDataset) MarshalJSON() ([]byte, error) {
	mod.Type = TypeMarketoObject
	objectMap := make(map[string]interface{})
	if mod.Description != nil {
		objectMap["description"] = mod.Description
	}
	if mod.Structure != nil {
		objectMap["structure"] = mod.Structure
	}
	if mod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = mod.LinkedServiceName
	}
	if mod.Parameters != nil {
		objectMap["parameters"] = mod.Parameters
	}
	if mod.Annotations != nil {
		objectMap["annotations"] = mod.Annotations
	}
	if mod.Type != "" {
		objectMap["type"] = mod.Type
	}
	for k, v := range mod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return &mod, true
}

// AsMariaDBTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for MarketoObjectDataset.
func (mod MarketoObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &mod, true
}

// UnmarshalJSON is the custom unmarshaler for MarketoObjectDataset struct.
func (mod *MarketoObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if mod.AdditionalProperties == nil {
					mod.AdditionalProperties = make(map[string]interface{})
				}
				mod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				mod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				mod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				mod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				mod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				mod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				mod.Type = typeVar
			}
		}
	}

	return nil
}

// MarketoSource a copy activity Marketo server source.
type MarketoSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for MarketoSource.
func (ms MarketoSource) MarshalJSON() ([]byte, error) {
	ms.Type = TypeMarketoSource
	objectMap := make(map[string]interface{})
	if ms.Query != nil {
		objectMap["query"] = ms.Query
	}
	if ms.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ms.SourceRetryCount
	}
	if ms.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ms.SourceRetryWait
	}
	if ms.Type != "" {
		objectMap["type"] = ms.Type
	}
	for k, v := range ms.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsMarketoSource() (*MarketoSource, bool) {
	return &ms, true
}

// AsMariaDBSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for MarketoSource.
func (ms MarketoSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ms, true
}

// UnmarshalJSON is the custom unmarshaler for MarketoSource struct.
func (ms *MarketoSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ms.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ms.AdditionalProperties == nil {
					ms.AdditionalProperties = make(map[string]interface{})
				}
				ms.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ms.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ms.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ms.Type = typeVar
			}
		}
	}

	return nil
}

// MongoDbCollectionDataset the MongoDB database dataset.
type MongoDbCollectionDataset struct {
	// MongoDbCollectionDatasetTypeProperties - MongoDB database dataset properties.
	*MongoDbCollectionDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) MarshalJSON() ([]byte, error) {
	mdcd.Type = TypeMongoDbCollection
	objectMap := make(map[string]interface{})
	if mdcd.MongoDbCollectionDatasetTypeProperties != nil {
		objectMap["typeProperties"] = mdcd.MongoDbCollectionDatasetTypeProperties
	}
	if mdcd.Description != nil {
		objectMap["description"] = mdcd.Description
	}
	if mdcd.Structure != nil {
		objectMap["structure"] = mdcd.Structure
	}
	if mdcd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = mdcd.LinkedServiceName
	}
	if mdcd.Parameters != nil {
		objectMap["parameters"] = mdcd.Parameters
	}
	if mdcd.Annotations != nil {
		objectMap["annotations"] = mdcd.Annotations
	}
	if mdcd.Type != "" {
		objectMap["type"] = mdcd.Type
	}
	for k, v := range mdcd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return &mdcd, true
}

// AsFileShareDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for MongoDbCollectionDataset.
func (mdcd MongoDbCollectionDataset) AsBasicDataset() (BasicDataset, bool) {
	return &mdcd, true
}

// UnmarshalJSON is the custom unmarshaler for MongoDbCollectionDataset struct.
func (mdcd *MongoDbCollectionDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var mongoDbCollectionDatasetTypeProperties MongoDbCollectionDatasetTypeProperties
				err = json.Unmarshal(*v, &mongoDbCollectionDatasetTypeProperties)
				if err != nil {
					return err
				}
				mdcd.MongoDbCollectionDatasetTypeProperties = &mongoDbCollectionDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if mdcd.AdditionalProperties == nil {
					mdcd.AdditionalProperties = make(map[string]interface{})
				}
				mdcd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				mdcd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				mdcd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				mdcd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				mdcd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				mdcd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				mdcd.Type = typeVar
			}
		}
	}

	return nil
}

// MongoDbCollectionDatasetTypeProperties mongoDB database dataset properties.
type MongoDbCollectionDatasetTypeProperties struct {
	// CollectionName - The table name of the MongoDB database. Type: string (or Expression with resultType string).
	CollectionName interface{} `json:"collectionName,omitempty"`
}

// MongoDbLinkedService linked service for MongoDb data source.
type MongoDbLinkedService struct {
	// MongoDbLinkedServiceTypeProperties - MongoDB linked service properties.
	*MongoDbLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for MongoDbLinkedService.
func (mdls MongoDbLinkedService) MarshalJSON() ([]byte, error) {
	mdls.Type = TypeMongoDb
	objectMap := make(map[string]interface{})
	if mdls.MongoDbLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = mdls.MongoDbLinkedServiceTypeProperties
	}
	if mdls.ConnectVia != nil {
		objectMap["connectVia"] = mdls.ConnectVia
	}
	if mdls.Description != nil {
		objectMap["description"] = mdls.Description
	}
	if mdls.Parameters != nil {
		objectMap["parameters"] = mdls.Parameters
	}
	if mdls.Annotations != nil {
		objectMap["annotations"] = mdls.Annotations
	}
	if mdls.Type != "" {
		objectMap["type"] = mdls.Type
	}
	for k, v := range mdls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return &mdls, true
}

// AsCassandraLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for MongoDbLinkedService.
func (mdls MongoDbLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &mdls, true
}

// UnmarshalJSON is the custom unmarshaler for MongoDbLinkedService struct.
func (mdls *MongoDbLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var mongoDbLinkedServiceTypeProperties MongoDbLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &mongoDbLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				mdls.MongoDbLinkedServiceTypeProperties = &mongoDbLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if mdls.AdditionalProperties == nil {
					mdls.AdditionalProperties = make(map[string]interface{})
				}
				mdls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				mdls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				mdls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				mdls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				mdls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				mdls.Type = typeVar
			}
		}
	}

	return nil
}

// MongoDbLinkedServiceTypeProperties mongoDB linked service properties.
type MongoDbLinkedServiceTypeProperties struct {
	// Server - The IP address or server name of the MongoDB server. Type: string (or Expression with resultType string).
	Server interface{} `json:"server,omitempty"`
	// AuthenticationType - The authentication type to be used to connect to the MongoDB database. Possible values include: 'MongoDbAuthenticationTypeBasic', 'MongoDbAuthenticationTypeAnonymous'
	AuthenticationType MongoDbAuthenticationType `json:"authenticationType,omitempty"`
	// DatabaseName - The name of the MongoDB database that you want to access. Type: string (or Expression with resultType string).
	DatabaseName interface{} `json:"databaseName,omitempty"`
	// Username - Username for authentication. Type: string (or Expression with resultType string).
	Username interface{} `json:"username,omitempty"`
	// Password - Password for authentication.
	Password BasicSecretBase `json:"password,omitempty"`
	// AuthSource - Database to verify the username and password. Type: string (or Expression with resultType string).
	AuthSource interface{} `json:"authSource,omitempty"`
	// Port - 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 integer), minimum: 0.
	Port interface{} `json:"port,omitempty"`
	// EnableSsl - Specifies whether the connections to the server are encrypted using SSL. The default value is false. Type: boolean (or Expression with resultType boolean).
	EnableSsl interface{} `json:"enableSsl,omitempty"`
	// AllowSelfSignedServerCert - Specifies whether to allow self-signed certificates from the server. The default value is false. Type: boolean (or Expression with resultType boolean).
	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for MongoDbLinkedServiceTypeProperties struct.
func (mdlstp *MongoDbLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "server":
			if v != nil {
				var server interface{}
				err = json.Unmarshal(*v, &server)
				if err != nil {
					return err
				}
				mdlstp.Server = server
			}
		case "authenticationType":
			if v != nil {
				var authenticationType MongoDbAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				mdlstp.AuthenticationType = authenticationType
			}
		case "databaseName":
			if v != nil {
				var databaseName interface{}
				err = json.Unmarshal(*v, &databaseName)
				if err != nil {
					return err
				}
				mdlstp.DatabaseName = databaseName
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				mdlstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				mdlstp.Password = password
			}
		case "authSource":
			if v != nil {
				var authSource interface{}
				err = json.Unmarshal(*v, &authSource)
				if err != nil {
					return err
				}
				mdlstp.AuthSource = authSource
			}
		case "port":
			if v != nil {
				var port interface{}
				err = json.Unmarshal(*v, &port)
				if err != nil {
					return err
				}
				mdlstp.Port = port
			}
		case "enableSsl":
			if v != nil {
				var enableSsl interface{}
				err = json.Unmarshal(*v, &enableSsl)
				if err != nil {
					return err
				}
				mdlstp.EnableSsl = enableSsl
			}
		case "allowSelfSignedServerCert":
			if v != nil {
				var allowSelfSignedServerCert interface{}
				err = json.Unmarshal(*v, &allowSelfSignedServerCert)
				if err != nil {
					return err
				}
				mdlstp.AllowSelfSignedServerCert = allowSelfSignedServerCert
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				mdlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// MongoDbSource a copy activity source for a MongoDB database.
type MongoDbSource struct {
	// Query - Database query. Should be a SQL-92 query expression. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for MongoDbSource.
func (mds MongoDbSource) MarshalJSON() ([]byte, error) {
	mds.Type = TypeMongoDbSource
	objectMap := make(map[string]interface{})
	if mds.Query != nil {
		objectMap["query"] = mds.Query
	}
	if mds.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = mds.SourceRetryCount
	}
	if mds.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = mds.SourceRetryWait
	}
	if mds.Type != "" {
		objectMap["type"] = mds.Type
	}
	for k, v := range mds.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return &mds, true
}

// AsCassandraSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for MongoDbSource.
func (mds MongoDbSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &mds, true
}

// UnmarshalJSON is the custom unmarshaler for MongoDbSource struct.
func (mds *MongoDbSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				mds.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if mds.AdditionalProperties == nil {
					mds.AdditionalProperties = make(map[string]interface{})
				}
				mds.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				mds.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				mds.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				mds.Type = typeVar
			}
		}
	}

	return nil
}

// BasicMultiplePipelineTrigger base class for all triggers that support one to many model for trigger to pipeline.
type BasicMultiplePipelineTrigger interface {
	AsBlobEventsTrigger() (*BlobEventsTrigger, bool)
	AsBlobTrigger() (*BlobTrigger, bool)
	AsScheduleTrigger() (*ScheduleTrigger, bool)
	AsMultiplePipelineTrigger() (*MultiplePipelineTrigger, bool)
}

// MultiplePipelineTrigger base class for all triggers that support one to many model for trigger to pipeline.
type MultiplePipelineTrigger struct {
	// Pipelines - Pipelines that need to be started.
	Pipelines *[]TriggerPipelineReference `json:"pipelines,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Trigger description.
	Description *string `json:"description,omitempty"`
	// RuntimeState - READ-ONLY; Indicates if trigger is running or not. Updated when Start/Stop APIs are called on the Trigger. Possible values include: 'TriggerRuntimeStateStarted', 'TriggerRuntimeStateStopped', 'TriggerRuntimeStateDisabled'
	RuntimeState TriggerRuntimeState `json:"runtimeState,omitempty"`
	// Type - Possible values include: 'TypeTrigger', 'TypeTumblingWindowTrigger', 'TypeBlobEventsTrigger', 'TypeBlobTrigger', 'TypeScheduleTrigger', 'TypeMultiplePipelineTrigger'
	Type TypeBasicTrigger `json:"type,omitempty"`
}

func unmarshalBasicMultiplePipelineTrigger(body []byte) (BasicMultiplePipelineTrigger, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeBlobEventsTrigger):
		var bet BlobEventsTrigger
		err := json.Unmarshal(body, &bet)
		return bet, err
	case string(TypeBlobTrigger):
		var bt BlobTrigger
		err := json.Unmarshal(body, &bt)
		return bt, err
	case string(TypeScheduleTrigger):
		var st ScheduleTrigger
		err := json.Unmarshal(body, &st)
		return st, err
	default:
		var mpt MultiplePipelineTrigger
		err := json.Unmarshal(body, &mpt)
		return mpt, err
	}
}
func unmarshalBasicMultiplePipelineTriggerArray(body []byte) ([]BasicMultiplePipelineTrigger, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	mptArray := make([]BasicMultiplePipelineTrigger, len(rawMessages))

	for index, rawMessage := range rawMessages {
		mpt, err := unmarshalBasicMultiplePipelineTrigger(*rawMessage)
		if err != nil {
			return nil, err
		}
		mptArray[index] = mpt
	}
	return mptArray, nil
}

// MarshalJSON is the custom marshaler for MultiplePipelineTrigger.
func (mpt MultiplePipelineTrigger) MarshalJSON() ([]byte, error) {
	mpt.Type = TypeMultiplePipelineTrigger
	objectMap := make(map[string]interface{})
	if mpt.Pipelines != nil {
		objectMap["pipelines"] = mpt.Pipelines
	}
	if mpt.Description != nil {
		objectMap["description"] = mpt.Description
	}
	if mpt.Type != "" {
		objectMap["type"] = mpt.Type
	}
	for k, v := range mpt.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsTumblingWindowTrigger is the BasicTrigger implementation for MultiplePipelineTrigger.
func (mpt MultiplePipelineTrigger) AsTumblingWindowTrigger() (*TumblingWindowTrigger, bool) {
	return nil, false
}

// AsBlobEventsTrigger is the BasicTrigger implementation for MultiplePipelineTrigger.
func (mpt MultiplePipelineTrigger) AsBlobEventsTrigger() (*BlobEventsTrigger, bool) {
	return nil, false
}

// AsBlobTrigger is the BasicTrigger implementation for MultiplePipelineTrigger.
func (mpt MultiplePipelineTrigger) AsBlobTrigger() (*BlobTrigger, bool) {
	return nil, false
}

// AsScheduleTrigger is the BasicTrigger implementation for MultiplePipelineTrigger.
func (mpt MultiplePipelineTrigger) AsScheduleTrigger() (*ScheduleTrigger, bool) {
	return nil, false
}

// AsMultiplePipelineTrigger is the BasicTrigger implementation for MultiplePipelineTrigger.
func (mpt MultiplePipelineTrigger) AsMultiplePipelineTrigger() (*MultiplePipelineTrigger, bool) {
	return &mpt, true
}

// AsBasicMultiplePipelineTrigger is the BasicTrigger implementation for MultiplePipelineTrigger.
func (mpt MultiplePipelineTrigger) AsBasicMultiplePipelineTrigger() (BasicMultiplePipelineTrigger, bool) {
	return &mpt, true
}

// AsTrigger is the BasicTrigger implementation for MultiplePipelineTrigger.
func (mpt MultiplePipelineTrigger) AsTrigger() (*Trigger, bool) {
	return nil, false
}

// AsBasicTrigger is the BasicTrigger implementation for MultiplePipelineTrigger.
func (mpt MultiplePipelineTrigger) AsBasicTrigger() (BasicTrigger, bool) {
	return &mpt, true
}

// UnmarshalJSON is the custom unmarshaler for MultiplePipelineTrigger struct.
func (mpt *MultiplePipelineTrigger) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "pipelines":
			if v != nil {
				var pipelines []TriggerPipelineReference
				err = json.Unmarshal(*v, &pipelines)
				if err != nil {
					return err
				}
				mpt.Pipelines = &pipelines
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if mpt.AdditionalProperties == nil {
					mpt.AdditionalProperties = make(map[string]interface{})
				}
				mpt.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				mpt.Description = &description
			}
		case "runtimeState":
			if v != nil {
				var runtimeState TriggerRuntimeState
				err = json.Unmarshal(*v, &runtimeState)
				if err != nil {
					return err
				}
				mpt.RuntimeState = runtimeState
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicTrigger
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				mpt.Type = typeVar
			}
		}
	}

	return nil
}

// MySQLLinkedService linked service for MySQL data source.
type MySQLLinkedService struct {
	// MySQLLinkedServiceTypeProperties - MySQL linked service properties.
	*MySQLLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for MySQLLinkedService.
func (msls MySQLLinkedService) MarshalJSON() ([]byte, error) {
	msls.Type = TypeMySQL
	objectMap := make(map[string]interface{})
	if msls.MySQLLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = msls.MySQLLinkedServiceTypeProperties
	}
	if msls.ConnectVia != nil {
		objectMap["connectVia"] = msls.ConnectVia
	}
	if msls.Description != nil {
		objectMap["description"] = msls.Description
	}
	if msls.Parameters != nil {
		objectMap["parameters"] = msls.Parameters
	}
	if msls.Annotations != nil {
		objectMap["annotations"] = msls.Annotations
	}
	if msls.Type != "" {
		objectMap["type"] = msls.Type
	}
	for k, v := range msls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return &msls, true
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for MySQLLinkedService.
func (msls MySQLLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &msls, true
}

// UnmarshalJSON is the custom unmarshaler for MySQLLinkedService struct.
func (msls *MySQLLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var mySQLLinkedServiceTypeProperties MySQLLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &mySQLLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				msls.MySQLLinkedServiceTypeProperties = &mySQLLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if msls.AdditionalProperties == nil {
					msls.AdditionalProperties = make(map[string]interface{})
				}
				msls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				msls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				msls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				msls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				msls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				msls.Type = typeVar
			}
		}
	}

	return nil
}

// MySQLLinkedServiceTypeProperties mySQL linked service properties.
type MySQLLinkedServiceTypeProperties struct {
	// ConnectionString - The connection string.
	ConnectionString BasicSecretBase `json:"connectionString,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for MySQLLinkedServiceTypeProperties struct.
func (mslstp *MySQLLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "connectionString":
			if v != nil {
				connectionString, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				mslstp.ConnectionString = connectionString
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				mslstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// NetezzaLinkedService netezza linked service.
type NetezzaLinkedService struct {
	// NetezzaLinkedServiceTypeProperties - Netezza linked service properties.
	*NetezzaLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for NetezzaLinkedService.
func (nls NetezzaLinkedService) MarshalJSON() ([]byte, error) {
	nls.Type = TypeNetezza
	objectMap := make(map[string]interface{})
	if nls.NetezzaLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = nls.NetezzaLinkedServiceTypeProperties
	}
	if nls.ConnectVia != nil {
		objectMap["connectVia"] = nls.ConnectVia
	}
	if nls.Description != nil {
		objectMap["description"] = nls.Description
	}
	if nls.Parameters != nil {
		objectMap["parameters"] = nls.Parameters
	}
	if nls.Annotations != nil {
		objectMap["annotations"] = nls.Annotations
	}
	if nls.Type != "" {
		objectMap["type"] = nls.Type
	}
	for k, v := range nls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return &nls, true
}

// AsVerticaLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for NetezzaLinkedService.
func (nls NetezzaLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &nls, true
}

// UnmarshalJSON is the custom unmarshaler for NetezzaLinkedService struct.
func (nls *NetezzaLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var netezzaLinkedServiceTypeProperties NetezzaLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &netezzaLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				nls.NetezzaLinkedServiceTypeProperties = &netezzaLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if nls.AdditionalProperties == nil {
					nls.AdditionalProperties = make(map[string]interface{})
				}
				nls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				nls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				nls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				nls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				nls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				nls.Type = typeVar
			}
		}
	}

	return nil
}

// NetezzaLinkedServiceTypeProperties netezza linked service properties.
type NetezzaLinkedServiceTypeProperties struct {
	// ConnectionString - An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// NetezzaSource a copy activity Netezza source.
type NetezzaSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for NetezzaSource.
func (ns NetezzaSource) MarshalJSON() ([]byte, error) {
	ns.Type = TypeNetezzaSource
	objectMap := make(map[string]interface{})
	if ns.Query != nil {
		objectMap["query"] = ns.Query
	}
	if ns.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ns.SourceRetryCount
	}
	if ns.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ns.SourceRetryWait
	}
	if ns.Type != "" {
		objectMap["type"] = ns.Type
	}
	for k, v := range ns.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return &ns, true
}

// AsZohoSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for NetezzaSource.
func (ns NetezzaSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ns, true
}

// UnmarshalJSON is the custom unmarshaler for NetezzaSource struct.
func (ns *NetezzaSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ns.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ns.AdditionalProperties == nil {
					ns.AdditionalProperties = make(map[string]interface{})
				}
				ns.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ns.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ns.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ns.Type = typeVar
			}
		}
	}

	return nil
}

// NetezzaTableDataset netezza dataset.
type NetezzaTableDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for NetezzaTableDataset.
func (ntd NetezzaTableDataset) MarshalJSON() ([]byte, error) {
	ntd.Type = TypeNetezzaTable
	objectMap := make(map[string]interface{})
	if ntd.Description != nil {
		objectMap["description"] = ntd.Description
	}
	if ntd.Structure != nil {
		objectMap["structure"] = ntd.Structure
	}
	if ntd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = ntd.LinkedServiceName
	}
	if ntd.Parameters != nil {
		objectMap["parameters"] = ntd.Parameters
	}
	if ntd.Annotations != nil {
		objectMap["annotations"] = ntd.Annotations
	}
	if ntd.Type != "" {
		objectMap["type"] = ntd.Type
	}
	for k, v := range ntd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return &ntd, true
}

// AsZohoObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for NetezzaTableDataset.
func (ntd NetezzaTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &ntd, true
}

// UnmarshalJSON is the custom unmarshaler for NetezzaTableDataset struct.
func (ntd *NetezzaTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ntd.AdditionalProperties == nil {
					ntd.AdditionalProperties = make(map[string]interface{})
				}
				ntd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ntd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				ntd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				ntd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				ntd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				ntd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ntd.Type = typeVar
			}
		}
	}

	return nil
}

// ODataLinkedService open Data Protocol (OData) linked service.
type ODataLinkedService struct {
	// ODataLinkedServiceTypeProperties - OData linked service properties.
	*ODataLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ODataLinkedService.
func (odls ODataLinkedService) MarshalJSON() ([]byte, error) {
	odls.Type = TypeOData
	objectMap := make(map[string]interface{})
	if odls.ODataLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = odls.ODataLinkedServiceTypeProperties
	}
	if odls.ConnectVia != nil {
		objectMap["connectVia"] = odls.ConnectVia
	}
	if odls.Description != nil {
		objectMap["description"] = odls.Description
	}
	if odls.Parameters != nil {
		objectMap["parameters"] = odls.Parameters
	}
	if odls.Annotations != nil {
		objectMap["annotations"] = odls.Annotations
	}
	if odls.Type != "" {
		objectMap["type"] = odls.Type
	}
	for k, v := range odls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return &odls, true
}

// AsHdfsLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for ODataLinkedService.
func (odls ODataLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &odls, true
}

// UnmarshalJSON is the custom unmarshaler for ODataLinkedService struct.
func (odls *ODataLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var oDataLinkedServiceTypeProperties ODataLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &oDataLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				odls.ODataLinkedServiceTypeProperties = &oDataLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if odls.AdditionalProperties == nil {
					odls.AdditionalProperties = make(map[string]interface{})
				}
				odls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				odls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				odls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				odls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				odls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				odls.Type = typeVar
			}
		}
	}

	return nil
}

// ODataLinkedServiceTypeProperties oData linked service properties.
type ODataLinkedServiceTypeProperties struct {
	// URL - The URL of the OData service endpoint. Type: string (or Expression with resultType string).
	URL interface{} `json:"url,omitempty"`
	// AuthenticationType - Type of authentication used to connect to the OData service. Possible values include: 'ODataAuthenticationTypeBasic', 'ODataAuthenticationTypeAnonymous'
	AuthenticationType ODataAuthenticationType `json:"authenticationType,omitempty"`
	// UserName - User name of the OData service. Type: string (or Expression with resultType string).
	UserName interface{} `json:"userName,omitempty"`
	// Password - Password of the OData service.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for ODataLinkedServiceTypeProperties struct.
func (odlstp *ODataLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "url":
			if v != nil {
				var URL interface{}
				err = json.Unmarshal(*v, &URL)
				if err != nil {
					return err
				}
				odlstp.URL = URL
			}
		case "authenticationType":
			if v != nil {
				var authenticationType ODataAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				odlstp.AuthenticationType = authenticationType
			}
		case "userName":
			if v != nil {
				var userName interface{}
				err = json.Unmarshal(*v, &userName)
				if err != nil {
					return err
				}
				odlstp.UserName = userName
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				odlstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				odlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// ODataResourceDataset the Open Data Protocol (OData) resource dataset.
type ODataResourceDataset struct {
	// ODataResourceDatasetTypeProperties - OData dataset properties.
	*ODataResourceDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ODataResourceDataset.
func (odrd ODataResourceDataset) MarshalJSON() ([]byte, error) {
	odrd.Type = TypeODataResource
	objectMap := make(map[string]interface{})
	if odrd.ODataResourceDatasetTypeProperties != nil {
		objectMap["typeProperties"] = odrd.ODataResourceDatasetTypeProperties
	}
	if odrd.Description != nil {
		objectMap["description"] = odrd.Description
	}
	if odrd.Structure != nil {
		objectMap["structure"] = odrd.Structure
	}
	if odrd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = odrd.LinkedServiceName
	}
	if odrd.Parameters != nil {
		objectMap["parameters"] = odrd.Parameters
	}
	if odrd.Annotations != nil {
		objectMap["annotations"] = odrd.Annotations
	}
	if odrd.Type != "" {
		objectMap["type"] = odrd.Type
	}
	for k, v := range odrd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return &odrd, true
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for ODataResourceDataset.
func (odrd ODataResourceDataset) AsBasicDataset() (BasicDataset, bool) {
	return &odrd, true
}

// UnmarshalJSON is the custom unmarshaler for ODataResourceDataset struct.
func (odrd *ODataResourceDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var oDataResourceDatasetTypeProperties ODataResourceDatasetTypeProperties
				err = json.Unmarshal(*v, &oDataResourceDatasetTypeProperties)
				if err != nil {
					return err
				}
				odrd.ODataResourceDatasetTypeProperties = &oDataResourceDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if odrd.AdditionalProperties == nil {
					odrd.AdditionalProperties = make(map[string]interface{})
				}
				odrd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				odrd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				odrd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				odrd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				odrd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				odrd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				odrd.Type = typeVar
			}
		}
	}

	return nil
}

// ODataResourceDatasetTypeProperties oData dataset properties.
type ODataResourceDatasetTypeProperties struct {
	// Path - The OData resource path. Type: string (or Expression with resultType string).
	Path interface{} `json:"path,omitempty"`
}

// OdbcLinkedService open Database Connectivity (ODBC) linked service.
type OdbcLinkedService struct {
	// OdbcLinkedServiceTypeProperties - ODBC linked service properties.
	*OdbcLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for OdbcLinkedService.
func (ols OdbcLinkedService) MarshalJSON() ([]byte, error) {
	ols.Type = TypeOdbc
	objectMap := make(map[string]interface{})
	if ols.OdbcLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = ols.OdbcLinkedServiceTypeProperties
	}
	if ols.ConnectVia != nil {
		objectMap["connectVia"] = ols.ConnectVia
	}
	if ols.Description != nil {
		objectMap["description"] = ols.Description
	}
	if ols.Parameters != nil {
		objectMap["parameters"] = ols.Parameters
	}
	if ols.Annotations != nil {
		objectMap["annotations"] = ols.Annotations
	}
	if ols.Type != "" {
		objectMap["type"] = ols.Type
	}
	for k, v := range ols.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return &ols, true
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for OdbcLinkedService.
func (ols OdbcLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &ols, true
}

// UnmarshalJSON is the custom unmarshaler for OdbcLinkedService struct.
func (ols *OdbcLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var odbcLinkedServiceTypeProperties OdbcLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &odbcLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				ols.OdbcLinkedServiceTypeProperties = &odbcLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ols.AdditionalProperties == nil {
					ols.AdditionalProperties = make(map[string]interface{})
				}
				ols.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				ols.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ols.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				ols.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				ols.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ols.Type = typeVar
			}
		}
	}

	return nil
}

// OdbcLinkedServiceTypeProperties ODBC linked service properties.
type OdbcLinkedServiceTypeProperties struct {
	// ConnectionString - The non-access credential portion of the connection string as well as an optional encrypted credential. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// AuthenticationType - Type of authentication used to connect to the ODBC data store. Possible values are: Anonymous and Basic. Type: string (or Expression with resultType string).
	AuthenticationType interface{} `json:"authenticationType,omitempty"`
	// Credential - The access credential portion of the connection string specified in driver-specific property-value format.
	Credential BasicSecretBase `json:"credential,omitempty"`
	// UserName - User name for Basic authentication. Type: string (or Expression with resultType string).
	UserName interface{} `json:"userName,omitempty"`
	// Password - Password for Basic authentication.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for OdbcLinkedServiceTypeProperties struct.
func (olstp *OdbcLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "connectionString":
			if v != nil {
				var connectionString interface{}
				err = json.Unmarshal(*v, &connectionString)
				if err != nil {
					return err
				}
				olstp.ConnectionString = connectionString
			}
		case "authenticationType":
			if v != nil {
				var authenticationType interface{}
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				olstp.AuthenticationType = authenticationType
			}
		case "credential":
			if v != nil {
				credential, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				olstp.Credential = credential
			}
		case "userName":
			if v != nil {
				var userName interface{}
				err = json.Unmarshal(*v, &userName)
				if err != nil {
					return err
				}
				olstp.UserName = userName
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				olstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				olstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// OdbcSink a copy activity ODBC sink.
type OdbcSink struct {
	// PreCopyScript - A query to execute before starting the copy. Type: string (or Expression with resultType string).
	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for OdbcSink.
func (osVar OdbcSink) MarshalJSON() ([]byte, error) {
	osVar.Type = TypeOdbcSink
	objectMap := make(map[string]interface{})
	if osVar.PreCopyScript != nil {
		objectMap["preCopyScript"] = osVar.PreCopyScript
	}
	if osVar.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = osVar.WriteBatchSize
	}
	if osVar.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = osVar.WriteBatchTimeout
	}
	if osVar.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = osVar.SinkRetryCount
	}
	if osVar.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = osVar.SinkRetryWait
	}
	if osVar.Type != "" {
		objectMap["type"] = osVar.Type
	}
	for k, v := range osVar.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsOdbcSink() (*OdbcSink, bool) {
	return &osVar, true
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for OdbcSink.
func (osVar OdbcSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &osVar, true
}

// UnmarshalJSON is the custom unmarshaler for OdbcSink struct.
func (osVar *OdbcSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "preCopyScript":
			if v != nil {
				var preCopyScript interface{}
				err = json.Unmarshal(*v, &preCopyScript)
				if err != nil {
					return err
				}
				osVar.PreCopyScript = preCopyScript
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if osVar.AdditionalProperties == nil {
					osVar.AdditionalProperties = make(map[string]interface{})
				}
				osVar.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				osVar.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				osVar.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				osVar.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				osVar.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				osVar.Type = typeVar
			}
		}
	}

	return nil
}

// Operation azure Data Factory API operation definition.
type Operation struct {
	// Name - Operation name: {provider}/{resource}/{operation}
	Name *string `json:"name,omitempty"`
	// Origin - The intended executor of the operation.
	Origin *string `json:"origin,omitempty"`
	// Display - Metadata associated with the operation.
	Display *OperationDisplay `json:"display,omitempty"`
	// OperationProperties - Additional details about the operation.
	*OperationProperties `json:"properties,omitempty"`
}

// MarshalJSON is the custom marshaler for Operation.
func (o Operation) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if o.Name != nil {
		objectMap["name"] = o.Name
	}
	if o.Origin != nil {
		objectMap["origin"] = o.Origin
	}
	if o.Display != nil {
		objectMap["display"] = o.Display
	}
	if o.OperationProperties != nil {
		objectMap["properties"] = o.OperationProperties
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for Operation struct.
func (o *Operation) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				o.Name = &name
			}
		case "origin":
			if v != nil {
				var origin string
				err = json.Unmarshal(*v, &origin)
				if err != nil {
					return err
				}
				o.Origin = &origin
			}
		case "display":
			if v != nil {
				var display OperationDisplay
				err = json.Unmarshal(*v, &display)
				if err != nil {
					return err
				}
				o.Display = &display
			}
		case "properties":
			if v != nil {
				var operationProperties OperationProperties
				err = json.Unmarshal(*v, &operationProperties)
				if err != nil {
					return err
				}
				o.OperationProperties = &operationProperties
			}
		}
	}

	return nil
}

// OperationDisplay metadata associated with the operation.
type OperationDisplay struct {
	// Description - The description of the operation.
	Description *string `json:"description,omitempty"`
	// Provider - The name of the provider.
	Provider *string `json:"provider,omitempty"`
	// Resource - The name of the resource type on which the operation is performed.
	Resource *string `json:"resource,omitempty"`
	// Operation - The type of operation: get, read, delete, etc.
	Operation *string `json:"operation,omitempty"`
}

// OperationListResponse a list of operations that can be performed by the Data Factory service.
type OperationListResponse struct {
	autorest.Response `json:"-"`
	// Value - List of Data Factory operations supported by the Data Factory resource provider.
	Value *[]Operation `json:"value,omitempty"`
	// NextLink - The link to the next page of results, if any remaining results exist.
	NextLink *string `json:"nextLink,omitempty"`
}

// OperationLogSpecification details about an operation related to logs.
type OperationLogSpecification struct {
	// Name - The name of the log category.
	Name *string `json:"name,omitempty"`
	// DisplayName - Localized display name.
	DisplayName *string `json:"displayName,omitempty"`
	// BlobDuration - Blobs created in the customer storage account, per hour.
	BlobDuration *string `json:"blobDuration,omitempty"`
}

// OperationMetricAvailability defines how often data for a metric becomes available.
type OperationMetricAvailability struct {
	// TimeGrain - The granularity for the metric.
	TimeGrain *string `json:"timeGrain,omitempty"`
	// BlobDuration - Blob created in the customer storage account, per hour.
	BlobDuration *string `json:"blobDuration,omitempty"`
}

// OperationMetricSpecification details about an operation related to metrics.
type OperationMetricSpecification struct {
	// Name - The name of the metric.
	Name *string `json:"name,omitempty"`
	// DisplayName - Localized display name of the metric.
	DisplayName *string `json:"displayName,omitempty"`
	// DisplayDescription - The description of the metric.
	DisplayDescription *string `json:"displayDescription,omitempty"`
	// Unit - The unit that the metric is measured in.
	Unit *string `json:"unit,omitempty"`
	// AggregationType - The type of metric aggregation.
	AggregationType *string `json:"aggregationType,omitempty"`
	// EnableRegionalMdmAccount - Whether or not the service is using regional MDM accounts.
	EnableRegionalMdmAccount *string `json:"enableRegionalMdmAccount,omitempty"`
	// SourceMdmAccount - The name of the MDM account.
	SourceMdmAccount *string `json:"sourceMdmAccount,omitempty"`
	// SourceMdmNamespace - The name of the MDM namespace.
	SourceMdmNamespace *string `json:"sourceMdmNamespace,omitempty"`
	// Availabilities - Defines how often data for metrics becomes available.
	Availabilities *[]OperationMetricAvailability `json:"availabilities,omitempty"`
}

// OperationProperties additional details about an operation.
type OperationProperties struct {
	// ServiceSpecification - Details about a service operation.
	ServiceSpecification *OperationServiceSpecification `json:"serviceSpecification,omitempty"`
}

// OperationServiceSpecification details about a service operation.
type OperationServiceSpecification struct {
	// LogSpecifications - Details about operations related to logs.
	LogSpecifications *[]OperationLogSpecification `json:"logSpecifications,omitempty"`
	// MetricSpecifications - Details about operations related to metrics.
	MetricSpecifications *[]OperationMetricSpecification `json:"metricSpecifications,omitempty"`
}

// OracleLinkedService oracle database.
type OracleLinkedService struct {
	// OracleLinkedServiceTypeProperties - Oracle database linked service properties.
	*OracleLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for OracleLinkedService.
func (ols OracleLinkedService) MarshalJSON() ([]byte, error) {
	ols.Type = TypeOracle
	objectMap := make(map[string]interface{})
	if ols.OracleLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = ols.OracleLinkedServiceTypeProperties
	}
	if ols.ConnectVia != nil {
		objectMap["connectVia"] = ols.ConnectVia
	}
	if ols.Description != nil {
		objectMap["description"] = ols.Description
	}
	if ols.Parameters != nil {
		objectMap["parameters"] = ols.Parameters
	}
	if ols.Annotations != nil {
		objectMap["annotations"] = ols.Annotations
	}
	if ols.Type != "" {
		objectMap["type"] = ols.Type
	}
	for k, v := range ols.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return &ols, true
}

// AsFileServerLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for OracleLinkedService.
func (ols OracleLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &ols, true
}

// UnmarshalJSON is the custom unmarshaler for OracleLinkedService struct.
func (ols *OracleLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var oracleLinkedServiceTypeProperties OracleLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &oracleLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				ols.OracleLinkedServiceTypeProperties = &oracleLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ols.AdditionalProperties == nil {
					ols.AdditionalProperties = make(map[string]interface{})
				}
				ols.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				ols.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ols.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				ols.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				ols.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ols.Type = typeVar
			}
		}
	}

	return nil
}

// OracleLinkedServiceTypeProperties oracle database linked service properties.
type OracleLinkedServiceTypeProperties struct {
	// ConnectionString - The connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// OracleSink a copy activity Oracle sink.
type OracleSink struct {
	// PreCopyScript - SQL pre-copy script. Type: string (or Expression with resultType string).
	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for OracleSink.
func (osVar OracleSink) MarshalJSON() ([]byte, error) {
	osVar.Type = TypeOracleSink
	objectMap := make(map[string]interface{})
	if osVar.PreCopyScript != nil {
		objectMap["preCopyScript"] = osVar.PreCopyScript
	}
	if osVar.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = osVar.WriteBatchSize
	}
	if osVar.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = osVar.WriteBatchTimeout
	}
	if osVar.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = osVar.SinkRetryCount
	}
	if osVar.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = osVar.SinkRetryWait
	}
	if osVar.Type != "" {
		objectMap["type"] = osVar.Type
	}
	for k, v := range osVar.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsOracleSink() (*OracleSink, bool) {
	return &osVar, true
}

// AsSQLDWSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for OracleSink.
func (osVar OracleSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &osVar, true
}

// UnmarshalJSON is the custom unmarshaler for OracleSink struct.
func (osVar *OracleSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "preCopyScript":
			if v != nil {
				var preCopyScript interface{}
				err = json.Unmarshal(*v, &preCopyScript)
				if err != nil {
					return err
				}
				osVar.PreCopyScript = preCopyScript
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if osVar.AdditionalProperties == nil {
					osVar.AdditionalProperties = make(map[string]interface{})
				}
				osVar.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				osVar.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				osVar.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				osVar.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				osVar.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				osVar.Type = typeVar
			}
		}
	}

	return nil
}

// OracleSource a copy activity Oracle source.
type OracleSource struct {
	// OracleReaderQuery - Oracle reader query. Type: string (or Expression with resultType string).
	OracleReaderQuery interface{} `json:"oracleReaderQuery,omitempty"`
	// QueryTimeout - Query timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	QueryTimeout interface{} `json:"queryTimeout,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for OracleSource.
func (osVar OracleSource) MarshalJSON() ([]byte, error) {
	osVar.Type = TypeOracleSource
	objectMap := make(map[string]interface{})
	if osVar.OracleReaderQuery != nil {
		objectMap["oracleReaderQuery"] = osVar.OracleReaderQuery
	}
	if osVar.QueryTimeout != nil {
		objectMap["queryTimeout"] = osVar.QueryTimeout
	}
	if osVar.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = osVar.SourceRetryCount
	}
	if osVar.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = osVar.SourceRetryWait
	}
	if osVar.Type != "" {
		objectMap["type"] = osVar.Type
	}
	for k, v := range osVar.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsOracleSource() (*OracleSource, bool) {
	return &osVar, true
}

// AsAzureMySQLSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for OracleSource.
func (osVar OracleSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &osVar, true
}

// UnmarshalJSON is the custom unmarshaler for OracleSource struct.
func (osVar *OracleSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "oracleReaderQuery":
			if v != nil {
				var oracleReaderQuery interface{}
				err = json.Unmarshal(*v, &oracleReaderQuery)
				if err != nil {
					return err
				}
				osVar.OracleReaderQuery = oracleReaderQuery
			}
		case "queryTimeout":
			if v != nil {
				var queryTimeout interface{}
				err = json.Unmarshal(*v, &queryTimeout)
				if err != nil {
					return err
				}
				osVar.QueryTimeout = queryTimeout
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if osVar.AdditionalProperties == nil {
					osVar.AdditionalProperties = make(map[string]interface{})
				}
				osVar.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				osVar.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				osVar.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				osVar.Type = typeVar
			}
		}
	}

	return nil
}

// OracleTableDataset the on-premises Oracle database dataset.
type OracleTableDataset struct {
	// OracleTableDatasetTypeProperties - On-premises Oracle dataset properties.
	*OracleTableDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for OracleTableDataset.
func (otd OracleTableDataset) MarshalJSON() ([]byte, error) {
	otd.Type = TypeOracleTable
	objectMap := make(map[string]interface{})
	if otd.OracleTableDatasetTypeProperties != nil {
		objectMap["typeProperties"] = otd.OracleTableDatasetTypeProperties
	}
	if otd.Description != nil {
		objectMap["description"] = otd.Description
	}
	if otd.Structure != nil {
		objectMap["structure"] = otd.Structure
	}
	if otd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = otd.LinkedServiceName
	}
	if otd.Parameters != nil {
		objectMap["parameters"] = otd.Parameters
	}
	if otd.Annotations != nil {
		objectMap["annotations"] = otd.Annotations
	}
	if otd.Type != "" {
		objectMap["type"] = otd.Type
	}
	for k, v := range otd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return &otd, true
}

// AsODataResourceDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for OracleTableDataset.
func (otd OracleTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &otd, true
}

// UnmarshalJSON is the custom unmarshaler for OracleTableDataset struct.
func (otd *OracleTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var oracleTableDatasetTypeProperties OracleTableDatasetTypeProperties
				err = json.Unmarshal(*v, &oracleTableDatasetTypeProperties)
				if err != nil {
					return err
				}
				otd.OracleTableDatasetTypeProperties = &oracleTableDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if otd.AdditionalProperties == nil {
					otd.AdditionalProperties = make(map[string]interface{})
				}
				otd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				otd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				otd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				otd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				otd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				otd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				otd.Type = typeVar
			}
		}
	}

	return nil
}

// OracleTableDatasetTypeProperties on-premises Oracle dataset properties.
type OracleTableDatasetTypeProperties struct {
	// TableName - The table name of the on-premises Oracle database. Type: string (or Expression with resultType string).
	TableName interface{} `json:"tableName,omitempty"`
}

// OrcFormat the data stored in Optimized Row Columnar (ORC) format.
type OrcFormat struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Serializer - Serializer. Type: string (or Expression with resultType string).
	Serializer interface{} `json:"serializer,omitempty"`
	// Deserializer - Deserializer. Type: string (or Expression with resultType string).
	Deserializer interface{} `json:"deserializer,omitempty"`
	// Type - Possible values include: 'TypeDatasetStorageFormat', 'TypeParquetFormat', 'TypeOrcFormat', 'TypeAvroFormat', 'TypeJSONFormat', 'TypeTextFormat'
	Type TypeBasicDatasetStorageFormat `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for OrcFormat.
func (of OrcFormat) MarshalJSON() ([]byte, error) {
	of.Type = TypeOrcFormat
	objectMap := make(map[string]interface{})
	if of.Serializer != nil {
		objectMap["serializer"] = of.Serializer
	}
	if of.Deserializer != nil {
		objectMap["deserializer"] = of.Deserializer
	}
	if of.Type != "" {
		objectMap["type"] = of.Type
	}
	for k, v := range of.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsParquetFormat is the BasicDatasetStorageFormat implementation for OrcFormat.
func (of OrcFormat) AsParquetFormat() (*ParquetFormat, bool) {
	return nil, false
}

// AsOrcFormat is the BasicDatasetStorageFormat implementation for OrcFormat.
func (of OrcFormat) AsOrcFormat() (*OrcFormat, bool) {
	return &of, true
}

// AsAvroFormat is the BasicDatasetStorageFormat implementation for OrcFormat.
func (of OrcFormat) AsAvroFormat() (*AvroFormat, bool) {
	return nil, false
}

// AsJSONFormat is the BasicDatasetStorageFormat implementation for OrcFormat.
func (of OrcFormat) AsJSONFormat() (*JSONFormat, bool) {
	return nil, false
}

// AsTextFormat is the BasicDatasetStorageFormat implementation for OrcFormat.
func (of OrcFormat) AsTextFormat() (*TextFormat, bool) {
	return nil, false
}

// AsDatasetStorageFormat is the BasicDatasetStorageFormat implementation for OrcFormat.
func (of OrcFormat) AsDatasetStorageFormat() (*DatasetStorageFormat, bool) {
	return nil, false
}

// AsBasicDatasetStorageFormat is the BasicDatasetStorageFormat implementation for OrcFormat.
func (of OrcFormat) AsBasicDatasetStorageFormat() (BasicDatasetStorageFormat, bool) {
	return &of, true
}

// UnmarshalJSON is the custom unmarshaler for OrcFormat struct.
func (of *OrcFormat) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if of.AdditionalProperties == nil {
					of.AdditionalProperties = make(map[string]interface{})
				}
				of.AdditionalProperties[k] = additionalProperties
			}
		case "serializer":
			if v != nil {
				var serializer interface{}
				err = json.Unmarshal(*v, &serializer)
				if err != nil {
					return err
				}
				of.Serializer = serializer
			}
		case "deserializer":
			if v != nil {
				var deserializer interface{}
				err = json.Unmarshal(*v, &deserializer)
				if err != nil {
					return err
				}
				of.Deserializer = deserializer
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDatasetStorageFormat
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				of.Type = typeVar
			}
		}
	}

	return nil
}

// ParameterSpecification definition of a single parameter for an entity.
type ParameterSpecification struct {
	// Type - Parameter type. Possible values include: 'ParameterTypeObject', 'ParameterTypeString', 'ParameterTypeInt', 'ParameterTypeFloat', 'ParameterTypeBool', 'ParameterTypeArray', 'ParameterTypeSecureString'
	Type ParameterType `json:"type,omitempty"`
	// DefaultValue - Default value of parameter.
	DefaultValue interface{} `json:"defaultValue,omitempty"`
}

// ParquetFormat the data stored in Parquet format.
type ParquetFormat struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Serializer - Serializer. Type: string (or Expression with resultType string).
	Serializer interface{} `json:"serializer,omitempty"`
	// Deserializer - Deserializer. Type: string (or Expression with resultType string).
	Deserializer interface{} `json:"deserializer,omitempty"`
	// Type - Possible values include: 'TypeDatasetStorageFormat', 'TypeParquetFormat', 'TypeOrcFormat', 'TypeAvroFormat', 'TypeJSONFormat', 'TypeTextFormat'
	Type TypeBasicDatasetStorageFormat `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ParquetFormat.
func (pf ParquetFormat) MarshalJSON() ([]byte, error) {
	pf.Type = TypeParquetFormat
	objectMap := make(map[string]interface{})
	if pf.Serializer != nil {
		objectMap["serializer"] = pf.Serializer
	}
	if pf.Deserializer != nil {
		objectMap["deserializer"] = pf.Deserializer
	}
	if pf.Type != "" {
		objectMap["type"] = pf.Type
	}
	for k, v := range pf.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsParquetFormat is the BasicDatasetStorageFormat implementation for ParquetFormat.
func (pf ParquetFormat) AsParquetFormat() (*ParquetFormat, bool) {
	return &pf, true
}

// AsOrcFormat is the BasicDatasetStorageFormat implementation for ParquetFormat.
func (pf ParquetFormat) AsOrcFormat() (*OrcFormat, bool) {
	return nil, false
}

// AsAvroFormat is the BasicDatasetStorageFormat implementation for ParquetFormat.
func (pf ParquetFormat) AsAvroFormat() (*AvroFormat, bool) {
	return nil, false
}

// AsJSONFormat is the BasicDatasetStorageFormat implementation for ParquetFormat.
func (pf ParquetFormat) AsJSONFormat() (*JSONFormat, bool) {
	return nil, false
}

// AsTextFormat is the BasicDatasetStorageFormat implementation for ParquetFormat.
func (pf ParquetFormat) AsTextFormat() (*TextFormat, bool) {
	return nil, false
}

// AsDatasetStorageFormat is the BasicDatasetStorageFormat implementation for ParquetFormat.
func (pf ParquetFormat) AsDatasetStorageFormat() (*DatasetStorageFormat, bool) {
	return nil, false
}

// AsBasicDatasetStorageFormat is the BasicDatasetStorageFormat implementation for ParquetFormat.
func (pf ParquetFormat) AsBasicDatasetStorageFormat() (BasicDatasetStorageFormat, bool) {
	return &pf, true
}

// UnmarshalJSON is the custom unmarshaler for ParquetFormat struct.
func (pf *ParquetFormat) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if pf.AdditionalProperties == nil {
					pf.AdditionalProperties = make(map[string]interface{})
				}
				pf.AdditionalProperties[k] = additionalProperties
			}
		case "serializer":
			if v != nil {
				var serializer interface{}
				err = json.Unmarshal(*v, &serializer)
				if err != nil {
					return err
				}
				pf.Serializer = serializer
			}
		case "deserializer":
			if v != nil {
				var deserializer interface{}
				err = json.Unmarshal(*v, &deserializer)
				if err != nil {
					return err
				}
				pf.Deserializer = deserializer
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDatasetStorageFormat
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				pf.Type = typeVar
			}
		}
	}

	return nil
}

// PaypalLinkedService paypal Service linked service.
type PaypalLinkedService struct {
	// PaypalLinkedServiceTypeProperties - Paypal Service linked service properties.
	*PaypalLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for PaypalLinkedService.
func (pls PaypalLinkedService) MarshalJSON() ([]byte, error) {
	pls.Type = TypePaypal
	objectMap := make(map[string]interface{})
	if pls.PaypalLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = pls.PaypalLinkedServiceTypeProperties
	}
	if pls.ConnectVia != nil {
		objectMap["connectVia"] = pls.ConnectVia
	}
	if pls.Description != nil {
		objectMap["description"] = pls.Description
	}
	if pls.Parameters != nil {
		objectMap["parameters"] = pls.Parameters
	}
	if pls.Annotations != nil {
		objectMap["annotations"] = pls.Annotations
	}
	if pls.Type != "" {
		objectMap["type"] = pls.Type
	}
	for k, v := range pls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return &pls, true
}

// AsMarketoLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for PaypalLinkedService.
func (pls PaypalLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &pls, true
}

// UnmarshalJSON is the custom unmarshaler for PaypalLinkedService struct.
func (pls *PaypalLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var paypalLinkedServiceTypeProperties PaypalLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &paypalLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				pls.PaypalLinkedServiceTypeProperties = &paypalLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if pls.AdditionalProperties == nil {
					pls.AdditionalProperties = make(map[string]interface{})
				}
				pls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				pls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				pls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				pls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				pls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				pls.Type = typeVar
			}
		}
	}

	return nil
}

// PaypalLinkedServiceTypeProperties paypal Service linked service properties.
type PaypalLinkedServiceTypeProperties struct {
	// Host - The URL of the PayPal instance. (i.e. api.sandbox.paypal.com)
	Host interface{} `json:"host,omitempty"`
	// ClientID - The client ID associated with your PayPal application.
	ClientID interface{} `json:"clientId,omitempty"`
	// ClientSecret - The client secret associated with your PayPal application.
	ClientSecret BasicSecretBase `json:"clientSecret,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true.
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for PaypalLinkedServiceTypeProperties struct.
func (plstp *PaypalLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				plstp.Host = host
			}
		case "clientId":
			if v != nil {
				var clientID interface{}
				err = json.Unmarshal(*v, &clientID)
				if err != nil {
					return err
				}
				plstp.ClientID = clientID
			}
		case "clientSecret":
			if v != nil {
				clientSecret, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				plstp.ClientSecret = clientSecret
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				plstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				plstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				plstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				plstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// PaypalObjectDataset paypal Service dataset.
type PaypalObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for PaypalObjectDataset.
func (pod PaypalObjectDataset) MarshalJSON() ([]byte, error) {
	pod.Type = TypePaypalObject
	objectMap := make(map[string]interface{})
	if pod.Description != nil {
		objectMap["description"] = pod.Description
	}
	if pod.Structure != nil {
		objectMap["structure"] = pod.Structure
	}
	if pod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = pod.LinkedServiceName
	}
	if pod.Parameters != nil {
		objectMap["parameters"] = pod.Parameters
	}
	if pod.Annotations != nil {
		objectMap["annotations"] = pod.Annotations
	}
	if pod.Type != "" {
		objectMap["type"] = pod.Type
	}
	for k, v := range pod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return &pod, true
}

// AsMarketoObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for PaypalObjectDataset.
func (pod PaypalObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &pod, true
}

// UnmarshalJSON is the custom unmarshaler for PaypalObjectDataset struct.
func (pod *PaypalObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if pod.AdditionalProperties == nil {
					pod.AdditionalProperties = make(map[string]interface{})
				}
				pod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				pod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				pod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				pod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				pod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				pod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				pod.Type = typeVar
			}
		}
	}

	return nil
}

// PaypalSource a copy activity Paypal Service source.
type PaypalSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for PaypalSource.
func (ps PaypalSource) MarshalJSON() ([]byte, error) {
	ps.Type = TypePaypalSource
	objectMap := make(map[string]interface{})
	if ps.Query != nil {
		objectMap["query"] = ps.Query
	}
	if ps.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ps.SourceRetryCount
	}
	if ps.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ps.SourceRetryWait
	}
	if ps.Type != "" {
		objectMap["type"] = ps.Type
	}
	for k, v := range ps.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsPaypalSource() (*PaypalSource, bool) {
	return &ps, true
}

// AsMarketoSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for PaypalSource.
func (ps PaypalSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ps, true
}

// UnmarshalJSON is the custom unmarshaler for PaypalSource struct.
func (ps *PaypalSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ps.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ps.AdditionalProperties == nil {
					ps.AdditionalProperties = make(map[string]interface{})
				}
				ps.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ps.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ps.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ps.Type = typeVar
			}
		}
	}

	return nil
}

// PhoenixLinkedService phoenix server linked service.
type PhoenixLinkedService struct {
	// PhoenixLinkedServiceTypeProperties - Phoenix server linked service properties.
	*PhoenixLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for PhoenixLinkedService.
func (pls PhoenixLinkedService) MarshalJSON() ([]byte, error) {
	pls.Type = TypePhoenix
	objectMap := make(map[string]interface{})
	if pls.PhoenixLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = pls.PhoenixLinkedServiceTypeProperties
	}
	if pls.ConnectVia != nil {
		objectMap["connectVia"] = pls.ConnectVia
	}
	if pls.Description != nil {
		objectMap["description"] = pls.Description
	}
	if pls.Parameters != nil {
		objectMap["parameters"] = pls.Parameters
	}
	if pls.Annotations != nil {
		objectMap["annotations"] = pls.Annotations
	}
	if pls.Type != "" {
		objectMap["type"] = pls.Type
	}
	for k, v := range pls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return &pls, true
}

// AsPaypalLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for PhoenixLinkedService.
func (pls PhoenixLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &pls, true
}

// UnmarshalJSON is the custom unmarshaler for PhoenixLinkedService struct.
func (pls *PhoenixLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var phoenixLinkedServiceTypeProperties PhoenixLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &phoenixLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				pls.PhoenixLinkedServiceTypeProperties = &phoenixLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if pls.AdditionalProperties == nil {
					pls.AdditionalProperties = make(map[string]interface{})
				}
				pls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				pls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				pls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				pls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				pls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				pls.Type = typeVar
			}
		}
	}

	return nil
}

// PhoenixLinkedServiceTypeProperties phoenix server linked service properties.
type PhoenixLinkedServiceTypeProperties struct {
	// Host - The IP address or host name of the Phoenix server. (i.e. 192.168.222.160)
	Host interface{} `json:"host,omitempty"`
	// Port - The TCP port that the Phoenix server uses to listen for client connections. The default value is 8765.
	Port interface{} `json:"port,omitempty"`
	// HTTPPath - The partial URL corresponding to the Phoenix server. (i.e. /gateway/sandbox/phoenix/version). The default value is hbasephoenix if using WindowsAzureHDInsightService.
	HTTPPath interface{} `json:"httpPath,omitempty"`
	// AuthenticationType - The authentication mechanism used to connect to the Phoenix server. Possible values include: 'PhoenixAuthenticationTypeAnonymous', 'PhoenixAuthenticationTypeUsernameAndPassword', 'PhoenixAuthenticationTypeWindowsAzureHDInsightService'
	AuthenticationType PhoenixAuthenticationType `json:"authenticationType,omitempty"`
	// Username - The user name used to connect to the Phoenix server.
	Username interface{} `json:"username,omitempty"`
	// Password - The password corresponding to the user name.
	Password BasicSecretBase `json:"password,omitempty"`
	// EnableSsl - Specifies whether the connections to the server are encrypted using SSL. The default value is false.
	EnableSsl interface{} `json:"enableSsl,omitempty"`
	// TrustedCertPath - 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 using SSL on self-hosted IR. The default value is the cacerts.pem file installed with the IR.
	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
	// UseSystemTrustStore - Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.
	UseSystemTrustStore interface{} `json:"useSystemTrustStore,omitempty"`
	// AllowHostNameCNMismatch - 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.
	AllowHostNameCNMismatch interface{} `json:"allowHostNameCNMismatch,omitempty"`
	// AllowSelfSignedServerCert - Specifies whether to allow self-signed certificates from the server. The default value is false.
	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for PhoenixLinkedServiceTypeProperties struct.
func (plstp *PhoenixLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				plstp.Host = host
			}
		case "port":
			if v != nil {
				var port interface{}
				err = json.Unmarshal(*v, &port)
				if err != nil {
					return err
				}
				plstp.Port = port
			}
		case "httpPath":
			if v != nil {
				var HTTPPath interface{}
				err = json.Unmarshal(*v, &HTTPPath)
				if err != nil {
					return err
				}
				plstp.HTTPPath = HTTPPath
			}
		case "authenticationType":
			if v != nil {
				var authenticationType PhoenixAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				plstp.AuthenticationType = authenticationType
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				plstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				plstp.Password = password
			}
		case "enableSsl":
			if v != nil {
				var enableSsl interface{}
				err = json.Unmarshal(*v, &enableSsl)
				if err != nil {
					return err
				}
				plstp.EnableSsl = enableSsl
			}
		case "trustedCertPath":
			if v != nil {
				var trustedCertPath interface{}
				err = json.Unmarshal(*v, &trustedCertPath)
				if err != nil {
					return err
				}
				plstp.TrustedCertPath = trustedCertPath
			}
		case "useSystemTrustStore":
			if v != nil {
				var useSystemTrustStore interface{}
				err = json.Unmarshal(*v, &useSystemTrustStore)
				if err != nil {
					return err
				}
				plstp.UseSystemTrustStore = useSystemTrustStore
			}
		case "allowHostNameCNMismatch":
			if v != nil {
				var allowHostNameCNMismatch interface{}
				err = json.Unmarshal(*v, &allowHostNameCNMismatch)
				if err != nil {
					return err
				}
				plstp.AllowHostNameCNMismatch = allowHostNameCNMismatch
			}
		case "allowSelfSignedServerCert":
			if v != nil {
				var allowSelfSignedServerCert interface{}
				err = json.Unmarshal(*v, &allowSelfSignedServerCert)
				if err != nil {
					return err
				}
				plstp.AllowSelfSignedServerCert = allowSelfSignedServerCert
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				plstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// PhoenixObjectDataset phoenix server dataset.
type PhoenixObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) MarshalJSON() ([]byte, error) {
	pod.Type = TypePhoenixObject
	objectMap := make(map[string]interface{})
	if pod.Description != nil {
		objectMap["description"] = pod.Description
	}
	if pod.Structure != nil {
		objectMap["structure"] = pod.Structure
	}
	if pod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = pod.LinkedServiceName
	}
	if pod.Parameters != nil {
		objectMap["parameters"] = pod.Parameters
	}
	if pod.Annotations != nil {
		objectMap["annotations"] = pod.Annotations
	}
	if pod.Type != "" {
		objectMap["type"] = pod.Type
	}
	for k, v := range pod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return &pod, true
}

// AsPaypalObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for PhoenixObjectDataset.
func (pod PhoenixObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &pod, true
}

// UnmarshalJSON is the custom unmarshaler for PhoenixObjectDataset struct.
func (pod *PhoenixObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if pod.AdditionalProperties == nil {
					pod.AdditionalProperties = make(map[string]interface{})
				}
				pod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				pod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				pod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				pod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				pod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				pod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				pod.Type = typeVar
			}
		}
	}

	return nil
}

// PhoenixSource a copy activity Phoenix server source.
type PhoenixSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for PhoenixSource.
func (ps PhoenixSource) MarshalJSON() ([]byte, error) {
	ps.Type = TypePhoenixSource
	objectMap := make(map[string]interface{})
	if ps.Query != nil {
		objectMap["query"] = ps.Query
	}
	if ps.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ps.SourceRetryCount
	}
	if ps.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ps.SourceRetryWait
	}
	if ps.Type != "" {
		objectMap["type"] = ps.Type
	}
	for k, v := range ps.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return &ps, true
}

// AsPaypalSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for PhoenixSource.
func (ps PhoenixSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ps, true
}

// UnmarshalJSON is the custom unmarshaler for PhoenixSource struct.
func (ps *PhoenixSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ps.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ps.AdditionalProperties == nil {
					ps.AdditionalProperties = make(map[string]interface{})
				}
				ps.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ps.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ps.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ps.Type = typeVar
			}
		}
	}

	return nil
}

// Pipeline a data factory pipeline.
type Pipeline struct {
	// Description - The description of the pipeline.
	Description *string `json:"description,omitempty"`
	// Activities - List of activities in pipeline.
	Activities *[]BasicActivity `json:"activities,omitempty"`
	// Parameters - List of parameters for pipeline.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Concurrency - The max number of concurrent runs for the pipeline.
	Concurrency *int32 `json:"concurrency,omitempty"`
	// Annotations - List of tags that can be used for describing the Pipeline.
	Annotations *[]interface{} `json:"annotations,omitempty"`
}

// MarshalJSON is the custom marshaler for Pipeline.
func (p Pipeline) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if p.Description != nil {
		objectMap["description"] = p.Description
	}
	if p.Activities != nil {
		objectMap["activities"] = p.Activities
	}
	if p.Parameters != nil {
		objectMap["parameters"] = p.Parameters
	}
	if p.Concurrency != nil {
		objectMap["concurrency"] = p.Concurrency
	}
	if p.Annotations != nil {
		objectMap["annotations"] = p.Annotations
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for Pipeline struct.
func (p *Pipeline) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				p.Description = &description
			}
		case "activities":
			if v != nil {
				activities, err := unmarshalBasicActivityArray(*v)
				if err != nil {
					return err
				}
				p.Activities = &activities
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				p.Parameters = parameters
			}
		case "concurrency":
			if v != nil {
				var concurrency int32
				err = json.Unmarshal(*v, &concurrency)
				if err != nil {
					return err
				}
				p.Concurrency = &concurrency
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				p.Annotations = &annotations
			}
		}
	}

	return nil
}

// PipelineListResponse a list of pipeline resources.
type PipelineListResponse struct {
	autorest.Response `json:"-"`
	// Value - List of pipelines.
	Value *[]PipelineResource `json:"value,omitempty"`
	// NextLink - The link to the next page of results, if any remaining results exist.
	NextLink *string `json:"nextLink,omitempty"`
}

// PipelineListResponseIterator provides access to a complete listing of PipelineResource values.
type PipelineListResponseIterator struct {
	i    int
	page PipelineListResponsePage
}

// NextWithContext advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
func (iter *PipelineListResponseIterator) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/PipelineListResponseIterator.NextWithContext")
		defer func() {
			sc := -1
			if iter.Response().Response.Response != nil {
				sc = iter.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	iter.i++
	if iter.i < len(iter.page.Values()) {
		return nil
	}
	err = iter.page.NextWithContext(ctx)
	if err != nil {
		iter.i--
		return err
	}
	iter.i = 0
	return nil
}

// Next advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (iter *PipelineListResponseIterator) Next() error {
	return iter.NextWithContext(context.Background())
}

// NotDone returns true if the enumeration should be started or is not yet complete.
func (iter PipelineListResponseIterator) NotDone() bool {
	return iter.page.NotDone() && iter.i < len(iter.page.Values())
}

// Response returns the raw server response from the last page request.
func (iter PipelineListResponseIterator) Response() PipelineListResponse {
	return iter.page.Response()
}

// Value returns the current value or a zero-initialized value if the
// iterator has advanced beyond the end of the collection.
func (iter PipelineListResponseIterator) Value() PipelineResource {
	if !iter.page.NotDone() {
		return PipelineResource{}
	}
	return iter.page.Values()[iter.i]
}

// Creates a new instance of the PipelineListResponseIterator type.
func NewPipelineListResponseIterator(page PipelineListResponsePage) PipelineListResponseIterator {
	return PipelineListResponseIterator{page: page}
}

// IsEmpty returns true if the ListResult contains no values.
func (plr PipelineListResponse) IsEmpty() bool {
	return plr.Value == nil || len(*plr.Value) == 0
}

// hasNextLink returns true if the NextLink is not empty.
func (plr PipelineListResponse) hasNextLink() bool {
	return plr.NextLink != nil && len(*plr.NextLink) != 0
}

// pipelineListResponsePreparer prepares a request to retrieve the next set of results.
// It returns nil if no more results exist.
func (plr PipelineListResponse) pipelineListResponsePreparer(ctx context.Context) (*http.Request, error) {
	if !plr.hasNextLink() {
		return nil, nil
	}
	return autorest.Prepare((&http.Request{}).WithContext(ctx),
		autorest.AsJSON(),
		autorest.AsGet(),
		autorest.WithBaseURL(to.String(plr.NextLink)))
}

// PipelineListResponsePage contains a page of PipelineResource values.
type PipelineListResponsePage struct {
	fn  func(context.Context, PipelineListResponse) (PipelineListResponse, error)
	plr PipelineListResponse
}

// NextWithContext advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
func (page *PipelineListResponsePage) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/PipelineListResponsePage.NextWithContext")
		defer func() {
			sc := -1
			if page.Response().Response.Response != nil {
				sc = page.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	for {
		next, err := page.fn(ctx, page.plr)
		if err != nil {
			return err
		}
		page.plr = next
		if !next.hasNextLink() || !next.IsEmpty() {
			break
		}
	}
	return nil
}

// Next advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (page *PipelineListResponsePage) Next() error {
	return page.NextWithContext(context.Background())
}

// NotDone returns true if the page enumeration should be started or is not yet complete.
func (page PipelineListResponsePage) NotDone() bool {
	return !page.plr.IsEmpty()
}

// Response returns the raw server response from the last page request.
func (page PipelineListResponsePage) Response() PipelineListResponse {
	return page.plr
}

// Values returns the slice of values for the current page or nil if there are no values.
func (page PipelineListResponsePage) Values() []PipelineResource {
	if page.plr.IsEmpty() {
		return nil
	}
	return *page.plr.Value
}

// Creates a new instance of the PipelineListResponsePage type.
func NewPipelineListResponsePage(cur PipelineListResponse, getNextPage func(context.Context, PipelineListResponse) (PipelineListResponse, error)) PipelineListResponsePage {
	return PipelineListResponsePage{
		fn:  getNextPage,
		plr: cur,
	}
}

// PipelineReference pipeline reference type.
type PipelineReference struct {
	// Type - Pipeline reference type.
	Type *string `json:"type,omitempty"`
	// ReferenceName - Reference pipeline name.
	ReferenceName *string `json:"referenceName,omitempty"`
	// Name - Reference name.
	Name *string `json:"name,omitempty"`
}

// PipelineResource pipeline resource type.
type PipelineResource struct {
	autorest.Response `json:"-"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Pipeline - Properties of the pipeline.
	*Pipeline `json:"properties,omitempty"`
	// ID - READ-ONLY; The resource identifier.
	ID *string `json:"id,omitempty"`
	// Name - READ-ONLY; The resource name.
	Name *string `json:"name,omitempty"`
	// Type - READ-ONLY; The resource type.
	Type *string `json:"type,omitempty"`
	// Etag - READ-ONLY; Etag identifies change in the resource.
	Etag *string `json:"etag,omitempty"`
}

// MarshalJSON is the custom marshaler for PipelineResource.
func (pr PipelineResource) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if pr.Pipeline != nil {
		objectMap["properties"] = pr.Pipeline
	}
	for k, v := range pr.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for PipelineResource struct.
func (pr *PipelineResource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if pr.AdditionalProperties == nil {
					pr.AdditionalProperties = make(map[string]interface{})
				}
				pr.AdditionalProperties[k] = additionalProperties
			}
		case "properties":
			if v != nil {
				var pipeline Pipeline
				err = json.Unmarshal(*v, &pipeline)
				if err != nil {
					return err
				}
				pr.Pipeline = &pipeline
			}
		case "id":
			if v != nil {
				var ID string
				err = json.Unmarshal(*v, &ID)
				if err != nil {
					return err
				}
				pr.ID = &ID
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				pr.Name = &name
			}
		case "type":
			if v != nil {
				var typeVar string
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				pr.Type = &typeVar
			}
		case "etag":
			if v != nil {
				var etag string
				err = json.Unmarshal(*v, &etag)
				if err != nil {
					return err
				}
				pr.Etag = &etag
			}
		}
	}

	return nil
}

// PipelineRun information about a pipeline run.
type PipelineRun struct {
	autorest.Response `json:"-"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// RunID - READ-ONLY; Identifier of a run.
	RunID *string `json:"runId,omitempty"`
	// PipelineName - READ-ONLY; The pipeline name.
	PipelineName *string `json:"pipelineName,omitempty"`
	// Parameters - READ-ONLY; The full or partial list of parameter name, value pair used in the pipeline run.
	Parameters map[string]*string `json:"parameters"`
	// InvokedBy - READ-ONLY; Entity that started the pipeline run.
	InvokedBy *PipelineRunInvokedBy `json:"invokedBy,omitempty"`
	// LastUpdated - READ-ONLY; The last updated timestamp for the pipeline run event in ISO8601 format.
	LastUpdated *date.Time `json:"lastUpdated,omitempty"`
	// RunStart - READ-ONLY; The start time of a pipeline run in ISO8601 format.
	RunStart *date.Time `json:"runStart,omitempty"`
	// RunEnd - READ-ONLY; The end time of a pipeline run in ISO8601 format.
	RunEnd *date.Time `json:"runEnd,omitempty"`
	// DurationInMs - READ-ONLY; The duration of a pipeline run.
	DurationInMs *int32 `json:"durationInMs,omitempty"`
	// Status - READ-ONLY; The status of a pipeline run.
	Status *string `json:"status,omitempty"`
	// Message - READ-ONLY; The message from a pipeline run.
	Message *string `json:"message,omitempty"`
}

// MarshalJSON is the custom marshaler for PipelineRun.
func (pr PipelineRun) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	for k, v := range pr.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for PipelineRun struct.
func (pr *PipelineRun) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if pr.AdditionalProperties == nil {
					pr.AdditionalProperties = make(map[string]interface{})
				}
				pr.AdditionalProperties[k] = additionalProperties
			}
		case "runId":
			if v != nil {
				var runID string
				err = json.Unmarshal(*v, &runID)
				if err != nil {
					return err
				}
				pr.RunID = &runID
			}
		case "pipelineName":
			if v != nil {
				var pipelineName string
				err = json.Unmarshal(*v, &pipelineName)
				if err != nil {
					return err
				}
				pr.PipelineName = &pipelineName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*string
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				pr.Parameters = parameters
			}
		case "invokedBy":
			if v != nil {
				var invokedBy PipelineRunInvokedBy
				err = json.Unmarshal(*v, &invokedBy)
				if err != nil {
					return err
				}
				pr.InvokedBy = &invokedBy
			}
		case "lastUpdated":
			if v != nil {
				var lastUpdated date.Time
				err = json.Unmarshal(*v, &lastUpdated)
				if err != nil {
					return err
				}
				pr.LastUpdated = &lastUpdated
			}
		case "runStart":
			if v != nil {
				var runStart date.Time
				err = json.Unmarshal(*v, &runStart)
				if err != nil {
					return err
				}
				pr.RunStart = &runStart
			}
		case "runEnd":
			if v != nil {
				var runEnd date.Time
				err = json.Unmarshal(*v, &runEnd)
				if err != nil {
					return err
				}
				pr.RunEnd = &runEnd
			}
		case "durationInMs":
			if v != nil {
				var durationInMs int32
				err = json.Unmarshal(*v, &durationInMs)
				if err != nil {
					return err
				}
				pr.DurationInMs = &durationInMs
			}
		case "status":
			if v != nil {
				var status string
				err = json.Unmarshal(*v, &status)
				if err != nil {
					return err
				}
				pr.Status = &status
			}
		case "message":
			if v != nil {
				var message string
				err = json.Unmarshal(*v, &message)
				if err != nil {
					return err
				}
				pr.Message = &message
			}
		}
	}

	return nil
}

// PipelineRunFilterParameters query parameters for listing pipeline runs.
type PipelineRunFilterParameters struct {
	// ContinuationToken - The continuation token for getting the next page of results. Null for first page.
	ContinuationToken *string `json:"continuationToken,omitempty"`
	// LastUpdatedAfter - The time at or after which the pipeline run event was updated in 'ISO 8601' format.
	LastUpdatedAfter *date.Time `json:"lastUpdatedAfter,omitempty"`
	// LastUpdatedBefore - The time at or before which the pipeline run event was updated in 'ISO 8601' format.
	LastUpdatedBefore *date.Time `json:"lastUpdatedBefore,omitempty"`
	// Filters - List of filters.
	Filters *[]PipelineRunQueryFilter `json:"filters,omitempty"`
	// OrderBy - List of OrderBy option.
	OrderBy *[]PipelineRunQueryOrderBy `json:"orderBy,omitempty"`
}

// PipelineRunInvokedBy provides entity name and id that started the pipeline run.
type PipelineRunInvokedBy struct {
	// Name - READ-ONLY; Name of the entity that started the pipeline run.
	Name *string `json:"name,omitempty"`
	// ID - READ-ONLY; The ID of the entity that started the run.
	ID *string `json:"id,omitempty"`
}

// MarshalJSON is the custom marshaler for PipelineRunInvokedBy.
func (prib PipelineRunInvokedBy) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	return json.Marshal(objectMap)
}

// PipelineRunQueryFilter query filter option for listing pipeline runs.
type PipelineRunQueryFilter struct {
	// Operand - Parameter name to be used for filter. Possible values include: 'PipelineName', 'Status', 'RunStart', 'RunEnd'
	Operand PipelineRunQueryFilterOperand `json:"operand,omitempty"`
	// Operator - Operator to be used for filter. Possible values include: 'Equals', 'NotEquals', 'In', 'NotIn'
	Operator PipelineRunQueryFilterOperator `json:"operator,omitempty"`
	// Values - List of filter values.
	Values *[]string `json:"values,omitempty"`
}

// PipelineRunQueryOrderBy an object to provide order by options for listing pipeline runs.
type PipelineRunQueryOrderBy struct {
	// OrderBy - Parameter name to be used for order by. Possible values include: 'PipelineRunQueryOrderByFieldRunStart', 'PipelineRunQueryOrderByFieldRunEnd'
	OrderBy PipelineRunQueryOrderByField `json:"orderBy,omitempty"`
	// Order - Sorting order of the parameter. Possible values include: 'ASC', 'DESC'
	Order PipelineRunQueryOrder `json:"order,omitempty"`
}

// PipelineRunQueryResponse a list pipeline runs.
type PipelineRunQueryResponse struct {
	autorest.Response `json:"-"`
	// Value - List of pipeline runs.
	Value *[]PipelineRun `json:"value,omitempty"`
	// ContinuationToken - The continuation token for getting the next page of results, if any remaining results exist, null otherwise.
	ContinuationToken *string `json:"continuationToken,omitempty"`
}

// PolybaseSettings polyBase settings.
type PolybaseSettings struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// RejectType - Reject type.
	RejectType interface{} `json:"rejectType,omitempty"`
	// RejectValue - Specifies the value or the percentage of rows that can be rejected before the query fails. Type: number (or Expression with resultType number), minimum: 0.
	RejectValue interface{} `json:"rejectValue,omitempty"`
	// RejectSampleValue - Determines the number of rows to attempt to retrieve before the PolyBase recalculates the percentage of rejected rows. Type: integer (or Expression with resultType integer), minimum: 0.
	RejectSampleValue interface{} `json:"rejectSampleValue,omitempty"`
	// UseTypeDefault - Specifies how to handle missing values in delimited text files when PolyBase retrieves data from the text file. Type: boolean (or Expression with resultType boolean).
	UseTypeDefault interface{} `json:"useTypeDefault,omitempty"`
}

// MarshalJSON is the custom marshaler for PolybaseSettings.
func (ps PolybaseSettings) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if ps.RejectType != nil {
		objectMap["rejectType"] = ps.RejectType
	}
	if ps.RejectValue != nil {
		objectMap["rejectValue"] = ps.RejectValue
	}
	if ps.RejectSampleValue != nil {
		objectMap["rejectSampleValue"] = ps.RejectSampleValue
	}
	if ps.UseTypeDefault != nil {
		objectMap["useTypeDefault"] = ps.UseTypeDefault
	}
	for k, v := range ps.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for PolybaseSettings struct.
func (ps *PolybaseSettings) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ps.AdditionalProperties == nil {
					ps.AdditionalProperties = make(map[string]interface{})
				}
				ps.AdditionalProperties[k] = additionalProperties
			}
		case "rejectType":
			if v != nil {
				var rejectType interface{}
				err = json.Unmarshal(*v, &rejectType)
				if err != nil {
					return err
				}
				ps.RejectType = rejectType
			}
		case "rejectValue":
			if v != nil {
				var rejectValue interface{}
				err = json.Unmarshal(*v, &rejectValue)
				if err != nil {
					return err
				}
				ps.RejectValue = rejectValue
			}
		case "rejectSampleValue":
			if v != nil {
				var rejectSampleValue interface{}
				err = json.Unmarshal(*v, &rejectSampleValue)
				if err != nil {
					return err
				}
				ps.RejectSampleValue = rejectSampleValue
			}
		case "useTypeDefault":
			if v != nil {
				var useTypeDefault interface{}
				err = json.Unmarshal(*v, &useTypeDefault)
				if err != nil {
					return err
				}
				ps.UseTypeDefault = useTypeDefault
			}
		}
	}

	return nil
}

// PostgreSQLLinkedService linked service for PostgreSQL data source.
type PostgreSQLLinkedService struct {
	// PostgreSQLLinkedServiceTypeProperties - PostgreSQL linked service properties.
	*PostgreSQLLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) MarshalJSON() ([]byte, error) {
	psls.Type = TypePostgreSQL
	objectMap := make(map[string]interface{})
	if psls.PostgreSQLLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = psls.PostgreSQLLinkedServiceTypeProperties
	}
	if psls.ConnectVia != nil {
		objectMap["connectVia"] = psls.ConnectVia
	}
	if psls.Description != nil {
		objectMap["description"] = psls.Description
	}
	if psls.Parameters != nil {
		objectMap["parameters"] = psls.Parameters
	}
	if psls.Annotations != nil {
		objectMap["annotations"] = psls.Annotations
	}
	if psls.Type != "" {
		objectMap["type"] = psls.Type
	}
	for k, v := range psls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return &psls, true
}

// AsMySQLLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for PostgreSQLLinkedService.
func (psls PostgreSQLLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &psls, true
}

// UnmarshalJSON is the custom unmarshaler for PostgreSQLLinkedService struct.
func (psls *PostgreSQLLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var postgreSQLLinkedServiceTypeProperties PostgreSQLLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &postgreSQLLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				psls.PostgreSQLLinkedServiceTypeProperties = &postgreSQLLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if psls.AdditionalProperties == nil {
					psls.AdditionalProperties = make(map[string]interface{})
				}
				psls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				psls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				psls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				psls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				psls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				psls.Type = typeVar
			}
		}
	}

	return nil
}

// PostgreSQLLinkedServiceTypeProperties postgreSQL linked service properties.
type PostgreSQLLinkedServiceTypeProperties struct {
	// ConnectionString - The connection string.
	ConnectionString BasicSecretBase `json:"connectionString,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for PostgreSQLLinkedServiceTypeProperties struct.
func (pslstp *PostgreSQLLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "connectionString":
			if v != nil {
				connectionString, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				pslstp.ConnectionString = connectionString
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				pslstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// PrestoLinkedService presto server linked service.
type PrestoLinkedService struct {
	// PrestoLinkedServiceTypeProperties - Presto server linked service properties.
	*PrestoLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for PrestoLinkedService.
func (pls PrestoLinkedService) MarshalJSON() ([]byte, error) {
	pls.Type = TypePresto
	objectMap := make(map[string]interface{})
	if pls.PrestoLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = pls.PrestoLinkedServiceTypeProperties
	}
	if pls.ConnectVia != nil {
		objectMap["connectVia"] = pls.ConnectVia
	}
	if pls.Description != nil {
		objectMap["description"] = pls.Description
	}
	if pls.Parameters != nil {
		objectMap["parameters"] = pls.Parameters
	}
	if pls.Annotations != nil {
		objectMap["annotations"] = pls.Annotations
	}
	if pls.Type != "" {
		objectMap["type"] = pls.Type
	}
	for k, v := range pls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return &pls, true
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for PrestoLinkedService.
func (pls PrestoLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &pls, true
}

// UnmarshalJSON is the custom unmarshaler for PrestoLinkedService struct.
func (pls *PrestoLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var prestoLinkedServiceTypeProperties PrestoLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &prestoLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				pls.PrestoLinkedServiceTypeProperties = &prestoLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if pls.AdditionalProperties == nil {
					pls.AdditionalProperties = make(map[string]interface{})
				}
				pls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				pls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				pls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				pls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				pls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				pls.Type = typeVar
			}
		}
	}

	return nil
}

// PrestoLinkedServiceTypeProperties presto server linked service properties.
type PrestoLinkedServiceTypeProperties struct {
	// Host - The IP address or host name of the Presto server. (i.e. 192.168.222.160)
	Host interface{} `json:"host,omitempty"`
	// ServerVersion - The version of the Presto server. (i.e. 0.148-t)
	ServerVersion interface{} `json:"serverVersion,omitempty"`
	// Catalog - The catalog context for all request against the server.
	Catalog interface{} `json:"catalog,omitempty"`
	// Port - The TCP port that the Presto server uses to listen for client connections. The default value is 8080.
	Port interface{} `json:"port,omitempty"`
	// AuthenticationType - The authentication mechanism used to connect to the Presto server. Possible values include: 'PrestoAuthenticationTypeAnonymous', 'PrestoAuthenticationTypeLDAP'
	AuthenticationType PrestoAuthenticationType `json:"authenticationType,omitempty"`
	// Username - The user name used to connect to the Presto server.
	Username interface{} `json:"username,omitempty"`
	// Password - The password corresponding to the user name.
	Password BasicSecretBase `json:"password,omitempty"`
	// EnableSsl - Specifies whether the connections to the server are encrypted using SSL. The default value is false.
	EnableSsl interface{} `json:"enableSsl,omitempty"`
	// TrustedCertPath - 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 using SSL on self-hosted IR. The default value is the cacerts.pem file installed with the IR.
	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
	// UseSystemTrustStore - Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.
	UseSystemTrustStore interface{} `json:"useSystemTrustStore,omitempty"`
	// AllowHostNameCNMismatch - 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.
	AllowHostNameCNMismatch interface{} `json:"allowHostNameCNMismatch,omitempty"`
	// AllowSelfSignedServerCert - Specifies whether to allow self-signed certificates from the server. The default value is false.
	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
	// TimeZoneID - 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 time zone.
	TimeZoneID interface{} `json:"timeZoneID,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for PrestoLinkedServiceTypeProperties struct.
func (plstp *PrestoLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				plstp.Host = host
			}
		case "serverVersion":
			if v != nil {
				var serverVersion interface{}
				err = json.Unmarshal(*v, &serverVersion)
				if err != nil {
					return err
				}
				plstp.ServerVersion = serverVersion
			}
		case "catalog":
			if v != nil {
				var catalog interface{}
				err = json.Unmarshal(*v, &catalog)
				if err != nil {
					return err
				}
				plstp.Catalog = catalog
			}
		case "port":
			if v != nil {
				var port interface{}
				err = json.Unmarshal(*v, &port)
				if err != nil {
					return err
				}
				plstp.Port = port
			}
		case "authenticationType":
			if v != nil {
				var authenticationType PrestoAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				plstp.AuthenticationType = authenticationType
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				plstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				plstp.Password = password
			}
		case "enableSsl":
			if v != nil {
				var enableSsl interface{}
				err = json.Unmarshal(*v, &enableSsl)
				if err != nil {
					return err
				}
				plstp.EnableSsl = enableSsl
			}
		case "trustedCertPath":
			if v != nil {
				var trustedCertPath interface{}
				err = json.Unmarshal(*v, &trustedCertPath)
				if err != nil {
					return err
				}
				plstp.TrustedCertPath = trustedCertPath
			}
		case "useSystemTrustStore":
			if v != nil {
				var useSystemTrustStore interface{}
				err = json.Unmarshal(*v, &useSystemTrustStore)
				if err != nil {
					return err
				}
				plstp.UseSystemTrustStore = useSystemTrustStore
			}
		case "allowHostNameCNMismatch":
			if v != nil {
				var allowHostNameCNMismatch interface{}
				err = json.Unmarshal(*v, &allowHostNameCNMismatch)
				if err != nil {
					return err
				}
				plstp.AllowHostNameCNMismatch = allowHostNameCNMismatch
			}
		case "allowSelfSignedServerCert":
			if v != nil {
				var allowSelfSignedServerCert interface{}
				err = json.Unmarshal(*v, &allowSelfSignedServerCert)
				if err != nil {
					return err
				}
				plstp.AllowSelfSignedServerCert = allowSelfSignedServerCert
			}
		case "timeZoneID":
			if v != nil {
				var timeZoneID interface{}
				err = json.Unmarshal(*v, &timeZoneID)
				if err != nil {
					return err
				}
				plstp.TimeZoneID = timeZoneID
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				plstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// PrestoObjectDataset presto server dataset.
type PrestoObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for PrestoObjectDataset.
func (pod PrestoObjectDataset) MarshalJSON() ([]byte, error) {
	pod.Type = TypePrestoObject
	objectMap := make(map[string]interface{})
	if pod.Description != nil {
		objectMap["description"] = pod.Description
	}
	if pod.Structure != nil {
		objectMap["structure"] = pod.Structure
	}
	if pod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = pod.LinkedServiceName
	}
	if pod.Parameters != nil {
		objectMap["parameters"] = pod.Parameters
	}
	if pod.Annotations != nil {
		objectMap["annotations"] = pod.Annotations
	}
	if pod.Type != "" {
		objectMap["type"] = pod.Type
	}
	for k, v := range pod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return &pod, true
}

// AsPhoenixObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for PrestoObjectDataset.
func (pod PrestoObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &pod, true
}

// UnmarshalJSON is the custom unmarshaler for PrestoObjectDataset struct.
func (pod *PrestoObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if pod.AdditionalProperties == nil {
					pod.AdditionalProperties = make(map[string]interface{})
				}
				pod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				pod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				pod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				pod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				pod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				pod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				pod.Type = typeVar
			}
		}
	}

	return nil
}

// PrestoSource a copy activity Presto server source.
type PrestoSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for PrestoSource.
func (ps PrestoSource) MarshalJSON() ([]byte, error) {
	ps.Type = TypePrestoSource
	objectMap := make(map[string]interface{})
	if ps.Query != nil {
		objectMap["query"] = ps.Query
	}
	if ps.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ps.SourceRetryCount
	}
	if ps.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ps.SourceRetryWait
	}
	if ps.Type != "" {
		objectMap["type"] = ps.Type
	}
	for k, v := range ps.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsPrestoSource() (*PrestoSource, bool) {
	return &ps, true
}

// AsPhoenixSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for PrestoSource.
func (ps PrestoSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ps, true
}

// UnmarshalJSON is the custom unmarshaler for PrestoSource struct.
func (ps *PrestoSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ps.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ps.AdditionalProperties == nil {
					ps.AdditionalProperties = make(map[string]interface{})
				}
				ps.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ps.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ps.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ps.Type = typeVar
			}
		}
	}

	return nil
}

// QuickBooksLinkedService quickBooks server linked service.
type QuickBooksLinkedService struct {
	// QuickBooksLinkedServiceTypeProperties - QuickBooks server linked service properties.
	*QuickBooksLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) MarshalJSON() ([]byte, error) {
	qbls.Type = TypeQuickBooks
	objectMap := make(map[string]interface{})
	if qbls.QuickBooksLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = qbls.QuickBooksLinkedServiceTypeProperties
	}
	if qbls.ConnectVia != nil {
		objectMap["connectVia"] = qbls.ConnectVia
	}
	if qbls.Description != nil {
		objectMap["description"] = qbls.Description
	}
	if qbls.Parameters != nil {
		objectMap["parameters"] = qbls.Parameters
	}
	if qbls.Annotations != nil {
		objectMap["annotations"] = qbls.Annotations
	}
	if qbls.Type != "" {
		objectMap["type"] = qbls.Type
	}
	for k, v := range qbls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return &qbls, true
}

// AsPrestoLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for QuickBooksLinkedService.
func (qbls QuickBooksLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &qbls, true
}

// UnmarshalJSON is the custom unmarshaler for QuickBooksLinkedService struct.
func (qbls *QuickBooksLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var quickBooksLinkedServiceTypeProperties QuickBooksLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &quickBooksLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				qbls.QuickBooksLinkedServiceTypeProperties = &quickBooksLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if qbls.AdditionalProperties == nil {
					qbls.AdditionalProperties = make(map[string]interface{})
				}
				qbls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				qbls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				qbls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				qbls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				qbls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				qbls.Type = typeVar
			}
		}
	}

	return nil
}

// QuickBooksLinkedServiceTypeProperties quickBooks server linked service properties.
type QuickBooksLinkedServiceTypeProperties struct {
	// Endpoint - The endpoint of the QuickBooks server. (i.e. quickbooks.api.intuit.com)
	Endpoint interface{} `json:"endpoint,omitempty"`
	// CompanyID - The company ID of the QuickBooks company to authorize.
	CompanyID interface{} `json:"companyId,omitempty"`
	// ConsumerKey - The consumer key for OAuth 1.0 authentication.
	ConsumerKey interface{} `json:"consumerKey,omitempty"`
	// ConsumerSecret - The consumer secret for OAuth 1.0 authentication.
	ConsumerSecret BasicSecretBase `json:"consumerSecret,omitempty"`
	// AccessToken - The access token for OAuth 1.0 authentication.
	AccessToken BasicSecretBase `json:"accessToken,omitempty"`
	// AccessTokenSecret - The access token secret for OAuth 1.0 authentication.
	AccessTokenSecret BasicSecretBase `json:"accessTokenSecret,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for QuickBooksLinkedServiceTypeProperties struct.
func (qblstp *QuickBooksLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "endpoint":
			if v != nil {
				var endpoint interface{}
				err = json.Unmarshal(*v, &endpoint)
				if err != nil {
					return err
				}
				qblstp.Endpoint = endpoint
			}
		case "companyId":
			if v != nil {
				var companyID interface{}
				err = json.Unmarshal(*v, &companyID)
				if err != nil {
					return err
				}
				qblstp.CompanyID = companyID
			}
		case "consumerKey":
			if v != nil {
				var consumerKey interface{}
				err = json.Unmarshal(*v, &consumerKey)
				if err != nil {
					return err
				}
				qblstp.ConsumerKey = consumerKey
			}
		case "consumerSecret":
			if v != nil {
				consumerSecret, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				qblstp.ConsumerSecret = consumerSecret
			}
		case "accessToken":
			if v != nil {
				accessToken, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				qblstp.AccessToken = accessToken
			}
		case "accessTokenSecret":
			if v != nil {
				accessTokenSecret, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				qblstp.AccessTokenSecret = accessTokenSecret
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				qblstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				qblstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// QuickBooksObjectDataset quickBooks server dataset.
type QuickBooksObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) MarshalJSON() ([]byte, error) {
	qbod.Type = TypeQuickBooksObject
	objectMap := make(map[string]interface{})
	if qbod.Description != nil {
		objectMap["description"] = qbod.Description
	}
	if qbod.Structure != nil {
		objectMap["structure"] = qbod.Structure
	}
	if qbod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = qbod.LinkedServiceName
	}
	if qbod.Parameters != nil {
		objectMap["parameters"] = qbod.Parameters
	}
	if qbod.Annotations != nil {
		objectMap["annotations"] = qbod.Annotations
	}
	if qbod.Type != "" {
		objectMap["type"] = qbod.Type
	}
	for k, v := range qbod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return &qbod, true
}

// AsPrestoObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for QuickBooksObjectDataset.
func (qbod QuickBooksObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &qbod, true
}

// UnmarshalJSON is the custom unmarshaler for QuickBooksObjectDataset struct.
func (qbod *QuickBooksObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if qbod.AdditionalProperties == nil {
					qbod.AdditionalProperties = make(map[string]interface{})
				}
				qbod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				qbod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				qbod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				qbod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				qbod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				qbod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				qbod.Type = typeVar
			}
		}
	}

	return nil
}

// QuickBooksSource a copy activity QuickBooks server source.
type QuickBooksSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for QuickBooksSource.
func (qbs QuickBooksSource) MarshalJSON() ([]byte, error) {
	qbs.Type = TypeQuickBooksSource
	objectMap := make(map[string]interface{})
	if qbs.Query != nil {
		objectMap["query"] = qbs.Query
	}
	if qbs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = qbs.SourceRetryCount
	}
	if qbs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = qbs.SourceRetryWait
	}
	if qbs.Type != "" {
		objectMap["type"] = qbs.Type
	}
	for k, v := range qbs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return &qbs, true
}

// AsPrestoSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for QuickBooksSource.
func (qbs QuickBooksSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &qbs, true
}

// UnmarshalJSON is the custom unmarshaler for QuickBooksSource struct.
func (qbs *QuickBooksSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				qbs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if qbs.AdditionalProperties == nil {
					qbs.AdditionalProperties = make(map[string]interface{})
				}
				qbs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				qbs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				qbs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				qbs.Type = typeVar
			}
		}
	}

	return nil
}

// RecurrenceSchedule the recurrence schedule.
type RecurrenceSchedule struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Minutes - The minutes.
	Minutes *[]int32 `json:"minutes,omitempty"`
	// Hours - The hours.
	Hours *[]int32 `json:"hours,omitempty"`
	// WeekDays - The days of the week.
	WeekDays *[]DaysOfWeek `json:"weekDays,omitempty"`
	// MonthDays - The month days.
	MonthDays *[]int32 `json:"monthDays,omitempty"`
	// MonthlyOccurrences - The monthly occurrences.
	MonthlyOccurrences *[]RecurrenceScheduleOccurrence `json:"monthlyOccurrences,omitempty"`
}

// MarshalJSON is the custom marshaler for RecurrenceSchedule.
func (rs RecurrenceSchedule) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if rs.Minutes != nil {
		objectMap["minutes"] = rs.Minutes
	}
	if rs.Hours != nil {
		objectMap["hours"] = rs.Hours
	}
	if rs.WeekDays != nil {
		objectMap["weekDays"] = rs.WeekDays
	}
	if rs.MonthDays != nil {
		objectMap["monthDays"] = rs.MonthDays
	}
	if rs.MonthlyOccurrences != nil {
		objectMap["monthlyOccurrences"] = rs.MonthlyOccurrences
	}
	for k, v := range rs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for RecurrenceSchedule struct.
func (rs *RecurrenceSchedule) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if rs.AdditionalProperties == nil {
					rs.AdditionalProperties = make(map[string]interface{})
				}
				rs.AdditionalProperties[k] = additionalProperties
			}
		case "minutes":
			if v != nil {
				var minutes []int32
				err = json.Unmarshal(*v, &minutes)
				if err != nil {
					return err
				}
				rs.Minutes = &minutes
			}
		case "hours":
			if v != nil {
				var hours []int32
				err = json.Unmarshal(*v, &hours)
				if err != nil {
					return err
				}
				rs.Hours = &hours
			}
		case "weekDays":
			if v != nil {
				var weekDays []DaysOfWeek
				err = json.Unmarshal(*v, &weekDays)
				if err != nil {
					return err
				}
				rs.WeekDays = &weekDays
			}
		case "monthDays":
			if v != nil {
				var monthDays []int32
				err = json.Unmarshal(*v, &monthDays)
				if err != nil {
					return err
				}
				rs.MonthDays = &monthDays
			}
		case "monthlyOccurrences":
			if v != nil {
				var monthlyOccurrences []RecurrenceScheduleOccurrence
				err = json.Unmarshal(*v, &monthlyOccurrences)
				if err != nil {
					return err
				}
				rs.MonthlyOccurrences = &monthlyOccurrences
			}
		}
	}

	return nil
}

// RecurrenceScheduleOccurrence the recurrence schedule occurrence.
type RecurrenceScheduleOccurrence struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Day - The day of the week. Possible values include: 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'
	Day DayOfWeek `json:"day,omitempty"`
	// Occurrence - The occurrence.
	Occurrence *int32 `json:"occurrence,omitempty"`
}

// MarshalJSON is the custom marshaler for RecurrenceScheduleOccurrence.
func (rso RecurrenceScheduleOccurrence) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if rso.Day != "" {
		objectMap["day"] = rso.Day
	}
	if rso.Occurrence != nil {
		objectMap["occurrence"] = rso.Occurrence
	}
	for k, v := range rso.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for RecurrenceScheduleOccurrence struct.
func (rso *RecurrenceScheduleOccurrence) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if rso.AdditionalProperties == nil {
					rso.AdditionalProperties = make(map[string]interface{})
				}
				rso.AdditionalProperties[k] = additionalProperties
			}
		case "day":
			if v != nil {
				var day DayOfWeek
				err = json.Unmarshal(*v, &day)
				if err != nil {
					return err
				}
				rso.Day = day
			}
		case "occurrence":
			if v != nil {
				var occurrence int32
				err = json.Unmarshal(*v, &occurrence)
				if err != nil {
					return err
				}
				rso.Occurrence = &occurrence
			}
		}
	}

	return nil
}

// RedirectIncompatibleRowSettings redirect incompatible row settings
type RedirectIncompatibleRowSettings struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// LinkedServiceName - Name of the Azure Storage, Storage SAS, or Azure Data Lake Store linked service used for redirecting incompatible row. Must be specified if redirectIncompatibleRowSettings is specified. Type: string (or Expression with resultType string).
	LinkedServiceName interface{} `json:"linkedServiceName,omitempty"`
	// Path - The path for storing the redirect incompatible row data. Type: string (or Expression with resultType string).
	Path interface{} `json:"path,omitempty"`
}

// MarshalJSON is the custom marshaler for RedirectIncompatibleRowSettings.
func (rirs RedirectIncompatibleRowSettings) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if rirs.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = rirs.LinkedServiceName
	}
	if rirs.Path != nil {
		objectMap["path"] = rirs.Path
	}
	for k, v := range rirs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for RedirectIncompatibleRowSettings struct.
func (rirs *RedirectIncompatibleRowSettings) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if rirs.AdditionalProperties == nil {
					rirs.AdditionalProperties = make(map[string]interface{})
				}
				rirs.AdditionalProperties[k] = additionalProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName interface{}
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				rirs.LinkedServiceName = linkedServiceName
			}
		case "path":
			if v != nil {
				var pathVar interface{}
				err = json.Unmarshal(*v, &pathVar)
				if err != nil {
					return err
				}
				rirs.Path = pathVar
			}
		}
	}

	return nil
}

// RedshiftUnloadSettings 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 be unloaded into S3 first and
// then copied into the targeted sink from the interim S3.
type RedshiftUnloadSettings struct {
	// S3LinkedServiceName - The name of the Amazon S3 linked service which will be used for the unload operation when copying from the Amazon Redshift source.
	S3LinkedServiceName *LinkedServiceReference `json:"s3LinkedServiceName,omitempty"`
	// BucketName - 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 region as the Amazon Redshift source. Type: string (or Expression with resultType string).
	BucketName interface{} `json:"bucketName,omitempty"`
}

// RelationalSource a copy activity source for various relational databases.
type RelationalSource struct {
	// Query - Database query. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for RelationalSource.
func (rs RelationalSource) MarshalJSON() ([]byte, error) {
	rs.Type = TypeRelationalSource
	objectMap := make(map[string]interface{})
	if rs.Query != nil {
		objectMap["query"] = rs.Query
	}
	if rs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = rs.SourceRetryCount
	}
	if rs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = rs.SourceRetryWait
	}
	if rs.Type != "" {
		objectMap["type"] = rs.Type
	}
	for k, v := range rs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsRelationalSource() (*RelationalSource, bool) {
	return &rs, true
}

// AsDynamicsSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for RelationalSource.
func (rs RelationalSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &rs, true
}

// UnmarshalJSON is the custom unmarshaler for RelationalSource struct.
func (rs *RelationalSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				rs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if rs.AdditionalProperties == nil {
					rs.AdditionalProperties = make(map[string]interface{})
				}
				rs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				rs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				rs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				rs.Type = typeVar
			}
		}
	}

	return nil
}

// RelationalTableDataset the relational table dataset.
type RelationalTableDataset struct {
	// RelationalTableDatasetTypeProperties - Relational table dataset properties.
	*RelationalTableDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for RelationalTableDataset.
func (rtd RelationalTableDataset) MarshalJSON() ([]byte, error) {
	rtd.Type = TypeRelationalTable
	objectMap := make(map[string]interface{})
	if rtd.RelationalTableDatasetTypeProperties != nil {
		objectMap["typeProperties"] = rtd.RelationalTableDatasetTypeProperties
	}
	if rtd.Description != nil {
		objectMap["description"] = rtd.Description
	}
	if rtd.Structure != nil {
		objectMap["structure"] = rtd.Structure
	}
	if rtd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = rtd.LinkedServiceName
	}
	if rtd.Parameters != nil {
		objectMap["parameters"] = rtd.Parameters
	}
	if rtd.Annotations != nil {
		objectMap["annotations"] = rtd.Annotations
	}
	if rtd.Type != "" {
		objectMap["type"] = rtd.Type
	}
	for k, v := range rtd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return &rtd, true
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for RelationalTableDataset.
func (rtd RelationalTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &rtd, true
}

// UnmarshalJSON is the custom unmarshaler for RelationalTableDataset struct.
func (rtd *RelationalTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var relationalTableDatasetTypeProperties RelationalTableDatasetTypeProperties
				err = json.Unmarshal(*v, &relationalTableDatasetTypeProperties)
				if err != nil {
					return err
				}
				rtd.RelationalTableDatasetTypeProperties = &relationalTableDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if rtd.AdditionalProperties == nil {
					rtd.AdditionalProperties = make(map[string]interface{})
				}
				rtd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				rtd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				rtd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				rtd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				rtd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				rtd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				rtd.Type = typeVar
			}
		}
	}

	return nil
}

// RelationalTableDatasetTypeProperties relational table dataset properties.
type RelationalTableDatasetTypeProperties struct {
	// TableName - The relational table name. Type: string (or Expression with resultType string).
	TableName interface{} `json:"tableName,omitempty"`
}

// Resource azure Data Factory top-level resource.
type Resource struct {
	// ID - READ-ONLY; The resource identifier.
	ID *string `json:"id,omitempty"`
	// Name - READ-ONLY; The resource name.
	Name *string `json:"name,omitempty"`
	// Type - READ-ONLY; The resource type.
	Type *string `json:"type,omitempty"`
	// Location - The resource location.
	Location *string `json:"location,omitempty"`
	// Tags - The resource tags.
	Tags map[string]*string `json:"tags"`
}

// MarshalJSON is the custom marshaler for Resource.
func (r Resource) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if r.Location != nil {
		objectMap["location"] = r.Location
	}
	if r.Tags != nil {
		objectMap["tags"] = r.Tags
	}
	return json.Marshal(objectMap)
}

// ResponsysLinkedService responsys linked service.
type ResponsysLinkedService struct {
	// ResponsysLinkedServiceTypeProperties - Responsys linked service properties.
	*ResponsysLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ResponsysLinkedService.
func (rls ResponsysLinkedService) MarshalJSON() ([]byte, error) {
	rls.Type = TypeResponsys
	objectMap := make(map[string]interface{})
	if rls.ResponsysLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = rls.ResponsysLinkedServiceTypeProperties
	}
	if rls.ConnectVia != nil {
		objectMap["connectVia"] = rls.ConnectVia
	}
	if rls.Description != nil {
		objectMap["description"] = rls.Description
	}
	if rls.Parameters != nil {
		objectMap["parameters"] = rls.Parameters
	}
	if rls.Annotations != nil {
		objectMap["annotations"] = rls.Annotations
	}
	if rls.Type != "" {
		objectMap["type"] = rls.Type
	}
	for k, v := range rls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return &rls, true
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for ResponsysLinkedService.
func (rls ResponsysLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &rls, true
}

// UnmarshalJSON is the custom unmarshaler for ResponsysLinkedService struct.
func (rls *ResponsysLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var responsysLinkedServiceTypeProperties ResponsysLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &responsysLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				rls.ResponsysLinkedServiceTypeProperties = &responsysLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if rls.AdditionalProperties == nil {
					rls.AdditionalProperties = make(map[string]interface{})
				}
				rls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				rls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				rls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				rls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				rls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				rls.Type = typeVar
			}
		}
	}

	return nil
}

// ResponsysLinkedServiceTypeProperties responsys linked service properties.
type ResponsysLinkedServiceTypeProperties struct {
	// Endpoint - The endpoint of the Responsys server.
	Endpoint interface{} `json:"endpoint,omitempty"`
	// ClientID - The client ID associated with the Responsys application. Type: string (or Expression with resultType string).
	ClientID interface{} `json:"clientId,omitempty"`
	// ClientSecret - The client secret associated with the Responsys application. Type: string (or Expression with resultType string).
	ClientSecret BasicSecretBase `json:"clientSecret,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true. Type: boolean (or Expression with resultType boolean).
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true. Type: boolean (or Expression with resultType boolean).
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true. Type: boolean (or Expression with resultType boolean).
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for ResponsysLinkedServiceTypeProperties struct.
func (rlstp *ResponsysLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "endpoint":
			if v != nil {
				var endpoint interface{}
				err = json.Unmarshal(*v, &endpoint)
				if err != nil {
					return err
				}
				rlstp.Endpoint = endpoint
			}
		case "clientId":
			if v != nil {
				var clientID interface{}
				err = json.Unmarshal(*v, &clientID)
				if err != nil {
					return err
				}
				rlstp.ClientID = clientID
			}
		case "clientSecret":
			if v != nil {
				clientSecret, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				rlstp.ClientSecret = clientSecret
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				rlstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				rlstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				rlstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				rlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// ResponsysObjectDataset responsys dataset.
type ResponsysObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) MarshalJSON() ([]byte, error) {
	rod.Type = TypeResponsysObject
	objectMap := make(map[string]interface{})
	if rod.Description != nil {
		objectMap["description"] = rod.Description
	}
	if rod.Structure != nil {
		objectMap["structure"] = rod.Structure
	}
	if rod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = rod.LinkedServiceName
	}
	if rod.Parameters != nil {
		objectMap["parameters"] = rod.Parameters
	}
	if rod.Annotations != nil {
		objectMap["annotations"] = rod.Annotations
	}
	if rod.Type != "" {
		objectMap["type"] = rod.Type
	}
	for k, v := range rod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return &rod, true
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for ResponsysObjectDataset.
func (rod ResponsysObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &rod, true
}

// UnmarshalJSON is the custom unmarshaler for ResponsysObjectDataset struct.
func (rod *ResponsysObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if rod.AdditionalProperties == nil {
					rod.AdditionalProperties = make(map[string]interface{})
				}
				rod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				rod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				rod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				rod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				rod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				rod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				rod.Type = typeVar
			}
		}
	}

	return nil
}

// ResponsysSource a copy activity Responsys source.
type ResponsysSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ResponsysSource.
func (rs ResponsysSource) MarshalJSON() ([]byte, error) {
	rs.Type = TypeResponsysSource
	objectMap := make(map[string]interface{})
	if rs.Query != nil {
		objectMap["query"] = rs.Query
	}
	if rs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = rs.SourceRetryCount
	}
	if rs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = rs.SourceRetryWait
	}
	if rs.Type != "" {
		objectMap["type"] = rs.Type
	}
	for k, v := range rs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsResponsysSource() (*ResponsysSource, bool) {
	return &rs, true
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for ResponsysSource.
func (rs ResponsysSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &rs, true
}

// UnmarshalJSON is the custom unmarshaler for ResponsysSource struct.
func (rs *ResponsysSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				rs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if rs.AdditionalProperties == nil {
					rs.AdditionalProperties = make(map[string]interface{})
				}
				rs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				rs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				rs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				rs.Type = typeVar
			}
		}
	}

	return nil
}

// RetryPolicy execution policy for an activity.
type RetryPolicy struct {
	// Count - Maximum ordinary retry attempts. Default is 0. Type: integer (or Expression with resultType integer), minimum: 0.
	Count interface{} `json:"count,omitempty"`
	// IntervalInSeconds - Interval between retries in seconds. Default is 30.
	IntervalInSeconds *int32 `json:"intervalInSeconds,omitempty"`
}

// SalesforceLinkedService linked service for Salesforce.
type SalesforceLinkedService struct {
	// SalesforceLinkedServiceTypeProperties - Salesforce linked service properties.
	*SalesforceLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SalesforceLinkedService.
func (sls SalesforceLinkedService) MarshalJSON() ([]byte, error) {
	sls.Type = TypeSalesforce
	objectMap := make(map[string]interface{})
	if sls.SalesforceLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = sls.SalesforceLinkedServiceTypeProperties
	}
	if sls.ConnectVia != nil {
		objectMap["connectVia"] = sls.ConnectVia
	}
	if sls.Description != nil {
		objectMap["description"] = sls.Description
	}
	if sls.Parameters != nil {
		objectMap["parameters"] = sls.Parameters
	}
	if sls.Annotations != nil {
		objectMap["annotations"] = sls.Annotations
	}
	if sls.Type != "" {
		objectMap["type"] = sls.Type
	}
	for k, v := range sls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return &sls, true
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for SalesforceLinkedService.
func (sls SalesforceLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &sls, true
}

// UnmarshalJSON is the custom unmarshaler for SalesforceLinkedService struct.
func (sls *SalesforceLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var salesforceLinkedServiceTypeProperties SalesforceLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &salesforceLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				sls.SalesforceLinkedServiceTypeProperties = &salesforceLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sls.AdditionalProperties == nil {
					sls.AdditionalProperties = make(map[string]interface{})
				}
				sls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				sls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				sls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				sls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				sls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sls.Type = typeVar
			}
		}
	}

	return nil
}

// SalesforceLinkedServiceTypeProperties salesforce linked service properties.
type SalesforceLinkedServiceTypeProperties struct {
	// EnvironmentURL - The URL of Salesforce instance. Default is 'https://login.salesforce.com'. To copy data from sandbox, specify 'https://test.salesforce.com'. To copy data from custom domain, specify, for example, 'https://[domain].my.salesforce.com'. Type: string (or Expression with resultType string).
	EnvironmentURL interface{} `json:"environmentUrl,omitempty"`
	// Username - The username for Basic authentication of the Salesforce instance. Type: string (or Expression with resultType string).
	Username interface{} `json:"username,omitempty"`
	// Password - The password for Basic authentication of the Salesforce instance.
	Password BasicSecretBase `json:"password,omitempty"`
	// SecurityToken - The security token is required to remotely access Salesforce instance.
	SecurityToken BasicSecretBase `json:"securityToken,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for SalesforceLinkedServiceTypeProperties struct.
func (slstp *SalesforceLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "environmentUrl":
			if v != nil {
				var environmentURL interface{}
				err = json.Unmarshal(*v, &environmentURL)
				if err != nil {
					return err
				}
				slstp.EnvironmentURL = environmentURL
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				slstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				slstp.Password = password
			}
		case "securityToken":
			if v != nil {
				securityToken, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				slstp.SecurityToken = securityToken
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				slstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// SalesforceMarketingCloudLinkedService salesforce Marketing Cloud linked service.
type SalesforceMarketingCloudLinkedService struct {
	// SalesforceMarketingCloudLinkedServiceTypeProperties - Salesforce Marketing Cloud linked service properties.
	*SalesforceMarketingCloudLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) MarshalJSON() ([]byte, error) {
	smcls.Type = TypeSalesforceMarketingCloud
	objectMap := make(map[string]interface{})
	if smcls.SalesforceMarketingCloudLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = smcls.SalesforceMarketingCloudLinkedServiceTypeProperties
	}
	if smcls.ConnectVia != nil {
		objectMap["connectVia"] = smcls.ConnectVia
	}
	if smcls.Description != nil {
		objectMap["description"] = smcls.Description
	}
	if smcls.Parameters != nil {
		objectMap["parameters"] = smcls.Parameters
	}
	if smcls.Annotations != nil {
		objectMap["annotations"] = smcls.Annotations
	}
	if smcls.Type != "" {
		objectMap["type"] = smcls.Type
	}
	for k, v := range smcls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return &smcls, true
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for SalesforceMarketingCloudLinkedService.
func (smcls SalesforceMarketingCloudLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &smcls, true
}

// UnmarshalJSON is the custom unmarshaler for SalesforceMarketingCloudLinkedService struct.
func (smcls *SalesforceMarketingCloudLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var salesforceMarketingCloudLinkedServiceTypeProperties SalesforceMarketingCloudLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &salesforceMarketingCloudLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				smcls.SalesforceMarketingCloudLinkedServiceTypeProperties = &salesforceMarketingCloudLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if smcls.AdditionalProperties == nil {
					smcls.AdditionalProperties = make(map[string]interface{})
				}
				smcls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				smcls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				smcls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				smcls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				smcls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				smcls.Type = typeVar
			}
		}
	}

	return nil
}

// SalesforceMarketingCloudLinkedServiceTypeProperties salesforce Marketing Cloud linked service
// properties.
type SalesforceMarketingCloudLinkedServiceTypeProperties struct {
	// ClientID - The client ID associated with the Salesforce Marketing Cloud application. Type: string (or Expression with resultType string).
	ClientID interface{} `json:"clientId,omitempty"`
	// ClientSecret - The client secret associated with the Salesforce Marketing Cloud application. Type: string (or Expression with resultType string).
	ClientSecret BasicSecretBase `json:"clientSecret,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true. Type: boolean (or Expression with resultType boolean).
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true. Type: boolean (or Expression with resultType boolean).
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true. Type: boolean (or Expression with resultType boolean).
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for SalesforceMarketingCloudLinkedServiceTypeProperties struct.
func (smclstp *SalesforceMarketingCloudLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "clientId":
			if v != nil {
				var clientID interface{}
				err = json.Unmarshal(*v, &clientID)
				if err != nil {
					return err
				}
				smclstp.ClientID = clientID
			}
		case "clientSecret":
			if v != nil {
				clientSecret, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				smclstp.ClientSecret = clientSecret
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				smclstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				smclstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				smclstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				smclstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// SalesforceMarketingCloudObjectDataset salesforce Marketing Cloud dataset.
type SalesforceMarketingCloudObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) MarshalJSON() ([]byte, error) {
	smcod.Type = TypeSalesforceMarketingCloudObject
	objectMap := make(map[string]interface{})
	if smcod.Description != nil {
		objectMap["description"] = smcod.Description
	}
	if smcod.Structure != nil {
		objectMap["structure"] = smcod.Structure
	}
	if smcod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = smcod.LinkedServiceName
	}
	if smcod.Parameters != nil {
		objectMap["parameters"] = smcod.Parameters
	}
	if smcod.Annotations != nil {
		objectMap["annotations"] = smcod.Annotations
	}
	if smcod.Type != "" {
		objectMap["type"] = smcod.Type
	}
	for k, v := range smcod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return &smcod, true
}

// AsVerticaTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for SalesforceMarketingCloudObjectDataset.
func (smcod SalesforceMarketingCloudObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &smcod, true
}

// UnmarshalJSON is the custom unmarshaler for SalesforceMarketingCloudObjectDataset struct.
func (smcod *SalesforceMarketingCloudObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if smcod.AdditionalProperties == nil {
					smcod.AdditionalProperties = make(map[string]interface{})
				}
				smcod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				smcod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				smcod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				smcod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				smcod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				smcod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				smcod.Type = typeVar
			}
		}
	}

	return nil
}

// SalesforceMarketingCloudSource a copy activity Salesforce Marketing Cloud source.
type SalesforceMarketingCloudSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) MarshalJSON() ([]byte, error) {
	smcs.Type = TypeSalesforceMarketingCloudSource
	objectMap := make(map[string]interface{})
	if smcs.Query != nil {
		objectMap["query"] = smcs.Query
	}
	if smcs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = smcs.SourceRetryCount
	}
	if smcs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = smcs.SourceRetryWait
	}
	if smcs.Type != "" {
		objectMap["type"] = smcs.Type
	}
	for k, v := range smcs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return &smcs, true
}

// AsVerticaSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for SalesforceMarketingCloudSource.
func (smcs SalesforceMarketingCloudSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &smcs, true
}

// UnmarshalJSON is the custom unmarshaler for SalesforceMarketingCloudSource struct.
func (smcs *SalesforceMarketingCloudSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				smcs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if smcs.AdditionalProperties == nil {
					smcs.AdditionalProperties = make(map[string]interface{})
				}
				smcs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				smcs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				smcs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				smcs.Type = typeVar
			}
		}
	}

	return nil
}

// SalesforceObjectDataset the Salesforce object dataset.
type SalesforceObjectDataset struct {
	// SalesforceObjectDatasetTypeProperties - Salesforce object dataset properties.
	*SalesforceObjectDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) MarshalJSON() ([]byte, error) {
	sod.Type = TypeSalesforceObject
	objectMap := make(map[string]interface{})
	if sod.SalesforceObjectDatasetTypeProperties != nil {
		objectMap["typeProperties"] = sod.SalesforceObjectDatasetTypeProperties
	}
	if sod.Description != nil {
		objectMap["description"] = sod.Description
	}
	if sod.Structure != nil {
		objectMap["structure"] = sod.Structure
	}
	if sod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = sod.LinkedServiceName
	}
	if sod.Parameters != nil {
		objectMap["parameters"] = sod.Parameters
	}
	if sod.Annotations != nil {
		objectMap["annotations"] = sod.Annotations
	}
	if sod.Type != "" {
		objectMap["type"] = sod.Type
	}
	for k, v := range sod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return &sod, true
}

// AsRelationalTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for SalesforceObjectDataset.
func (sod SalesforceObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &sod, true
}

// UnmarshalJSON is the custom unmarshaler for SalesforceObjectDataset struct.
func (sod *SalesforceObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var salesforceObjectDatasetTypeProperties SalesforceObjectDatasetTypeProperties
				err = json.Unmarshal(*v, &salesforceObjectDatasetTypeProperties)
				if err != nil {
					return err
				}
				sod.SalesforceObjectDatasetTypeProperties = &salesforceObjectDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sod.AdditionalProperties == nil {
					sod.AdditionalProperties = make(map[string]interface{})
				}
				sod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				sod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				sod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				sod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				sod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				sod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sod.Type = typeVar
			}
		}
	}

	return nil
}

// SalesforceObjectDatasetTypeProperties salesforce object dataset properties.
type SalesforceObjectDatasetTypeProperties struct {
	// ObjectAPIName - The Salesforce object API name. Type: string (or Expression with resultType string).
	ObjectAPIName interface{} `json:"objectApiName,omitempty"`
}

// SalesforceSink a copy activity Salesforce sink.
type SalesforceSink struct {
	// WriteBehavior - The write behavior for the operation. Default is Insert.
	WriteBehavior interface{} `json:"writeBehavior,omitempty"`
	// ExternalIDFieldName - The name of the external ID field for upsert operation. Default value is 'Id' column. Type: string (or Expression with resultType string).
	ExternalIDFieldName interface{} `json:"externalIdFieldName,omitempty"`
	// IgnoreNullValues - 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 it to true, it means ADF will leave the data in the destination object unchanged when doing upsert/update operation and insert defined default value when doing insert operation, versus ADF will update the data in the destination object to NULL when doing upsert/update operation and insert NULL value when doing insert operation. Type: boolean (or Expression with resultType boolean).
	IgnoreNullValues interface{} `json:"ignoreNullValues,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SalesforceSink.
func (ss SalesforceSink) MarshalJSON() ([]byte, error) {
	ss.Type = TypeSalesforceSink
	objectMap := make(map[string]interface{})
	if ss.WriteBehavior != nil {
		objectMap["writeBehavior"] = ss.WriteBehavior
	}
	if ss.ExternalIDFieldName != nil {
		objectMap["externalIdFieldName"] = ss.ExternalIDFieldName
	}
	if ss.IgnoreNullValues != nil {
		objectMap["ignoreNullValues"] = ss.IgnoreNullValues
	}
	if ss.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = ss.WriteBatchSize
	}
	if ss.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = ss.WriteBatchTimeout
	}
	if ss.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = ss.SinkRetryCount
	}
	if ss.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = ss.SinkRetryWait
	}
	if ss.Type != "" {
		objectMap["type"] = ss.Type
	}
	for k, v := range ss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return &ss, true
}

// AsDynamicsSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for SalesforceSink.
func (ss SalesforceSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &ss, true
}

// UnmarshalJSON is the custom unmarshaler for SalesforceSink struct.
func (ss *SalesforceSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "writeBehavior":
			if v != nil {
				var writeBehavior interface{}
				err = json.Unmarshal(*v, &writeBehavior)
				if err != nil {
					return err
				}
				ss.WriteBehavior = writeBehavior
			}
		case "externalIdFieldName":
			if v != nil {
				var externalIDFieldName interface{}
				err = json.Unmarshal(*v, &externalIDFieldName)
				if err != nil {
					return err
				}
				ss.ExternalIDFieldName = externalIDFieldName
			}
		case "ignoreNullValues":
			if v != nil {
				var ignoreNullValues interface{}
				err = json.Unmarshal(*v, &ignoreNullValues)
				if err != nil {
					return err
				}
				ss.IgnoreNullValues = ignoreNullValues
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ss.AdditionalProperties == nil {
					ss.AdditionalProperties = make(map[string]interface{})
				}
				ss.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				ss.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				ss.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				ss.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				ss.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ss.Type = typeVar
			}
		}
	}

	return nil
}

// SalesforceSource a copy activity Salesforce source.
type SalesforceSource struct {
	// Query - Database query. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// ReadBehavior - The read behavior for the operation. Default is Query.
	ReadBehavior interface{} `json:"readBehavior,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SalesforceSource.
func (ss SalesforceSource) MarshalJSON() ([]byte, error) {
	ss.Type = TypeSalesforceSource
	objectMap := make(map[string]interface{})
	if ss.Query != nil {
		objectMap["query"] = ss.Query
	}
	if ss.ReadBehavior != nil {
		objectMap["readBehavior"] = ss.ReadBehavior
	}
	if ss.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ss.SourceRetryCount
	}
	if ss.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ss.SourceRetryWait
	}
	if ss.Type != "" {
		objectMap["type"] = ss.Type
	}
	for k, v := range ss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return &ss, true
}

// AsRelationalSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for SalesforceSource.
func (ss SalesforceSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ss, true
}

// UnmarshalJSON is the custom unmarshaler for SalesforceSource struct.
func (ss *SalesforceSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ss.Query = query
			}
		case "readBehavior":
			if v != nil {
				var readBehavior interface{}
				err = json.Unmarshal(*v, &readBehavior)
				if err != nil {
					return err
				}
				ss.ReadBehavior = readBehavior
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ss.AdditionalProperties == nil {
					ss.AdditionalProperties = make(map[string]interface{})
				}
				ss.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ss.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ss.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ss.Type = typeVar
			}
		}
	}

	return nil
}

// SapBWLinkedService SAP Business Warehouse Linked Service.
type SapBWLinkedService struct {
	// SapBWLinkedServiceTypeProperties - Properties specific to this linked service type.
	*SapBWLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SapBWLinkedService.
func (sbls SapBWLinkedService) MarshalJSON() ([]byte, error) {
	sbls.Type = TypeSapBW
	objectMap := make(map[string]interface{})
	if sbls.SapBWLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = sbls.SapBWLinkedServiceTypeProperties
	}
	if sbls.ConnectVia != nil {
		objectMap["connectVia"] = sbls.ConnectVia
	}
	if sbls.Description != nil {
		objectMap["description"] = sbls.Description
	}
	if sbls.Parameters != nil {
		objectMap["parameters"] = sbls.Parameters
	}
	if sbls.Annotations != nil {
		objectMap["annotations"] = sbls.Annotations
	}
	if sbls.Type != "" {
		objectMap["type"] = sbls.Type
	}
	for k, v := range sbls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return &sbls, true
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for SapBWLinkedService.
func (sbls SapBWLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &sbls, true
}

// UnmarshalJSON is the custom unmarshaler for SapBWLinkedService struct.
func (sbls *SapBWLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var sapBWLinkedServiceTypeProperties SapBWLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &sapBWLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				sbls.SapBWLinkedServiceTypeProperties = &sapBWLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sbls.AdditionalProperties == nil {
					sbls.AdditionalProperties = make(map[string]interface{})
				}
				sbls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				sbls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				sbls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				sbls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				sbls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sbls.Type = typeVar
			}
		}
	}

	return nil
}

// SapBWLinkedServiceTypeProperties properties specific to this linked service type.
type SapBWLinkedServiceTypeProperties struct {
	// Server - Host name of the SAP BW instance. Type: string (or Expression with resultType string).
	Server interface{} `json:"server,omitempty"`
	// SystemNumber - System number of the BW system. (Usually a two-digit decimal number represented as a string.) Type: string (or Expression with resultType string).
	SystemNumber interface{} `json:"systemNumber,omitempty"`
	// ClientID - 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 string).
	ClientID interface{} `json:"clientId,omitempty"`
	// UserName - Username to access the SAP BW server. Type: string (or Expression with resultType string).
	UserName interface{} `json:"userName,omitempty"`
	// Password - Password to access the SAP BW server.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for SapBWLinkedServiceTypeProperties struct.
func (sblstp *SapBWLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "server":
			if v != nil {
				var server interface{}
				err = json.Unmarshal(*v, &server)
				if err != nil {
					return err
				}
				sblstp.Server = server
			}
		case "systemNumber":
			if v != nil {
				var systemNumber interface{}
				err = json.Unmarshal(*v, &systemNumber)
				if err != nil {
					return err
				}
				sblstp.SystemNumber = systemNumber
			}
		case "clientId":
			if v != nil {
				var clientID interface{}
				err = json.Unmarshal(*v, &clientID)
				if err != nil {
					return err
				}
				sblstp.ClientID = clientID
			}
		case "userName":
			if v != nil {
				var userName interface{}
				err = json.Unmarshal(*v, &userName)
				if err != nil {
					return err
				}
				sblstp.UserName = userName
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				sblstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				sblstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// SapCloudForCustomerLinkedService linked service for SAP Cloud for Customer.
type SapCloudForCustomerLinkedService struct {
	// SapCloudForCustomerLinkedServiceTypeProperties - SAP Cloud for Customer linked service properties.
	*SapCloudForCustomerLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) MarshalJSON() ([]byte, error) {
	scfcls.Type = TypeSapCloudForCustomer
	objectMap := make(map[string]interface{})
	if scfcls.SapCloudForCustomerLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = scfcls.SapCloudForCustomerLinkedServiceTypeProperties
	}
	if scfcls.ConnectVia != nil {
		objectMap["connectVia"] = scfcls.ConnectVia
	}
	if scfcls.Description != nil {
		objectMap["description"] = scfcls.Description
	}
	if scfcls.Parameters != nil {
		objectMap["parameters"] = scfcls.Parameters
	}
	if scfcls.Annotations != nil {
		objectMap["annotations"] = scfcls.Annotations
	}
	if scfcls.Type != "" {
		objectMap["type"] = scfcls.Type
	}
	for k, v := range scfcls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return &scfcls, true
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for SapCloudForCustomerLinkedService.
func (scfcls SapCloudForCustomerLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &scfcls, true
}

// UnmarshalJSON is the custom unmarshaler for SapCloudForCustomerLinkedService struct.
func (scfcls *SapCloudForCustomerLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var sapCloudForCustomerLinkedServiceTypeProperties SapCloudForCustomerLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &sapCloudForCustomerLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				scfcls.SapCloudForCustomerLinkedServiceTypeProperties = &sapCloudForCustomerLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if scfcls.AdditionalProperties == nil {
					scfcls.AdditionalProperties = make(map[string]interface{})
				}
				scfcls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				scfcls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				scfcls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				scfcls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				scfcls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				scfcls.Type = typeVar
			}
		}
	}

	return nil
}

// SapCloudForCustomerLinkedServiceTypeProperties SAP Cloud for Customer linked service properties.
type SapCloudForCustomerLinkedServiceTypeProperties struct {
	// URL - The URL of SAP Cloud for Customer OData API. For example, '[https://[tenantname].crm.ondemand.com/sap/c4c/odata/v1]'. Type: string (or Expression with resultType string).
	URL interface{} `json:"url,omitempty"`
	// Username - The username for Basic authentication. Type: string (or Expression with resultType string).
	Username interface{} `json:"username,omitempty"`
	// Password - The password for Basic authentication.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Either encryptedCredential or username/password must be provided. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for SapCloudForCustomerLinkedServiceTypeProperties struct.
func (scfclstp *SapCloudForCustomerLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "url":
			if v != nil {
				var URL interface{}
				err = json.Unmarshal(*v, &URL)
				if err != nil {
					return err
				}
				scfclstp.URL = URL
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				scfclstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				scfclstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				scfclstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// SapCloudForCustomerResourceDataset the path of the SAP Cloud for Customer OData entity.
type SapCloudForCustomerResourceDataset struct {
	// SapCloudForCustomerResourceDatasetTypeProperties - SAP Cloud For Customer OData resource dataset properties.
	*SapCloudForCustomerResourceDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) MarshalJSON() ([]byte, error) {
	scfcrd.Type = TypeSapCloudForCustomerResource
	objectMap := make(map[string]interface{})
	if scfcrd.SapCloudForCustomerResourceDatasetTypeProperties != nil {
		objectMap["typeProperties"] = scfcrd.SapCloudForCustomerResourceDatasetTypeProperties
	}
	if scfcrd.Description != nil {
		objectMap["description"] = scfcrd.Description
	}
	if scfcrd.Structure != nil {
		objectMap["structure"] = scfcrd.Structure
	}
	if scfcrd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = scfcrd.LinkedServiceName
	}
	if scfcrd.Parameters != nil {
		objectMap["parameters"] = scfcrd.Parameters
	}
	if scfcrd.Annotations != nil {
		objectMap["annotations"] = scfcrd.Annotations
	}
	if scfcrd.Type != "" {
		objectMap["type"] = scfcrd.Type
	}
	for k, v := range scfcrd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return &scfcrd, true
}

// AsSalesforceObjectDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for SapCloudForCustomerResourceDataset.
func (scfcrd SapCloudForCustomerResourceDataset) AsBasicDataset() (BasicDataset, bool) {
	return &scfcrd, true
}

// UnmarshalJSON is the custom unmarshaler for SapCloudForCustomerResourceDataset struct.
func (scfcrd *SapCloudForCustomerResourceDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var sapCloudForCustomerResourceDatasetTypeProperties SapCloudForCustomerResourceDatasetTypeProperties
				err = json.Unmarshal(*v, &sapCloudForCustomerResourceDatasetTypeProperties)
				if err != nil {
					return err
				}
				scfcrd.SapCloudForCustomerResourceDatasetTypeProperties = &sapCloudForCustomerResourceDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if scfcrd.AdditionalProperties == nil {
					scfcrd.AdditionalProperties = make(map[string]interface{})
				}
				scfcrd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				scfcrd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				scfcrd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				scfcrd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				scfcrd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				scfcrd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				scfcrd.Type = typeVar
			}
		}
	}

	return nil
}

// SapCloudForCustomerResourceDatasetTypeProperties sap Cloud For Customer OData resource dataset
// properties.
type SapCloudForCustomerResourceDatasetTypeProperties struct {
	// Path - The path of the SAP Cloud for Customer OData entity. Type: string (or Expression with resultType string).
	Path interface{} `json:"path,omitempty"`
}

// SapCloudForCustomerSink a copy activity SAP Cloud for Customer sink.
type SapCloudForCustomerSink struct {
	// WriteBehavior - The write behavior for the operation. Default is 'Insert'.
	WriteBehavior interface{} `json:"writeBehavior,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) MarshalJSON() ([]byte, error) {
	scfcs.Type = TypeSapCloudForCustomerSink
	objectMap := make(map[string]interface{})
	if scfcs.WriteBehavior != nil {
		objectMap["writeBehavior"] = scfcs.WriteBehavior
	}
	if scfcs.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = scfcs.WriteBatchSize
	}
	if scfcs.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = scfcs.WriteBatchTimeout
	}
	if scfcs.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = scfcs.SinkRetryCount
	}
	if scfcs.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = scfcs.SinkRetryWait
	}
	if scfcs.Type != "" {
		objectMap["type"] = scfcs.Type
	}
	for k, v := range scfcs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return &scfcs, true
}

// AsCopySink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for SapCloudForCustomerSink.
func (scfcs SapCloudForCustomerSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &scfcs, true
}

// UnmarshalJSON is the custom unmarshaler for SapCloudForCustomerSink struct.
func (scfcs *SapCloudForCustomerSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "writeBehavior":
			if v != nil {
				var writeBehavior interface{}
				err = json.Unmarshal(*v, &writeBehavior)
				if err != nil {
					return err
				}
				scfcs.WriteBehavior = writeBehavior
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if scfcs.AdditionalProperties == nil {
					scfcs.AdditionalProperties = make(map[string]interface{})
				}
				scfcs.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				scfcs.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				scfcs.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				scfcs.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				scfcs.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				scfcs.Type = typeVar
			}
		}
	}

	return nil
}

// SapCloudForCustomerSource a copy activity source for SAP Cloud for Customer source.
type SapCloudForCustomerSource struct {
	// Query - SAP Cloud for Customer OData query. For example, "$top=1". Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) MarshalJSON() ([]byte, error) {
	scfcs.Type = TypeSapCloudForCustomerSource
	objectMap := make(map[string]interface{})
	if scfcs.Query != nil {
		objectMap["query"] = scfcs.Query
	}
	if scfcs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = scfcs.SourceRetryCount
	}
	if scfcs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = scfcs.SourceRetryWait
	}
	if scfcs.Type != "" {
		objectMap["type"] = scfcs.Type
	}
	for k, v := range scfcs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return &scfcs, true
}

// AsSalesforceSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for SapCloudForCustomerSource.
func (scfcs SapCloudForCustomerSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &scfcs, true
}

// UnmarshalJSON is the custom unmarshaler for SapCloudForCustomerSource struct.
func (scfcs *SapCloudForCustomerSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				scfcs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if scfcs.AdditionalProperties == nil {
					scfcs.AdditionalProperties = make(map[string]interface{})
				}
				scfcs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				scfcs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				scfcs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				scfcs.Type = typeVar
			}
		}
	}

	return nil
}

// SapEccLinkedService linked service for SAP ERP Central Component(SAP ECC).
type SapEccLinkedService struct {
	// SapEccLinkedServiceTypeProperties - SAP ECC linked service properties.
	*SapEccLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SapEccLinkedService.
func (sels SapEccLinkedService) MarshalJSON() ([]byte, error) {
	sels.Type = TypeSapEcc
	objectMap := make(map[string]interface{})
	if sels.SapEccLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = sels.SapEccLinkedServiceTypeProperties
	}
	if sels.ConnectVia != nil {
		objectMap["connectVia"] = sels.ConnectVia
	}
	if sels.Description != nil {
		objectMap["description"] = sels.Description
	}
	if sels.Parameters != nil {
		objectMap["parameters"] = sels.Parameters
	}
	if sels.Annotations != nil {
		objectMap["annotations"] = sels.Annotations
	}
	if sels.Type != "" {
		objectMap["type"] = sels.Type
	}
	for k, v := range sels.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return &sels, true
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for SapEccLinkedService.
func (sels SapEccLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &sels, true
}

// UnmarshalJSON is the custom unmarshaler for SapEccLinkedService struct.
func (sels *SapEccLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var sapEccLinkedServiceTypeProperties SapEccLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &sapEccLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				sels.SapEccLinkedServiceTypeProperties = &sapEccLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sels.AdditionalProperties == nil {
					sels.AdditionalProperties = make(map[string]interface{})
				}
				sels.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				sels.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				sels.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				sels.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				sels.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sels.Type = typeVar
			}
		}
	}

	return nil
}

// SapEccLinkedServiceTypeProperties SAP ECC linked service properties.
type SapEccLinkedServiceTypeProperties struct {
	// URL - The URL of SAP ECC OData API. For example, '[https://hostname:port/sap/opu/odata/sap/servicename/]'. Type: string (or Expression with resultType string).
	URL *string `json:"url,omitempty"`
	// Username - The username for Basic authentication. Type: string (or Expression with resultType string).
	Username *string `json:"username,omitempty"`
	// Password - The password for Basic authentication.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Either encryptedCredential or username/password must be provided. Type: string (or Expression with resultType string).
	EncryptedCredential *string `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for SapEccLinkedServiceTypeProperties struct.
func (selstp *SapEccLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "url":
			if v != nil {
				var URL string
				err = json.Unmarshal(*v, &URL)
				if err != nil {
					return err
				}
				selstp.URL = &URL
			}
		case "username":
			if v != nil {
				var username string
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				selstp.Username = &username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				selstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential string
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				selstp.EncryptedCredential = &encryptedCredential
			}
		}
	}

	return nil
}

// SapEccResourceDataset the path of the SAP ECC OData entity.
type SapEccResourceDataset struct {
	// SapEccResourceDatasetTypeProperties - SAP ECC OData resource dataset properties.
	*SapEccResourceDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SapEccResourceDataset.
func (serd SapEccResourceDataset) MarshalJSON() ([]byte, error) {
	serd.Type = TypeSapEccResource
	objectMap := make(map[string]interface{})
	if serd.SapEccResourceDatasetTypeProperties != nil {
		objectMap["typeProperties"] = serd.SapEccResourceDatasetTypeProperties
	}
	if serd.Description != nil {
		objectMap["description"] = serd.Description
	}
	if serd.Structure != nil {
		objectMap["structure"] = serd.Structure
	}
	if serd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = serd.LinkedServiceName
	}
	if serd.Parameters != nil {
		objectMap["parameters"] = serd.Parameters
	}
	if serd.Annotations != nil {
		objectMap["annotations"] = serd.Annotations
	}
	if serd.Type != "" {
		objectMap["type"] = serd.Type
	}
	for k, v := range serd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return &serd, true
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for SapEccResourceDataset.
func (serd SapEccResourceDataset) AsBasicDataset() (BasicDataset, bool) {
	return &serd, true
}

// UnmarshalJSON is the custom unmarshaler for SapEccResourceDataset struct.
func (serd *SapEccResourceDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var sapEccResourceDatasetTypeProperties SapEccResourceDatasetTypeProperties
				err = json.Unmarshal(*v, &sapEccResourceDatasetTypeProperties)
				if err != nil {
					return err
				}
				serd.SapEccResourceDatasetTypeProperties = &sapEccResourceDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if serd.AdditionalProperties == nil {
					serd.AdditionalProperties = make(map[string]interface{})
				}
				serd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				serd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				serd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				serd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				serd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				serd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				serd.Type = typeVar
			}
		}
	}

	return nil
}

// SapEccResourceDatasetTypeProperties sap ECC OData resource dataset properties.
type SapEccResourceDatasetTypeProperties struct {
	// Path - The path of the SAP ECC OData entity. Type: string (or Expression with resultType string).
	Path interface{} `json:"path,omitempty"`
}

// SapEccSource a copy activity source for SAP ECC source.
type SapEccSource struct {
	// Query - SAP ECC OData query. For example, "$top=1". Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SapEccSource.
func (ses SapEccSource) MarshalJSON() ([]byte, error) {
	ses.Type = TypeSapEccSource
	objectMap := make(map[string]interface{})
	if ses.Query != nil {
		objectMap["query"] = ses.Query
	}
	if ses.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ses.SourceRetryCount
	}
	if ses.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ses.SourceRetryWait
	}
	if ses.Type != "" {
		objectMap["type"] = ses.Type
	}
	for k, v := range ses.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsSapEccSource() (*SapEccSource, bool) {
	return &ses, true
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for SapEccSource.
func (ses SapEccSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ses, true
}

// UnmarshalJSON is the custom unmarshaler for SapEccSource struct.
func (ses *SapEccSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ses.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ses.AdditionalProperties == nil {
					ses.AdditionalProperties = make(map[string]interface{})
				}
				ses.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ses.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ses.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ses.Type = typeVar
			}
		}
	}

	return nil
}

// SapHanaLinkedService SAP HANA Linked Service.
type SapHanaLinkedService struct {
	// SapHanaLinkedServiceProperties - Properties specific to this linked service type.
	*SapHanaLinkedServiceProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SapHanaLinkedService.
func (shls SapHanaLinkedService) MarshalJSON() ([]byte, error) {
	shls.Type = TypeSapHana
	objectMap := make(map[string]interface{})
	if shls.SapHanaLinkedServiceProperties != nil {
		objectMap["typeProperties"] = shls.SapHanaLinkedServiceProperties
	}
	if shls.ConnectVia != nil {
		objectMap["connectVia"] = shls.ConnectVia
	}
	if shls.Description != nil {
		objectMap["description"] = shls.Description
	}
	if shls.Parameters != nil {
		objectMap["parameters"] = shls.Parameters
	}
	if shls.Annotations != nil {
		objectMap["annotations"] = shls.Annotations
	}
	if shls.Type != "" {
		objectMap["type"] = shls.Type
	}
	for k, v := range shls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return &shls, true
}

// AsSapBWLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for SapHanaLinkedService.
func (shls SapHanaLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &shls, true
}

// UnmarshalJSON is the custom unmarshaler for SapHanaLinkedService struct.
func (shls *SapHanaLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var sapHanaLinkedServiceProperties SapHanaLinkedServiceProperties
				err = json.Unmarshal(*v, &sapHanaLinkedServiceProperties)
				if err != nil {
					return err
				}
				shls.SapHanaLinkedServiceProperties = &sapHanaLinkedServiceProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if shls.AdditionalProperties == nil {
					shls.AdditionalProperties = make(map[string]interface{})
				}
				shls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				shls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				shls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				shls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				shls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				shls.Type = typeVar
			}
		}
	}

	return nil
}

// SapHanaLinkedServiceProperties properties specific to this linked service type.
type SapHanaLinkedServiceProperties struct {
	// Server - Host name of the SAP HANA server. Type: string (or Expression with resultType string).
	Server interface{} `json:"server,omitempty"`
	// AuthenticationType - The authentication type to be used to connect to the SAP HANA server. Possible values include: 'SapHanaAuthenticationTypeBasic', 'SapHanaAuthenticationTypeWindows'
	AuthenticationType SapHanaAuthenticationType `json:"authenticationType,omitempty"`
	// UserName - Username to access the SAP HANA server. Type: string (or Expression with resultType string).
	UserName interface{} `json:"userName,omitempty"`
	// Password - Password to access the SAP HANA server.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for SapHanaLinkedServiceProperties struct.
func (shlsp *SapHanaLinkedServiceProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "server":
			if v != nil {
				var server interface{}
				err = json.Unmarshal(*v, &server)
				if err != nil {
					return err
				}
				shlsp.Server = server
			}
		case "authenticationType":
			if v != nil {
				var authenticationType SapHanaAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				shlsp.AuthenticationType = authenticationType
			}
		case "userName":
			if v != nil {
				var userName interface{}
				err = json.Unmarshal(*v, &userName)
				if err != nil {
					return err
				}
				shlsp.UserName = userName
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				shlsp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				shlsp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// ScheduleTrigger trigger that creates pipeline runs periodically, on schedule.
type ScheduleTrigger struct {
	// ScheduleTriggerTypeProperties - Schedule Trigger properties.
	*ScheduleTriggerTypeProperties `json:"typeProperties,omitempty"`
	// Pipelines - Pipelines that need to be started.
	Pipelines *[]TriggerPipelineReference `json:"pipelines,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Trigger description.
	Description *string `json:"description,omitempty"`
	// RuntimeState - READ-ONLY; Indicates if trigger is running or not. Updated when Start/Stop APIs are called on the Trigger. Possible values include: 'TriggerRuntimeStateStarted', 'TriggerRuntimeStateStopped', 'TriggerRuntimeStateDisabled'
	RuntimeState TriggerRuntimeState `json:"runtimeState,omitempty"`
	// Type - Possible values include: 'TypeTrigger', 'TypeTumblingWindowTrigger', 'TypeBlobEventsTrigger', 'TypeBlobTrigger', 'TypeScheduleTrigger', 'TypeMultiplePipelineTrigger'
	Type TypeBasicTrigger `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ScheduleTrigger.
func (st ScheduleTrigger) MarshalJSON() ([]byte, error) {
	st.Type = TypeScheduleTrigger
	objectMap := make(map[string]interface{})
	if st.ScheduleTriggerTypeProperties != nil {
		objectMap["typeProperties"] = st.ScheduleTriggerTypeProperties
	}
	if st.Pipelines != nil {
		objectMap["pipelines"] = st.Pipelines
	}
	if st.Description != nil {
		objectMap["description"] = st.Description
	}
	if st.Type != "" {
		objectMap["type"] = st.Type
	}
	for k, v := range st.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsTumblingWindowTrigger is the BasicTrigger implementation for ScheduleTrigger.
func (st ScheduleTrigger) AsTumblingWindowTrigger() (*TumblingWindowTrigger, bool) {
	return nil, false
}

// AsBlobEventsTrigger is the BasicTrigger implementation for ScheduleTrigger.
func (st ScheduleTrigger) AsBlobEventsTrigger() (*BlobEventsTrigger, bool) {
	return nil, false
}

// AsBlobTrigger is the BasicTrigger implementation for ScheduleTrigger.
func (st ScheduleTrigger) AsBlobTrigger() (*BlobTrigger, bool) {
	return nil, false
}

// AsScheduleTrigger is the BasicTrigger implementation for ScheduleTrigger.
func (st ScheduleTrigger) AsScheduleTrigger() (*ScheduleTrigger, bool) {
	return &st, true
}

// AsMultiplePipelineTrigger is the BasicTrigger implementation for ScheduleTrigger.
func (st ScheduleTrigger) AsMultiplePipelineTrigger() (*MultiplePipelineTrigger, bool) {
	return nil, false
}

// AsBasicMultiplePipelineTrigger is the BasicTrigger implementation for ScheduleTrigger.
func (st ScheduleTrigger) AsBasicMultiplePipelineTrigger() (BasicMultiplePipelineTrigger, bool) {
	return &st, true
}

// AsTrigger is the BasicTrigger implementation for ScheduleTrigger.
func (st ScheduleTrigger) AsTrigger() (*Trigger, bool) {
	return nil, false
}

// AsBasicTrigger is the BasicTrigger implementation for ScheduleTrigger.
func (st ScheduleTrigger) AsBasicTrigger() (BasicTrigger, bool) {
	return &st, true
}

// UnmarshalJSON is the custom unmarshaler for ScheduleTrigger struct.
func (st *ScheduleTrigger) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var scheduleTriggerTypeProperties ScheduleTriggerTypeProperties
				err = json.Unmarshal(*v, &scheduleTriggerTypeProperties)
				if err != nil {
					return err
				}
				st.ScheduleTriggerTypeProperties = &scheduleTriggerTypeProperties
			}
		case "pipelines":
			if v != nil {
				var pipelines []TriggerPipelineReference
				err = json.Unmarshal(*v, &pipelines)
				if err != nil {
					return err
				}
				st.Pipelines = &pipelines
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if st.AdditionalProperties == nil {
					st.AdditionalProperties = make(map[string]interface{})
				}
				st.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				st.Description = &description
			}
		case "runtimeState":
			if v != nil {
				var runtimeState TriggerRuntimeState
				err = json.Unmarshal(*v, &runtimeState)
				if err != nil {
					return err
				}
				st.RuntimeState = runtimeState
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicTrigger
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				st.Type = typeVar
			}
		}
	}

	return nil
}

// ScheduleTriggerRecurrence the workflow trigger recurrence.
type ScheduleTriggerRecurrence struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Frequency - The frequency. Possible values include: 'NotSpecified', 'Minute', 'Hour', 'Day', 'Week', 'Month', 'Year'
	Frequency RecurrenceFrequency `json:"frequency,omitempty"`
	// Interval - The interval.
	Interval *int32 `json:"interval,omitempty"`
	// StartTime - The start time.
	StartTime *date.Time `json:"startTime,omitempty"`
	// EndTime - The end time.
	EndTime *date.Time `json:"endTime,omitempty"`
	// TimeZone - The time zone.
	TimeZone *string `json:"timeZone,omitempty"`
	// Schedule - The recurrence schedule.
	Schedule *RecurrenceSchedule `json:"schedule,omitempty"`
}

// MarshalJSON is the custom marshaler for ScheduleTriggerRecurrence.
func (str ScheduleTriggerRecurrence) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if str.Frequency != "" {
		objectMap["frequency"] = str.Frequency
	}
	if str.Interval != nil {
		objectMap["interval"] = str.Interval
	}
	if str.StartTime != nil {
		objectMap["startTime"] = str.StartTime
	}
	if str.EndTime != nil {
		objectMap["endTime"] = str.EndTime
	}
	if str.TimeZone != nil {
		objectMap["timeZone"] = str.TimeZone
	}
	if str.Schedule != nil {
		objectMap["schedule"] = str.Schedule
	}
	for k, v := range str.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for ScheduleTriggerRecurrence struct.
func (str *ScheduleTriggerRecurrence) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if str.AdditionalProperties == nil {
					str.AdditionalProperties = make(map[string]interface{})
				}
				str.AdditionalProperties[k] = additionalProperties
			}
		case "frequency":
			if v != nil {
				var frequency RecurrenceFrequency
				err = json.Unmarshal(*v, &frequency)
				if err != nil {
					return err
				}
				str.Frequency = frequency
			}
		case "interval":
			if v != nil {
				var interval int32
				err = json.Unmarshal(*v, &interval)
				if err != nil {
					return err
				}
				str.Interval = &interval
			}
		case "startTime":
			if v != nil {
				var startTime date.Time
				err = json.Unmarshal(*v, &startTime)
				if err != nil {
					return err
				}
				str.StartTime = &startTime
			}
		case "endTime":
			if v != nil {
				var endTime date.Time
				err = json.Unmarshal(*v, &endTime)
				if err != nil {
					return err
				}
				str.EndTime = &endTime
			}
		case "timeZone":
			if v != nil {
				var timeZone string
				err = json.Unmarshal(*v, &timeZone)
				if err != nil {
					return err
				}
				str.TimeZone = &timeZone
			}
		case "schedule":
			if v != nil {
				var schedule RecurrenceSchedule
				err = json.Unmarshal(*v, &schedule)
				if err != nil {
					return err
				}
				str.Schedule = &schedule
			}
		}
	}

	return nil
}

// ScheduleTriggerTypeProperties schedule Trigger properties.
type ScheduleTriggerTypeProperties struct {
	// Recurrence - Recurrence schedule configuration.
	Recurrence *ScheduleTriggerRecurrence `json:"recurrence,omitempty"`
}

// BasicSecretBase the base definition of a secret type.
type BasicSecretBase interface {
	AsSecureString() (*SecureString, bool)
	AsAzureKeyVaultSecretReference() (*AzureKeyVaultSecretReference, bool)
	AsSecretBase() (*SecretBase, bool)
}

// SecretBase the base definition of a secret type.
type SecretBase struct {
	// Type - Possible values include: 'TypeSecretBase', 'TypeSecureString', 'TypeAzureKeyVaultSecret'
	Type Type `json:"type,omitempty"`
}

func unmarshalBasicSecretBase(body []byte) (BasicSecretBase, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeSecureString):
		var ss SecureString
		err := json.Unmarshal(body, &ss)
		return ss, err
	case string(TypeAzureKeyVaultSecret):
		var akvsr AzureKeyVaultSecretReference
		err := json.Unmarshal(body, &akvsr)
		return akvsr, err
	default:
		var sb SecretBase
		err := json.Unmarshal(body, &sb)
		return sb, err
	}
}
func unmarshalBasicSecretBaseArray(body []byte) ([]BasicSecretBase, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	sbArray := make([]BasicSecretBase, len(rawMessages))

	for index, rawMessage := range rawMessages {
		sb, err := unmarshalBasicSecretBase(*rawMessage)
		if err != nil {
			return nil, err
		}
		sbArray[index] = sb
	}
	return sbArray, nil
}

// MarshalJSON is the custom marshaler for SecretBase.
func (sb SecretBase) MarshalJSON() ([]byte, error) {
	sb.Type = TypeSecretBase
	objectMap := make(map[string]interface{})
	if sb.Type != "" {
		objectMap["type"] = sb.Type
	}
	return json.Marshal(objectMap)
}

// AsSecureString is the BasicSecretBase implementation for SecretBase.
func (sb SecretBase) AsSecureString() (*SecureString, bool) {
	return nil, false
}

// AsAzureKeyVaultSecretReference is the BasicSecretBase implementation for SecretBase.
func (sb SecretBase) AsAzureKeyVaultSecretReference() (*AzureKeyVaultSecretReference, bool) {
	return nil, false
}

// AsSecretBase is the BasicSecretBase implementation for SecretBase.
func (sb SecretBase) AsSecretBase() (*SecretBase, bool) {
	return &sb, true
}

// AsBasicSecretBase is the BasicSecretBase implementation for SecretBase.
func (sb SecretBase) AsBasicSecretBase() (BasicSecretBase, bool) {
	return &sb, true
}

// SecureString azure Data Factory secure string definition. The string value will be masked with asterisks
// '*' during Get or List API calls.
type SecureString struct {
	// Value - Value of secure string.
	Value *string `json:"value,omitempty"`
	// Type - Possible values include: 'TypeSecretBase', 'TypeSecureString', 'TypeAzureKeyVaultSecret'
	Type Type `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SecureString.
func (ss SecureString) MarshalJSON() ([]byte, error) {
	ss.Type = TypeSecureString
	objectMap := make(map[string]interface{})
	if ss.Value != nil {
		objectMap["value"] = ss.Value
	}
	if ss.Type != "" {
		objectMap["type"] = ss.Type
	}
	return json.Marshal(objectMap)
}

// AsSecureString is the BasicSecretBase implementation for SecureString.
func (ss SecureString) AsSecureString() (*SecureString, bool) {
	return &ss, true
}

// AsAzureKeyVaultSecretReference is the BasicSecretBase implementation for SecureString.
func (ss SecureString) AsAzureKeyVaultSecretReference() (*AzureKeyVaultSecretReference, bool) {
	return nil, false
}

// AsSecretBase is the BasicSecretBase implementation for SecureString.
func (ss SecureString) AsSecretBase() (*SecretBase, bool) {
	return nil, false
}

// AsBasicSecretBase is the BasicSecretBase implementation for SecureString.
func (ss SecureString) AsBasicSecretBase() (BasicSecretBase, bool) {
	return &ss, true
}

// SelfHostedIntegrationRuntime self-hosted integration runtime.
type SelfHostedIntegrationRuntime struct {
	// LinkedIntegrationRuntimeTypeProperties - When this property is not null, means this is a linked integration runtime. The property is used to access original integration runtime.
	*LinkedIntegrationRuntimeTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Integration runtime description.
	Description *string `json:"description,omitempty"`
	// Type - Possible values include: 'TypeIntegrationRuntime', 'TypeSelfHosted', 'TypeManaged'
	Type TypeBasicIntegrationRuntime `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SelfHostedIntegrationRuntime.
func (shir SelfHostedIntegrationRuntime) MarshalJSON() ([]byte, error) {
	shir.Type = TypeSelfHosted
	objectMap := make(map[string]interface{})
	if shir.LinkedIntegrationRuntimeTypeProperties != nil {
		objectMap["typeProperties"] = shir.LinkedIntegrationRuntimeTypeProperties
	}
	if shir.Description != nil {
		objectMap["description"] = shir.Description
	}
	if shir.Type != "" {
		objectMap["type"] = shir.Type
	}
	for k, v := range shir.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSelfHostedIntegrationRuntime is the BasicIntegrationRuntime implementation for SelfHostedIntegrationRuntime.
func (shir SelfHostedIntegrationRuntime) AsSelfHostedIntegrationRuntime() (*SelfHostedIntegrationRuntime, bool) {
	return &shir, true
}

// AsManagedIntegrationRuntime is the BasicIntegrationRuntime implementation for SelfHostedIntegrationRuntime.
func (shir SelfHostedIntegrationRuntime) AsManagedIntegrationRuntime() (*ManagedIntegrationRuntime, bool) {
	return nil, false
}

// AsIntegrationRuntime is the BasicIntegrationRuntime implementation for SelfHostedIntegrationRuntime.
func (shir SelfHostedIntegrationRuntime) AsIntegrationRuntime() (*IntegrationRuntime, bool) {
	return nil, false
}

// AsBasicIntegrationRuntime is the BasicIntegrationRuntime implementation for SelfHostedIntegrationRuntime.
func (shir SelfHostedIntegrationRuntime) AsBasicIntegrationRuntime() (BasicIntegrationRuntime, bool) {
	return &shir, true
}

// UnmarshalJSON is the custom unmarshaler for SelfHostedIntegrationRuntime struct.
func (shir *SelfHostedIntegrationRuntime) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var linkedIntegrationRuntimeTypeProperties LinkedIntegrationRuntimeTypeProperties
				err = json.Unmarshal(*v, &linkedIntegrationRuntimeTypeProperties)
				if err != nil {
					return err
				}
				shir.LinkedIntegrationRuntimeTypeProperties = &linkedIntegrationRuntimeTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if shir.AdditionalProperties == nil {
					shir.AdditionalProperties = make(map[string]interface{})
				}
				shir.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				shir.Description = &description
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicIntegrationRuntime
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				shir.Type = typeVar
			}
		}
	}

	return nil
}

// SelfHostedIntegrationRuntimeNode properties of Self-hosted integration runtime node.
type SelfHostedIntegrationRuntimeNode struct {
	autorest.Response `json:"-"`
	// NodeName - READ-ONLY; Name of the integration runtime node.
	NodeName *string `json:"nodeName,omitempty"`
	// MachineName - READ-ONLY; Machine name of the integration runtime node.
	MachineName *string `json:"machineName,omitempty"`
	// HostServiceURI - READ-ONLY; URI for the host machine of the integration runtime.
	HostServiceURI *string `json:"hostServiceUri,omitempty"`
	// Status - READ-ONLY; Status of the integration runtime node. Possible values include: 'SelfHostedIntegrationRuntimeNodeStatusNeedRegistration', 'SelfHostedIntegrationRuntimeNodeStatusOnline', 'SelfHostedIntegrationRuntimeNodeStatusLimited', 'SelfHostedIntegrationRuntimeNodeStatusOffline', 'SelfHostedIntegrationRuntimeNodeStatusUpgrading', 'SelfHostedIntegrationRuntimeNodeStatusInitializing', 'SelfHostedIntegrationRuntimeNodeStatusInitializeFailed'
	Status SelfHostedIntegrationRuntimeNodeStatus `json:"status,omitempty"`
	// Capabilities - READ-ONLY; The integration runtime capabilities dictionary
	Capabilities map[string]*string `json:"capabilities"`
	// VersionStatus - READ-ONLY; Status of the integration runtime node version.
	VersionStatus *string `json:"versionStatus,omitempty"`
	// Version - READ-ONLY; Version of the integration runtime node.
	Version *string `json:"version,omitempty"`
	// RegisterTime - READ-ONLY; The time at which the integration runtime node was registered in ISO8601 format.
	RegisterTime *date.Time `json:"registerTime,omitempty"`
	// LastConnectTime - READ-ONLY; The most recent time at which the integration runtime was connected in ISO8601 format.
	LastConnectTime *date.Time `json:"lastConnectTime,omitempty"`
	// ExpiryTime - READ-ONLY; The time at which the integration runtime will expire in ISO8601 format.
	ExpiryTime *date.Time `json:"expiryTime,omitempty"`
	// LastStartTime - READ-ONLY; The time the node last started up.
	LastStartTime *date.Time `json:"lastStartTime,omitempty"`
	// LastStopTime - READ-ONLY; The integration runtime node last stop time.
	LastStopTime *date.Time `json:"lastStopTime,omitempty"`
	// LastUpdateResult - READ-ONLY; The result of the last integration runtime node update. Possible values include: 'Succeed', 'Fail'
	LastUpdateResult IntegrationRuntimeUpdateResult `json:"lastUpdateResult,omitempty"`
	// LastStartUpdateTime - READ-ONLY; The last time for the integration runtime node update start.
	LastStartUpdateTime *date.Time `json:"lastStartUpdateTime,omitempty"`
	// LastEndUpdateTime - READ-ONLY; The last time for the integration runtime node update end.
	LastEndUpdateTime *date.Time `json:"lastEndUpdateTime,omitempty"`
	// IsActiveDispatcher - READ-ONLY; Indicates whether this node is the active dispatcher for integration runtime requests.
	IsActiveDispatcher *bool `json:"isActiveDispatcher,omitempty"`
	// ConcurrentJobsLimit - READ-ONLY; Maximum concurrent jobs on the integration runtime node.
	ConcurrentJobsLimit *int32 `json:"concurrentJobsLimit,omitempty"`
	// MaxConcurrentJobs - READ-ONLY; The maximum concurrent jobs in this integration runtime.
	MaxConcurrentJobs *int32 `json:"maxConcurrentJobs,omitempty"`
}

// MarshalJSON is the custom marshaler for SelfHostedIntegrationRuntimeNode.
func (shirn SelfHostedIntegrationRuntimeNode) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	return json.Marshal(objectMap)
}

// SelfHostedIntegrationRuntimeStatus self-hosted integration runtime status.
type SelfHostedIntegrationRuntimeStatus struct {
	// SelfHostedIntegrationRuntimeStatusTypeProperties - Self-hosted integration runtime status type properties.
	*SelfHostedIntegrationRuntimeStatusTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// DataFactoryName - READ-ONLY; The data factory name which the integration runtime belong to.
	DataFactoryName *string `json:"dataFactoryName,omitempty"`
	// State - READ-ONLY; The state of integration runtime. Possible values include: 'Initial', 'Stopped', 'Started', 'Starting', 'Stopping', 'NeedRegistration', 'Online', 'Limited', 'Offline'
	State IntegrationRuntimeState `json:"state,omitempty"`
	// Type - Possible values include: 'TypeBasicIntegrationRuntimeStatusTypeIntegrationRuntimeStatus', 'TypeBasicIntegrationRuntimeStatusTypeSelfHosted', 'TypeBasicIntegrationRuntimeStatusTypeManaged'
	Type TypeBasicIntegrationRuntimeStatus `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SelfHostedIntegrationRuntimeStatus.
func (shirs SelfHostedIntegrationRuntimeStatus) MarshalJSON() ([]byte, error) {
	shirs.Type = TypeBasicIntegrationRuntimeStatusTypeSelfHosted
	objectMap := make(map[string]interface{})
	if shirs.SelfHostedIntegrationRuntimeStatusTypeProperties != nil {
		objectMap["typeProperties"] = shirs.SelfHostedIntegrationRuntimeStatusTypeProperties
	}
	if shirs.Type != "" {
		objectMap["type"] = shirs.Type
	}
	for k, v := range shirs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSelfHostedIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for SelfHostedIntegrationRuntimeStatus.
func (shirs SelfHostedIntegrationRuntimeStatus) AsSelfHostedIntegrationRuntimeStatus() (*SelfHostedIntegrationRuntimeStatus, bool) {
	return &shirs, true
}

// AsManagedIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for SelfHostedIntegrationRuntimeStatus.
func (shirs SelfHostedIntegrationRuntimeStatus) AsManagedIntegrationRuntimeStatus() (*ManagedIntegrationRuntimeStatus, bool) {
	return nil, false
}

// AsIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for SelfHostedIntegrationRuntimeStatus.
func (shirs SelfHostedIntegrationRuntimeStatus) AsIntegrationRuntimeStatus() (*IntegrationRuntimeStatus, bool) {
	return nil, false
}

// AsBasicIntegrationRuntimeStatus is the BasicIntegrationRuntimeStatus implementation for SelfHostedIntegrationRuntimeStatus.
func (shirs SelfHostedIntegrationRuntimeStatus) AsBasicIntegrationRuntimeStatus() (BasicIntegrationRuntimeStatus, bool) {
	return &shirs, true
}

// UnmarshalJSON is the custom unmarshaler for SelfHostedIntegrationRuntimeStatus struct.
func (shirs *SelfHostedIntegrationRuntimeStatus) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var selfHostedIntegrationRuntimeStatusTypeProperties SelfHostedIntegrationRuntimeStatusTypeProperties
				err = json.Unmarshal(*v, &selfHostedIntegrationRuntimeStatusTypeProperties)
				if err != nil {
					return err
				}
				shirs.SelfHostedIntegrationRuntimeStatusTypeProperties = &selfHostedIntegrationRuntimeStatusTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if shirs.AdditionalProperties == nil {
					shirs.AdditionalProperties = make(map[string]interface{})
				}
				shirs.AdditionalProperties[k] = additionalProperties
			}
		case "dataFactoryName":
			if v != nil {
				var dataFactoryName string
				err = json.Unmarshal(*v, &dataFactoryName)
				if err != nil {
					return err
				}
				shirs.DataFactoryName = &dataFactoryName
			}
		case "state":
			if v != nil {
				var state IntegrationRuntimeState
				err = json.Unmarshal(*v, &state)
				if err != nil {
					return err
				}
				shirs.State = state
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicIntegrationRuntimeStatus
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				shirs.Type = typeVar
			}
		}
	}

	return nil
}

// SelfHostedIntegrationRuntimeStatusTypeProperties self-hosted integration runtime status type properties.
type SelfHostedIntegrationRuntimeStatusTypeProperties struct {
	// CreateTime - READ-ONLY; The time at which the integration runtime was created, in ISO8601 format.
	CreateTime *date.Time `json:"createTime,omitempty"`
	// TaskQueueID - READ-ONLY; The task queue id of the integration runtime.
	TaskQueueID *string `json:"taskQueueId,omitempty"`
	// InternalChannelEncryption - READ-ONLY; It is used to set the encryption mode for node-node communication channel (when more than 2 self-hosted integration runtime nodes exist). Possible values include: 'NotSet', 'SslEncrypted', 'NotEncrypted'
	InternalChannelEncryption IntegrationRuntimeInternalChannelEncryptionMode `json:"internalChannelEncryption,omitempty"`
	// Version - READ-ONLY; Version of the integration runtime.
	Version *string `json:"version,omitempty"`
	// Nodes - The list of nodes for this integration runtime.
	Nodes *[]SelfHostedIntegrationRuntimeNode `json:"nodes,omitempty"`
	// ScheduledUpdateDate - READ-ONLY; The date at which the integration runtime will be scheduled to update, in ISO8601 format.
	ScheduledUpdateDate *date.Time `json:"scheduledUpdateDate,omitempty"`
	// UpdateDelayOffset - READ-ONLY; The time in the date scheduled by service to update the integration runtime, e.g., PT03H is 3 hours
	UpdateDelayOffset *string `json:"updateDelayOffset,omitempty"`
	// LocalTimeZoneOffset - READ-ONLY; The local time zone offset in hours.
	LocalTimeZoneOffset *string `json:"localTimeZoneOffset,omitempty"`
	// Capabilities - READ-ONLY; Object with additional information about integration runtime capabilities.
	Capabilities map[string]*string `json:"capabilities"`
	// ServiceUrls - READ-ONLY; The URLs for the services used in integration runtime backend service.
	ServiceUrls *[]string `json:"serviceUrls,omitempty"`
	// AutoUpdate - READ-ONLY; Whether Self-hosted integration runtime auto update has been turned on. Possible values include: 'On', 'Off'
	AutoUpdate IntegrationRuntimeAutoUpdate `json:"autoUpdate,omitempty"`
	// VersionStatus - READ-ONLY; Status of the integration runtime version.
	VersionStatus *string `json:"versionStatus,omitempty"`
	// Links - The list of linked integration runtimes that are created to share with this integration runtime.
	Links *[]LinkedIntegrationRuntime `json:"links,omitempty"`
}

// MarshalJSON is the custom marshaler for SelfHostedIntegrationRuntimeStatusTypeProperties.
func (shirstp SelfHostedIntegrationRuntimeStatusTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if shirstp.Nodes != nil {
		objectMap["nodes"] = shirstp.Nodes
	}
	if shirstp.Links != nil {
		objectMap["links"] = shirstp.Links
	}
	return json.Marshal(objectMap)
}

// ServiceNowLinkedService serviceNow server linked service.
type ServiceNowLinkedService struct {
	// ServiceNowLinkedServiceTypeProperties - ServiceNow server linked service properties.
	*ServiceNowLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) MarshalJSON() ([]byte, error) {
	snls.Type = TypeServiceNow
	objectMap := make(map[string]interface{})
	if snls.ServiceNowLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = snls.ServiceNowLinkedServiceTypeProperties
	}
	if snls.ConnectVia != nil {
		objectMap["connectVia"] = snls.ConnectVia
	}
	if snls.Description != nil {
		objectMap["description"] = snls.Description
	}
	if snls.Parameters != nil {
		objectMap["parameters"] = snls.Parameters
	}
	if snls.Annotations != nil {
		objectMap["annotations"] = snls.Annotations
	}
	if snls.Type != "" {
		objectMap["type"] = snls.Type
	}
	for k, v := range snls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return &snls, true
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for ServiceNowLinkedService.
func (snls ServiceNowLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &snls, true
}

// UnmarshalJSON is the custom unmarshaler for ServiceNowLinkedService struct.
func (snls *ServiceNowLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var serviceNowLinkedServiceTypeProperties ServiceNowLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &serviceNowLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				snls.ServiceNowLinkedServiceTypeProperties = &serviceNowLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if snls.AdditionalProperties == nil {
					snls.AdditionalProperties = make(map[string]interface{})
				}
				snls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				snls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				snls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				snls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				snls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				snls.Type = typeVar
			}
		}
	}

	return nil
}

// ServiceNowLinkedServiceTypeProperties serviceNow server linked service properties.
type ServiceNowLinkedServiceTypeProperties struct {
	// Endpoint - The endpoint of the ServiceNow server. (i.e. <instance>.service-now.com)
	Endpoint interface{} `json:"endpoint,omitempty"`
	// AuthenticationType - The authentication type to use. Possible values include: 'ServiceNowAuthenticationTypeBasic', 'ServiceNowAuthenticationTypeOAuth2'
	AuthenticationType ServiceNowAuthenticationType `json:"authenticationType,omitempty"`
	// Username - The user name used to connect to the ServiceNow server for Basic and OAuth2 authentication.
	Username interface{} `json:"username,omitempty"`
	// Password - The password corresponding to the user name for Basic and OAuth2 authentication.
	Password BasicSecretBase `json:"password,omitempty"`
	// ClientID - The client id for OAuth2 authentication.
	ClientID interface{} `json:"clientId,omitempty"`
	// ClientSecret - The client secret for OAuth2 authentication.
	ClientSecret BasicSecretBase `json:"clientSecret,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true.
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for ServiceNowLinkedServiceTypeProperties struct.
func (snlstp *ServiceNowLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "endpoint":
			if v != nil {
				var endpoint interface{}
				err = json.Unmarshal(*v, &endpoint)
				if err != nil {
					return err
				}
				snlstp.Endpoint = endpoint
			}
		case "authenticationType":
			if v != nil {
				var authenticationType ServiceNowAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				snlstp.AuthenticationType = authenticationType
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				snlstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				snlstp.Password = password
			}
		case "clientId":
			if v != nil {
				var clientID interface{}
				err = json.Unmarshal(*v, &clientID)
				if err != nil {
					return err
				}
				snlstp.ClientID = clientID
			}
		case "clientSecret":
			if v != nil {
				clientSecret, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				snlstp.ClientSecret = clientSecret
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				snlstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				snlstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				snlstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				snlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// ServiceNowObjectDataset serviceNow server dataset.
type ServiceNowObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) MarshalJSON() ([]byte, error) {
	snod.Type = TypeServiceNowObject
	objectMap := make(map[string]interface{})
	if snod.Description != nil {
		objectMap["description"] = snod.Description
	}
	if snod.Structure != nil {
		objectMap["structure"] = snod.Structure
	}
	if snod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = snod.LinkedServiceName
	}
	if snod.Parameters != nil {
		objectMap["parameters"] = snod.Parameters
	}
	if snod.Annotations != nil {
		objectMap["annotations"] = snod.Annotations
	}
	if snod.Type != "" {
		objectMap["type"] = snod.Type
	}
	for k, v := range snod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return &snod, true
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for ServiceNowObjectDataset.
func (snod ServiceNowObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &snod, true
}

// UnmarshalJSON is the custom unmarshaler for ServiceNowObjectDataset struct.
func (snod *ServiceNowObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if snod.AdditionalProperties == nil {
					snod.AdditionalProperties = make(map[string]interface{})
				}
				snod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				snod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				snod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				snod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				snod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				snod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				snod.Type = typeVar
			}
		}
	}

	return nil
}

// ServiceNowSource a copy activity ServiceNow server source.
type ServiceNowSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ServiceNowSource.
func (sns ServiceNowSource) MarshalJSON() ([]byte, error) {
	sns.Type = TypeServiceNowSource
	objectMap := make(map[string]interface{})
	if sns.Query != nil {
		objectMap["query"] = sns.Query
	}
	if sns.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = sns.SourceRetryCount
	}
	if sns.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = sns.SourceRetryWait
	}
	if sns.Type != "" {
		objectMap["type"] = sns.Type
	}
	for k, v := range sns.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return &sns, true
}

// AsQuickBooksSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for ServiceNowSource.
func (sns ServiceNowSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &sns, true
}

// UnmarshalJSON is the custom unmarshaler for ServiceNowSource struct.
func (sns *ServiceNowSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				sns.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sns.AdditionalProperties == nil {
					sns.AdditionalProperties = make(map[string]interface{})
				}
				sns.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				sns.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				sns.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sns.Type = typeVar
			}
		}
	}

	return nil
}

// SftpServerLinkedService a linked service for an SSH File Transfer Protocol (SFTP) server.
type SftpServerLinkedService struct {
	// SftpServerLinkedServiceTypeProperties - Properties specific to this linked service type.
	*SftpServerLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SftpServerLinkedService.
func (ssls SftpServerLinkedService) MarshalJSON() ([]byte, error) {
	ssls.Type = TypeSftp
	objectMap := make(map[string]interface{})
	if ssls.SftpServerLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = ssls.SftpServerLinkedServiceTypeProperties
	}
	if ssls.ConnectVia != nil {
		objectMap["connectVia"] = ssls.ConnectVia
	}
	if ssls.Description != nil {
		objectMap["description"] = ssls.Description
	}
	if ssls.Parameters != nil {
		objectMap["parameters"] = ssls.Parameters
	}
	if ssls.Annotations != nil {
		objectMap["annotations"] = ssls.Annotations
	}
	if ssls.Type != "" {
		objectMap["type"] = ssls.Type
	}
	for k, v := range ssls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return &ssls, true
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for SftpServerLinkedService.
func (ssls SftpServerLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &ssls, true
}

// UnmarshalJSON is the custom unmarshaler for SftpServerLinkedService struct.
func (ssls *SftpServerLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var sftpServerLinkedServiceTypeProperties SftpServerLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &sftpServerLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				ssls.SftpServerLinkedServiceTypeProperties = &sftpServerLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ssls.AdditionalProperties == nil {
					ssls.AdditionalProperties = make(map[string]interface{})
				}
				ssls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				ssls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ssls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				ssls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				ssls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ssls.Type = typeVar
			}
		}
	}

	return nil
}

// SftpServerLinkedServiceTypeProperties properties specific to this linked service type.
type SftpServerLinkedServiceTypeProperties struct {
	// Host - The SFTP server host name. Type: string (or Expression with resultType string).
	Host interface{} `json:"host,omitempty"`
	// Port - 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), minimum: 0.
	Port interface{} `json:"port,omitempty"`
	// AuthenticationType - The authentication type to be used to connect to the FTP server. Possible values include: 'SftpAuthenticationTypeBasic', 'SftpAuthenticationTypeSSHPublicKey'
	AuthenticationType SftpAuthenticationType `json:"authenticationType,omitempty"`
	// UserName - The username used to log on to the SFTP server. Type: string (or Expression with resultType string).
	UserName interface{} `json:"userName,omitempty"`
	// Password - Password to logon the SFTP server for Basic authentication.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
	// PrivateKeyPath - The SSH private key file path for SshPublicKey authentication. Only valid for on-premises copy. For on-premises copy with SshPublicKey authentication, either PrivateKeyPath or PrivateKeyContent should be specified. SSH private key should be OpenSSH format. Type: string (or Expression with resultType string).
	PrivateKeyPath interface{} `json:"privateKeyPath,omitempty"`
	// PrivateKeyContent - Base64 encoded SSH private key content for SshPublicKey authentication. For on-premises copy with SshPublicKey authentication, either PrivateKeyPath or PrivateKeyContent should be specified. SSH private key should be OpenSSH format.
	PrivateKeyContent BasicSecretBase `json:"privateKeyContent,omitempty"`
	// PassPhrase - The password to decrypt the SSH private key if the SSH private key is encrypted.
	PassPhrase BasicSecretBase `json:"passPhrase,omitempty"`
	// SkipHostKeyValidation - If true, skip the SSH host key validation. Default value is false. Type: boolean (or Expression with resultType boolean).
	SkipHostKeyValidation interface{} `json:"skipHostKeyValidation,omitempty"`
	// HostKeyFingerprint - The host key finger-print of the SFTP server. When SkipHostKeyValidation is false, HostKeyFingerprint should be specified. Type: string (or Expression with resultType string).
	HostKeyFingerprint interface{} `json:"hostKeyFingerprint,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for SftpServerLinkedServiceTypeProperties struct.
func (sslstp *SftpServerLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				sslstp.Host = host
			}
		case "port":
			if v != nil {
				var port interface{}
				err = json.Unmarshal(*v, &port)
				if err != nil {
					return err
				}
				sslstp.Port = port
			}
		case "authenticationType":
			if v != nil {
				var authenticationType SftpAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				sslstp.AuthenticationType = authenticationType
			}
		case "userName":
			if v != nil {
				var userName interface{}
				err = json.Unmarshal(*v, &userName)
				if err != nil {
					return err
				}
				sslstp.UserName = userName
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				sslstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				sslstp.EncryptedCredential = encryptedCredential
			}
		case "privateKeyPath":
			if v != nil {
				var privateKeyPath interface{}
				err = json.Unmarshal(*v, &privateKeyPath)
				if err != nil {
					return err
				}
				sslstp.PrivateKeyPath = privateKeyPath
			}
		case "privateKeyContent":
			if v != nil {
				privateKeyContent, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				sslstp.PrivateKeyContent = privateKeyContent
			}
		case "passPhrase":
			if v != nil {
				passPhrase, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				sslstp.PassPhrase = passPhrase
			}
		case "skipHostKeyValidation":
			if v != nil {
				var skipHostKeyValidation interface{}
				err = json.Unmarshal(*v, &skipHostKeyValidation)
				if err != nil {
					return err
				}
				sslstp.SkipHostKeyValidation = skipHostKeyValidation
			}
		case "hostKeyFingerprint":
			if v != nil {
				var hostKeyFingerprint interface{}
				err = json.Unmarshal(*v, &hostKeyFingerprint)
				if err != nil {
					return err
				}
				sslstp.HostKeyFingerprint = hostKeyFingerprint
			}
		}
	}

	return nil
}

// ShopifyLinkedService shopify Service linked service.
type ShopifyLinkedService struct {
	// ShopifyLinkedServiceTypeProperties - Shopify Service linked service properties.
	*ShopifyLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ShopifyLinkedService.
func (sls ShopifyLinkedService) MarshalJSON() ([]byte, error) {
	sls.Type = TypeShopify
	objectMap := make(map[string]interface{})
	if sls.ShopifyLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = sls.ShopifyLinkedServiceTypeProperties
	}
	if sls.ConnectVia != nil {
		objectMap["connectVia"] = sls.ConnectVia
	}
	if sls.Description != nil {
		objectMap["description"] = sls.Description
	}
	if sls.Parameters != nil {
		objectMap["parameters"] = sls.Parameters
	}
	if sls.Annotations != nil {
		objectMap["annotations"] = sls.Annotations
	}
	if sls.Type != "" {
		objectMap["type"] = sls.Type
	}
	for k, v := range sls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return &sls, true
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for ShopifyLinkedService.
func (sls ShopifyLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &sls, true
}

// UnmarshalJSON is the custom unmarshaler for ShopifyLinkedService struct.
func (sls *ShopifyLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var shopifyLinkedServiceTypeProperties ShopifyLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &shopifyLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				sls.ShopifyLinkedServiceTypeProperties = &shopifyLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sls.AdditionalProperties == nil {
					sls.AdditionalProperties = make(map[string]interface{})
				}
				sls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				sls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				sls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				sls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				sls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sls.Type = typeVar
			}
		}
	}

	return nil
}

// ShopifyLinkedServiceTypeProperties shopify Service linked service properties.
type ShopifyLinkedServiceTypeProperties struct {
	// Host - The endpoint of the Shopify server. (i.e. mystore.myshopify.com)
	Host interface{} `json:"host,omitempty"`
	// AccessToken - The API access token that can be used to access Shopify’s data. The token won't expire if it is offline mode.
	AccessToken BasicSecretBase `json:"accessToken,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true.
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for ShopifyLinkedServiceTypeProperties struct.
func (slstp *ShopifyLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				slstp.Host = host
			}
		case "accessToken":
			if v != nil {
				accessToken, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				slstp.AccessToken = accessToken
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				slstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				slstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				slstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				slstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// ShopifyObjectDataset shopify Service dataset.
type ShopifyObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) MarshalJSON() ([]byte, error) {
	sod.Type = TypeShopifyObject
	objectMap := make(map[string]interface{})
	if sod.Description != nil {
		objectMap["description"] = sod.Description
	}
	if sod.Structure != nil {
		objectMap["structure"] = sod.Structure
	}
	if sod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = sod.LinkedServiceName
	}
	if sod.Parameters != nil {
		objectMap["parameters"] = sod.Parameters
	}
	if sod.Annotations != nil {
		objectMap["annotations"] = sod.Annotations
	}
	if sod.Type != "" {
		objectMap["type"] = sod.Type
	}
	for k, v := range sod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return &sod, true
}

// AsServiceNowObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for ShopifyObjectDataset.
func (sod ShopifyObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &sod, true
}

// UnmarshalJSON is the custom unmarshaler for ShopifyObjectDataset struct.
func (sod *ShopifyObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sod.AdditionalProperties == nil {
					sod.AdditionalProperties = make(map[string]interface{})
				}
				sod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				sod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				sod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				sod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				sod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				sod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sod.Type = typeVar
			}
		}
	}

	return nil
}

// ShopifySource a copy activity Shopify Service source.
type ShopifySource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ShopifySource.
func (ss ShopifySource) MarshalJSON() ([]byte, error) {
	ss.Type = TypeShopifySource
	objectMap := make(map[string]interface{})
	if ss.Query != nil {
		objectMap["query"] = ss.Query
	}
	if ss.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ss.SourceRetryCount
	}
	if ss.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ss.SourceRetryWait
	}
	if ss.Type != "" {
		objectMap["type"] = ss.Type
	}
	for k, v := range ss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsShopifySource() (*ShopifySource, bool) {
	return &ss, true
}

// AsServiceNowSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for ShopifySource.
func (ss ShopifySource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ss, true
}

// UnmarshalJSON is the custom unmarshaler for ShopifySource struct.
func (ss *ShopifySource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ss.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ss.AdditionalProperties == nil {
					ss.AdditionalProperties = make(map[string]interface{})
				}
				ss.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ss.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ss.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ss.Type = typeVar
			}
		}
	}

	return nil
}

// SparkLinkedService spark Server linked service.
type SparkLinkedService struct {
	// SparkLinkedServiceTypeProperties - Spark Server linked service properties.
	*SparkLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SparkLinkedService.
func (sls SparkLinkedService) MarshalJSON() ([]byte, error) {
	sls.Type = TypeSpark
	objectMap := make(map[string]interface{})
	if sls.SparkLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = sls.SparkLinkedServiceTypeProperties
	}
	if sls.ConnectVia != nil {
		objectMap["connectVia"] = sls.ConnectVia
	}
	if sls.Description != nil {
		objectMap["description"] = sls.Description
	}
	if sls.Parameters != nil {
		objectMap["parameters"] = sls.Parameters
	}
	if sls.Annotations != nil {
		objectMap["annotations"] = sls.Annotations
	}
	if sls.Type != "" {
		objectMap["type"] = sls.Type
	}
	for k, v := range sls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return &sls, true
}

// AsShopifyLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for SparkLinkedService.
func (sls SparkLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &sls, true
}

// UnmarshalJSON is the custom unmarshaler for SparkLinkedService struct.
func (sls *SparkLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var sparkLinkedServiceTypeProperties SparkLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &sparkLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				sls.SparkLinkedServiceTypeProperties = &sparkLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sls.AdditionalProperties == nil {
					sls.AdditionalProperties = make(map[string]interface{})
				}
				sls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				sls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				sls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				sls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				sls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sls.Type = typeVar
			}
		}
	}

	return nil
}

// SparkLinkedServiceTypeProperties spark Server linked service properties.
type SparkLinkedServiceTypeProperties struct {
	// Host - IP address or host name of the Spark server
	Host interface{} `json:"host,omitempty"`
	// Port - The TCP port that the Spark server uses to listen for client connections.
	Port interface{} `json:"port,omitempty"`
	// ServerType - The type of Spark server. Possible values include: 'SharkServer', 'SharkServer2', 'SparkThriftServer'
	ServerType SparkServerType `json:"serverType,omitempty"`
	// ThriftTransportProtocol - The transport protocol to use in the Thrift layer. Possible values include: 'SparkThriftTransportProtocolBinary', 'SparkThriftTransportProtocolSASL', 'SparkThriftTransportProtocolHTTP'
	ThriftTransportProtocol SparkThriftTransportProtocol `json:"thriftTransportProtocol,omitempty"`
	// AuthenticationType - The authentication method used to access the Spark server. Possible values include: 'SparkAuthenticationTypeAnonymous', 'SparkAuthenticationTypeUsername', 'SparkAuthenticationTypeUsernameAndPassword', 'SparkAuthenticationTypeWindowsAzureHDInsightService'
	AuthenticationType SparkAuthenticationType `json:"authenticationType,omitempty"`
	// Username - The user name that you use to access Spark Server.
	Username interface{} `json:"username,omitempty"`
	// Password - The password corresponding to the user name that you provided in the Username field
	Password BasicSecretBase `json:"password,omitempty"`
	// HTTPPath - The partial URL corresponding to the Spark server.
	HTTPPath interface{} `json:"httpPath,omitempty"`
	// EnableSsl - Specifies whether the connections to the server are encrypted using SSL. The default value is false.
	EnableSsl interface{} `json:"enableSsl,omitempty"`
	// TrustedCertPath - 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 using SSL on self-hosted IR. The default value is the cacerts.pem file installed with the IR.
	TrustedCertPath interface{} `json:"trustedCertPath,omitempty"`
	// UseSystemTrustStore - Specifies whether to use a CA certificate from the system trust store or from a specified PEM file. The default value is false.
	UseSystemTrustStore interface{} `json:"useSystemTrustStore,omitempty"`
	// AllowHostNameCNMismatch - 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.
	AllowHostNameCNMismatch interface{} `json:"allowHostNameCNMismatch,omitempty"`
	// AllowSelfSignedServerCert - Specifies whether to allow self-signed certificates from the server. The default value is false.
	AllowSelfSignedServerCert interface{} `json:"allowSelfSignedServerCert,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for SparkLinkedServiceTypeProperties struct.
func (slstp *SparkLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				slstp.Host = host
			}
		case "port":
			if v != nil {
				var port interface{}
				err = json.Unmarshal(*v, &port)
				if err != nil {
					return err
				}
				slstp.Port = port
			}
		case "serverType":
			if v != nil {
				var serverType SparkServerType
				err = json.Unmarshal(*v, &serverType)
				if err != nil {
					return err
				}
				slstp.ServerType = serverType
			}
		case "thriftTransportProtocol":
			if v != nil {
				var thriftTransportProtocol SparkThriftTransportProtocol
				err = json.Unmarshal(*v, &thriftTransportProtocol)
				if err != nil {
					return err
				}
				slstp.ThriftTransportProtocol = thriftTransportProtocol
			}
		case "authenticationType":
			if v != nil {
				var authenticationType SparkAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				slstp.AuthenticationType = authenticationType
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				slstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				slstp.Password = password
			}
		case "httpPath":
			if v != nil {
				var HTTPPath interface{}
				err = json.Unmarshal(*v, &HTTPPath)
				if err != nil {
					return err
				}
				slstp.HTTPPath = HTTPPath
			}
		case "enableSsl":
			if v != nil {
				var enableSsl interface{}
				err = json.Unmarshal(*v, &enableSsl)
				if err != nil {
					return err
				}
				slstp.EnableSsl = enableSsl
			}
		case "trustedCertPath":
			if v != nil {
				var trustedCertPath interface{}
				err = json.Unmarshal(*v, &trustedCertPath)
				if err != nil {
					return err
				}
				slstp.TrustedCertPath = trustedCertPath
			}
		case "useSystemTrustStore":
			if v != nil {
				var useSystemTrustStore interface{}
				err = json.Unmarshal(*v, &useSystemTrustStore)
				if err != nil {
					return err
				}
				slstp.UseSystemTrustStore = useSystemTrustStore
			}
		case "allowHostNameCNMismatch":
			if v != nil {
				var allowHostNameCNMismatch interface{}
				err = json.Unmarshal(*v, &allowHostNameCNMismatch)
				if err != nil {
					return err
				}
				slstp.AllowHostNameCNMismatch = allowHostNameCNMismatch
			}
		case "allowSelfSignedServerCert":
			if v != nil {
				var allowSelfSignedServerCert interface{}
				err = json.Unmarshal(*v, &allowSelfSignedServerCert)
				if err != nil {
					return err
				}
				slstp.AllowSelfSignedServerCert = allowSelfSignedServerCert
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				slstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// SparkObjectDataset spark Server dataset.
type SparkObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SparkObjectDataset.
func (sod SparkObjectDataset) MarshalJSON() ([]byte, error) {
	sod.Type = TypeSparkObject
	objectMap := make(map[string]interface{})
	if sod.Description != nil {
		objectMap["description"] = sod.Description
	}
	if sod.Structure != nil {
		objectMap["structure"] = sod.Structure
	}
	if sod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = sod.LinkedServiceName
	}
	if sod.Parameters != nil {
		objectMap["parameters"] = sod.Parameters
	}
	if sod.Annotations != nil {
		objectMap["annotations"] = sod.Annotations
	}
	if sod.Type != "" {
		objectMap["type"] = sod.Type
	}
	for k, v := range sod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return &sod, true
}

// AsShopifyObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for SparkObjectDataset.
func (sod SparkObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &sod, true
}

// UnmarshalJSON is the custom unmarshaler for SparkObjectDataset struct.
func (sod *SparkObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sod.AdditionalProperties == nil {
					sod.AdditionalProperties = make(map[string]interface{})
				}
				sod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				sod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				sod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				sod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				sod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				sod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sod.Type = typeVar
			}
		}
	}

	return nil
}

// SparkSource a copy activity Spark Server source.
type SparkSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SparkSource.
func (ss SparkSource) MarshalJSON() ([]byte, error) {
	ss.Type = TypeSparkSource
	objectMap := make(map[string]interface{})
	if ss.Query != nil {
		objectMap["query"] = ss.Query
	}
	if ss.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ss.SourceRetryCount
	}
	if ss.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ss.SourceRetryWait
	}
	if ss.Type != "" {
		objectMap["type"] = ss.Type
	}
	for k, v := range ss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsSparkSource() (*SparkSource, bool) {
	return &ss, true
}

// AsShopifySource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for SparkSource.
func (ss SparkSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ss, true
}

// UnmarshalJSON is the custom unmarshaler for SparkSource struct.
func (ss *SparkSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ss.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ss.AdditionalProperties == nil {
					ss.AdditionalProperties = make(map[string]interface{})
				}
				ss.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ss.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ss.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ss.Type = typeVar
			}
		}
	}

	return nil
}

// SQLDWSink a copy activity SQL Data Warehouse sink.
type SQLDWSink struct {
	// PreCopyScript - SQL pre-copy script. Type: string (or Expression with resultType string).
	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
	// AllowPolyBase - Indicates to use PolyBase to copy data into SQL Data Warehouse when applicable. Type: boolean (or Expression with resultType boolean).
	AllowPolyBase interface{} `json:"allowPolyBase,omitempty"`
	// PolyBaseSettings - Specifies PolyBase-related settings when allowPolyBase is true.
	PolyBaseSettings *PolybaseSettings `json:"polyBaseSettings,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SQLDWSink.
func (sds SQLDWSink) MarshalJSON() ([]byte, error) {
	sds.Type = TypeSQLDWSink
	objectMap := make(map[string]interface{})
	if sds.PreCopyScript != nil {
		objectMap["preCopyScript"] = sds.PreCopyScript
	}
	if sds.AllowPolyBase != nil {
		objectMap["allowPolyBase"] = sds.AllowPolyBase
	}
	if sds.PolyBaseSettings != nil {
		objectMap["polyBaseSettings"] = sds.PolyBaseSettings
	}
	if sds.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = sds.WriteBatchSize
	}
	if sds.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = sds.WriteBatchTimeout
	}
	if sds.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = sds.SinkRetryCount
	}
	if sds.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = sds.SinkRetryWait
	}
	if sds.Type != "" {
		objectMap["type"] = sds.Type
	}
	for k, v := range sds.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return &sds, true
}

// AsSQLSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsSQLSink() (*SQLSink, bool) {
	return nil, false
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for SQLDWSink.
func (sds SQLDWSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &sds, true
}

// UnmarshalJSON is the custom unmarshaler for SQLDWSink struct.
func (sds *SQLDWSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "preCopyScript":
			if v != nil {
				var preCopyScript interface{}
				err = json.Unmarshal(*v, &preCopyScript)
				if err != nil {
					return err
				}
				sds.PreCopyScript = preCopyScript
			}
		case "allowPolyBase":
			if v != nil {
				var allowPolyBase interface{}
				err = json.Unmarshal(*v, &allowPolyBase)
				if err != nil {
					return err
				}
				sds.AllowPolyBase = allowPolyBase
			}
		case "polyBaseSettings":
			if v != nil {
				var polyBaseSettings PolybaseSettings
				err = json.Unmarshal(*v, &polyBaseSettings)
				if err != nil {
					return err
				}
				sds.PolyBaseSettings = &polyBaseSettings
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sds.AdditionalProperties == nil {
					sds.AdditionalProperties = make(map[string]interface{})
				}
				sds.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				sds.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				sds.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				sds.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				sds.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sds.Type = typeVar
			}
		}
	}

	return nil
}

// SQLDWSource a copy activity SQL Data Warehouse source.
type SQLDWSource struct {
	// SQLReaderQuery - SQL Data Warehouse reader query. Type: string (or Expression with resultType string).
	SQLReaderQuery interface{} `json:"sqlReaderQuery,omitempty"`
	// SQLReaderStoredProcedureName - 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 resultType string).
	SQLReaderStoredProcedureName interface{} `json:"sqlReaderStoredProcedureName,omitempty"`
	// StoredProcedureParameters - Value and type setting for stored procedure parameters. Example: "{Parameter1: {value: "1", type: "int"}}". Type: object (or Expression with resultType object), itemType: StoredProcedureParameter.
	StoredProcedureParameters interface{} `json:"storedProcedureParameters,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SQLDWSource.
func (sds SQLDWSource) MarshalJSON() ([]byte, error) {
	sds.Type = TypeSQLDWSource
	objectMap := make(map[string]interface{})
	if sds.SQLReaderQuery != nil {
		objectMap["sqlReaderQuery"] = sds.SQLReaderQuery
	}
	if sds.SQLReaderStoredProcedureName != nil {
		objectMap["sqlReaderStoredProcedureName"] = sds.SQLReaderStoredProcedureName
	}
	if sds.StoredProcedureParameters != nil {
		objectMap["storedProcedureParameters"] = sds.StoredProcedureParameters
	}
	if sds.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = sds.SourceRetryCount
	}
	if sds.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = sds.SourceRetryWait
	}
	if sds.Type != "" {
		objectMap["type"] = sds.Type
	}
	for k, v := range sds.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return &sds, true
}

// AsSQLSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for SQLDWSource.
func (sds SQLDWSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &sds, true
}

// UnmarshalJSON is the custom unmarshaler for SQLDWSource struct.
func (sds *SQLDWSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "sqlReaderQuery":
			if v != nil {
				var SQLReaderQuery interface{}
				err = json.Unmarshal(*v, &SQLReaderQuery)
				if err != nil {
					return err
				}
				sds.SQLReaderQuery = SQLReaderQuery
			}
		case "sqlReaderStoredProcedureName":
			if v != nil {
				var SQLReaderStoredProcedureName interface{}
				err = json.Unmarshal(*v, &SQLReaderStoredProcedureName)
				if err != nil {
					return err
				}
				sds.SQLReaderStoredProcedureName = SQLReaderStoredProcedureName
			}
		case "storedProcedureParameters":
			if v != nil {
				var storedProcedureParameters interface{}
				err = json.Unmarshal(*v, &storedProcedureParameters)
				if err != nil {
					return err
				}
				sds.StoredProcedureParameters = storedProcedureParameters
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sds.AdditionalProperties == nil {
					sds.AdditionalProperties = make(map[string]interface{})
				}
				sds.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				sds.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				sds.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sds.Type = typeVar
			}
		}
	}

	return nil
}

// SQLServerLinkedService SQL Server linked service.
type SQLServerLinkedService struct {
	// SQLServerLinkedServiceTypeProperties - SQL Server linked service properties.
	*SQLServerLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SQLServerLinkedService.
func (ssls SQLServerLinkedService) MarshalJSON() ([]byte, error) {
	ssls.Type = TypeSQLServer
	objectMap := make(map[string]interface{})
	if ssls.SQLServerLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = ssls.SQLServerLinkedServiceTypeProperties
	}
	if ssls.ConnectVia != nil {
		objectMap["connectVia"] = ssls.ConnectVia
	}
	if ssls.Description != nil {
		objectMap["description"] = ssls.Description
	}
	if ssls.Parameters != nil {
		objectMap["parameters"] = ssls.Parameters
	}
	if ssls.Annotations != nil {
		objectMap["annotations"] = ssls.Annotations
	}
	if ssls.Type != "" {
		objectMap["type"] = ssls.Type
	}
	for k, v := range ssls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return &ssls, true
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for SQLServerLinkedService.
func (ssls SQLServerLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &ssls, true
}

// UnmarshalJSON is the custom unmarshaler for SQLServerLinkedService struct.
func (ssls *SQLServerLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var SQLServerLinkedServiceTypeProperties SQLServerLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &SQLServerLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				ssls.SQLServerLinkedServiceTypeProperties = &SQLServerLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ssls.AdditionalProperties == nil {
					ssls.AdditionalProperties = make(map[string]interface{})
				}
				ssls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				ssls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ssls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				ssls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				ssls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ssls.Type = typeVar
			}
		}
	}

	return nil
}

// SQLServerLinkedServiceTypeProperties SQL Server linked service properties.
type SQLServerLinkedServiceTypeProperties struct {
	// ConnectionString - The connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// UserName - The on-premises Windows authentication user name. Type: string (or Expression with resultType string).
	UserName interface{} `json:"userName,omitempty"`
	// Password - The on-premises Windows authentication password.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for SQLServerLinkedServiceTypeProperties struct.
func (sslstp *SQLServerLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "connectionString":
			if v != nil {
				var connectionString interface{}
				err = json.Unmarshal(*v, &connectionString)
				if err != nil {
					return err
				}
				sslstp.ConnectionString = connectionString
			}
		case "userName":
			if v != nil {
				var userName interface{}
				err = json.Unmarshal(*v, &userName)
				if err != nil {
					return err
				}
				sslstp.UserName = userName
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				sslstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				sslstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// SQLServerStoredProcedureActivity SQL stored procedure activity type.
type SQLServerStoredProcedureActivity struct {
	// SQLServerStoredProcedureActivityTypeProperties - SQL stored procedure activity properties.
	*SQLServerStoredProcedureActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) MarshalJSON() ([]byte, error) {
	ssspa.Type = TypeSQLServerStoredProcedure
	objectMap := make(map[string]interface{})
	if ssspa.SQLServerStoredProcedureActivityTypeProperties != nil {
		objectMap["typeProperties"] = ssspa.SQLServerStoredProcedureActivityTypeProperties
	}
	if ssspa.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = ssspa.LinkedServiceName
	}
	if ssspa.Policy != nil {
		objectMap["policy"] = ssspa.Policy
	}
	if ssspa.Name != nil {
		objectMap["name"] = ssspa.Name
	}
	if ssspa.Description != nil {
		objectMap["description"] = ssspa.Description
	}
	if ssspa.DependsOn != nil {
		objectMap["dependsOn"] = ssspa.DependsOn
	}
	if ssspa.Type != "" {
		objectMap["type"] = ssspa.Type
	}
	for k, v := range ssspa.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return &ssspa, true
}

// AsCustomActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &ssspa, true
}

// AsFilterActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for SQLServerStoredProcedureActivity.
func (ssspa SQLServerStoredProcedureActivity) AsBasicActivity() (BasicActivity, bool) {
	return &ssspa, true
}

// UnmarshalJSON is the custom unmarshaler for SQLServerStoredProcedureActivity struct.
func (ssspa *SQLServerStoredProcedureActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var SQLServerStoredProcedureActivityTypeProperties SQLServerStoredProcedureActivityTypeProperties
				err = json.Unmarshal(*v, &SQLServerStoredProcedureActivityTypeProperties)
				if err != nil {
					return err
				}
				ssspa.SQLServerStoredProcedureActivityTypeProperties = &SQLServerStoredProcedureActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				ssspa.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				ssspa.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ssspa.AdditionalProperties == nil {
					ssspa.AdditionalProperties = make(map[string]interface{})
				}
				ssspa.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				ssspa.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ssspa.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				ssspa.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ssspa.Type = typeVar
			}
		}
	}

	return nil
}

// SQLServerStoredProcedureActivityTypeProperties SQL stored procedure activity properties.
type SQLServerStoredProcedureActivityTypeProperties struct {
	// StoredProcedureName - Stored procedure name. Type: string (or Expression with resultType string).
	StoredProcedureName interface{} `json:"storedProcedureName,omitempty"`
	// StoredProcedureParameters - Value and type setting for stored procedure parameters. Example: "{Parameter1: {value: "1", type: "int"}}".
	StoredProcedureParameters map[string]*StoredProcedureParameter `json:"storedProcedureParameters"`
}

// MarshalJSON is the custom marshaler for SQLServerStoredProcedureActivityTypeProperties.
func (ssspatp SQLServerStoredProcedureActivityTypeProperties) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if ssspatp.StoredProcedureName != nil {
		objectMap["storedProcedureName"] = ssspatp.StoredProcedureName
	}
	if ssspatp.StoredProcedureParameters != nil {
		objectMap["storedProcedureParameters"] = ssspatp.StoredProcedureParameters
	}
	return json.Marshal(objectMap)
}

// SQLServerTableDataset the on-premises SQL Server dataset.
type SQLServerTableDataset struct {
	// SQLServerTableDatasetTypeProperties - On-premises SQL Server dataset properties.
	*SQLServerTableDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SQLServerTableDataset.
func (sstd SQLServerTableDataset) MarshalJSON() ([]byte, error) {
	sstd.Type = TypeSQLServerTable
	objectMap := make(map[string]interface{})
	if sstd.SQLServerTableDatasetTypeProperties != nil {
		objectMap["typeProperties"] = sstd.SQLServerTableDatasetTypeProperties
	}
	if sstd.Description != nil {
		objectMap["description"] = sstd.Description
	}
	if sstd.Structure != nil {
		objectMap["structure"] = sstd.Structure
	}
	if sstd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = sstd.LinkedServiceName
	}
	if sstd.Parameters != nil {
		objectMap["parameters"] = sstd.Parameters
	}
	if sstd.Annotations != nil {
		objectMap["annotations"] = sstd.Annotations
	}
	if sstd.Type != "" {
		objectMap["type"] = sstd.Type
	}
	for k, v := range sstd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return &sstd, true
}

// AsSapEccResourceDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for SQLServerTableDataset.
func (sstd SQLServerTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &sstd, true
}

// UnmarshalJSON is the custom unmarshaler for SQLServerTableDataset struct.
func (sstd *SQLServerTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var SQLServerTableDatasetTypeProperties SQLServerTableDatasetTypeProperties
				err = json.Unmarshal(*v, &SQLServerTableDatasetTypeProperties)
				if err != nil {
					return err
				}
				sstd.SQLServerTableDatasetTypeProperties = &SQLServerTableDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sstd.AdditionalProperties == nil {
					sstd.AdditionalProperties = make(map[string]interface{})
				}
				sstd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				sstd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				sstd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				sstd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				sstd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				sstd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sstd.Type = typeVar
			}
		}
	}

	return nil
}

// SQLServerTableDatasetTypeProperties on-premises SQL Server dataset properties.
type SQLServerTableDatasetTypeProperties struct {
	// TableName - The table name of the SQL Server dataset. Type: string (or Expression with resultType string).
	TableName interface{} `json:"tableName,omitempty"`
}

// SQLSink a copy activity SQL sink.
type SQLSink struct {
	// SQLWriterStoredProcedureName - SQL writer stored procedure name. Type: string (or Expression with resultType string).
	SQLWriterStoredProcedureName interface{} `json:"sqlWriterStoredProcedureName,omitempty"`
	// SQLWriterTableType - SQL writer table type. Type: string (or Expression with resultType string).
	SQLWriterTableType interface{} `json:"sqlWriterTableType,omitempty"`
	// PreCopyScript - SQL pre-copy script. Type: string (or Expression with resultType string).
	PreCopyScript interface{} `json:"preCopyScript,omitempty"`
	// StoredProcedureParameters - SQL stored procedure parameters.
	StoredProcedureParameters map[string]*StoredProcedureParameter `json:"storedProcedureParameters"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// WriteBatchSize - Write batch size. Type: integer (or Expression with resultType integer), minimum: 0.
	WriteBatchSize interface{} `json:"writeBatchSize,omitempty"`
	// WriteBatchTimeout - Write batch timeout. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	WriteBatchTimeout interface{} `json:"writeBatchTimeout,omitempty"`
	// SinkRetryCount - Sink retry count. Type: integer (or Expression with resultType integer).
	SinkRetryCount interface{} `json:"sinkRetryCount,omitempty"`
	// SinkRetryWait - Sink retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SinkRetryWait interface{} `json:"sinkRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySink', 'TypeSalesforceSink', 'TypeDynamicsSink', 'TypeOdbcSink', 'TypeAzureSearchIndexSink', 'TypeAzureDataLakeStoreSink', 'TypeOracleSink', 'TypeSQLDWSink', 'TypeSQLSink', 'TypeDocumentDbCollectionSink', 'TypeFileSystemSink', 'TypeBlobSink', 'TypeAzureTableSink', 'TypeAzureQueueSink', 'TypeSapCloudForCustomerSink'
	Type TypeBasicCopySink `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SQLSink.
func (ss SQLSink) MarshalJSON() ([]byte, error) {
	ss.Type = TypeSQLSink
	objectMap := make(map[string]interface{})
	if ss.SQLWriterStoredProcedureName != nil {
		objectMap["sqlWriterStoredProcedureName"] = ss.SQLWriterStoredProcedureName
	}
	if ss.SQLWriterTableType != nil {
		objectMap["sqlWriterTableType"] = ss.SQLWriterTableType
	}
	if ss.PreCopyScript != nil {
		objectMap["preCopyScript"] = ss.PreCopyScript
	}
	if ss.StoredProcedureParameters != nil {
		objectMap["storedProcedureParameters"] = ss.StoredProcedureParameters
	}
	if ss.WriteBatchSize != nil {
		objectMap["writeBatchSize"] = ss.WriteBatchSize
	}
	if ss.WriteBatchTimeout != nil {
		objectMap["writeBatchTimeout"] = ss.WriteBatchTimeout
	}
	if ss.SinkRetryCount != nil {
		objectMap["sinkRetryCount"] = ss.SinkRetryCount
	}
	if ss.SinkRetryWait != nil {
		objectMap["sinkRetryWait"] = ss.SinkRetryWait
	}
	if ss.Type != "" {
		objectMap["type"] = ss.Type
	}
	for k, v := range ss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsSalesforceSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsSalesforceSink() (*SalesforceSink, bool) {
	return nil, false
}

// AsDynamicsSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsDynamicsSink() (*DynamicsSink, bool) {
	return nil, false
}

// AsOdbcSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsOdbcSink() (*OdbcSink, bool) {
	return nil, false
}

// AsAzureSearchIndexSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsAzureSearchIndexSink() (*AzureSearchIndexSink, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsAzureDataLakeStoreSink() (*AzureDataLakeStoreSink, bool) {
	return nil, false
}

// AsOracleSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsOracleSink() (*OracleSink, bool) {
	return nil, false
}

// AsSQLDWSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsSQLDWSink() (*SQLDWSink, bool) {
	return nil, false
}

// AsSQLSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsSQLSink() (*SQLSink, bool) {
	return &ss, true
}

// AsDocumentDbCollectionSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsDocumentDbCollectionSink() (*DocumentDbCollectionSink, bool) {
	return nil, false
}

// AsFileSystemSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsFileSystemSink() (*FileSystemSink, bool) {
	return nil, false
}

// AsBlobSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsBlobSink() (*BlobSink, bool) {
	return nil, false
}

// AsAzureTableSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsAzureTableSink() (*AzureTableSink, bool) {
	return nil, false
}

// AsAzureQueueSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsAzureQueueSink() (*AzureQueueSink, bool) {
	return nil, false
}

// AsSapCloudForCustomerSink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsSapCloudForCustomerSink() (*SapCloudForCustomerSink, bool) {
	return nil, false
}

// AsCopySink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsCopySink() (*CopySink, bool) {
	return nil, false
}

// AsBasicCopySink is the BasicCopySink implementation for SQLSink.
func (ss SQLSink) AsBasicCopySink() (BasicCopySink, bool) {
	return &ss, true
}

// UnmarshalJSON is the custom unmarshaler for SQLSink struct.
func (ss *SQLSink) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "sqlWriterStoredProcedureName":
			if v != nil {
				var SQLWriterStoredProcedureName interface{}
				err = json.Unmarshal(*v, &SQLWriterStoredProcedureName)
				if err != nil {
					return err
				}
				ss.SQLWriterStoredProcedureName = SQLWriterStoredProcedureName
			}
		case "sqlWriterTableType":
			if v != nil {
				var SQLWriterTableType interface{}
				err = json.Unmarshal(*v, &SQLWriterTableType)
				if err != nil {
					return err
				}
				ss.SQLWriterTableType = SQLWriterTableType
			}
		case "preCopyScript":
			if v != nil {
				var preCopyScript interface{}
				err = json.Unmarshal(*v, &preCopyScript)
				if err != nil {
					return err
				}
				ss.PreCopyScript = preCopyScript
			}
		case "storedProcedureParameters":
			if v != nil {
				var storedProcedureParameters map[string]*StoredProcedureParameter
				err = json.Unmarshal(*v, &storedProcedureParameters)
				if err != nil {
					return err
				}
				ss.StoredProcedureParameters = storedProcedureParameters
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ss.AdditionalProperties == nil {
					ss.AdditionalProperties = make(map[string]interface{})
				}
				ss.AdditionalProperties[k] = additionalProperties
			}
		case "writeBatchSize":
			if v != nil {
				var writeBatchSize interface{}
				err = json.Unmarshal(*v, &writeBatchSize)
				if err != nil {
					return err
				}
				ss.WriteBatchSize = writeBatchSize
			}
		case "writeBatchTimeout":
			if v != nil {
				var writeBatchTimeout interface{}
				err = json.Unmarshal(*v, &writeBatchTimeout)
				if err != nil {
					return err
				}
				ss.WriteBatchTimeout = writeBatchTimeout
			}
		case "sinkRetryCount":
			if v != nil {
				var sinkRetryCount interface{}
				err = json.Unmarshal(*v, &sinkRetryCount)
				if err != nil {
					return err
				}
				ss.SinkRetryCount = sinkRetryCount
			}
		case "sinkRetryWait":
			if v != nil {
				var sinkRetryWait interface{}
				err = json.Unmarshal(*v, &sinkRetryWait)
				if err != nil {
					return err
				}
				ss.SinkRetryWait = sinkRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySink
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ss.Type = typeVar
			}
		}
	}

	return nil
}

// SQLSource a copy activity SQL source.
type SQLSource struct {
	// SQLReaderQuery - SQL reader query. Type: string (or Expression with resultType string).
	SQLReaderQuery interface{} `json:"sqlReaderQuery,omitempty"`
	// SQLReaderStoredProcedureName - 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 string).
	SQLReaderStoredProcedureName interface{} `json:"sqlReaderStoredProcedureName,omitempty"`
	// StoredProcedureParameters - Value and type setting for stored procedure parameters. Example: "{Parameter1: {value: "1", type: "int"}}".
	StoredProcedureParameters map[string]*StoredProcedureParameter `json:"storedProcedureParameters"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SQLSource.
func (ss SQLSource) MarshalJSON() ([]byte, error) {
	ss.Type = TypeSQLSource
	objectMap := make(map[string]interface{})
	if ss.SQLReaderQuery != nil {
		objectMap["sqlReaderQuery"] = ss.SQLReaderQuery
	}
	if ss.SQLReaderStoredProcedureName != nil {
		objectMap["sqlReaderStoredProcedureName"] = ss.SQLReaderStoredProcedureName
	}
	if ss.StoredProcedureParameters != nil {
		objectMap["storedProcedureParameters"] = ss.StoredProcedureParameters
	}
	if ss.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ss.SourceRetryCount
	}
	if ss.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ss.SourceRetryWait
	}
	if ss.Type != "" {
		objectMap["type"] = ss.Type
	}
	for k, v := range ss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsSQLSource() (*SQLSource, bool) {
	return &ss, true
}

// AsSapEccSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for SQLSource.
func (ss SQLSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ss, true
}

// UnmarshalJSON is the custom unmarshaler for SQLSource struct.
func (ss *SQLSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "sqlReaderQuery":
			if v != nil {
				var SQLReaderQuery interface{}
				err = json.Unmarshal(*v, &SQLReaderQuery)
				if err != nil {
					return err
				}
				ss.SQLReaderQuery = SQLReaderQuery
			}
		case "sqlReaderStoredProcedureName":
			if v != nil {
				var SQLReaderStoredProcedureName interface{}
				err = json.Unmarshal(*v, &SQLReaderStoredProcedureName)
				if err != nil {
					return err
				}
				ss.SQLReaderStoredProcedureName = SQLReaderStoredProcedureName
			}
		case "storedProcedureParameters":
			if v != nil {
				var storedProcedureParameters map[string]*StoredProcedureParameter
				err = json.Unmarshal(*v, &storedProcedureParameters)
				if err != nil {
					return err
				}
				ss.StoredProcedureParameters = storedProcedureParameters
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ss.AdditionalProperties == nil {
					ss.AdditionalProperties = make(map[string]interface{})
				}
				ss.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ss.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ss.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ss.Type = typeVar
			}
		}
	}

	return nil
}

// SquareLinkedService square Service linked service.
type SquareLinkedService struct {
	// SquareLinkedServiceTypeProperties - Square Service linked service properties.
	*SquareLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SquareLinkedService.
func (sls SquareLinkedService) MarshalJSON() ([]byte, error) {
	sls.Type = TypeSquare
	objectMap := make(map[string]interface{})
	if sls.SquareLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = sls.SquareLinkedServiceTypeProperties
	}
	if sls.ConnectVia != nil {
		objectMap["connectVia"] = sls.ConnectVia
	}
	if sls.Description != nil {
		objectMap["description"] = sls.Description
	}
	if sls.Parameters != nil {
		objectMap["parameters"] = sls.Parameters
	}
	if sls.Annotations != nil {
		objectMap["annotations"] = sls.Annotations
	}
	if sls.Type != "" {
		objectMap["type"] = sls.Type
	}
	for k, v := range sls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return &sls, true
}

// AsSparkLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for SquareLinkedService.
func (sls SquareLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &sls, true
}

// UnmarshalJSON is the custom unmarshaler for SquareLinkedService struct.
func (sls *SquareLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var squareLinkedServiceTypeProperties SquareLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &squareLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				sls.SquareLinkedServiceTypeProperties = &squareLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sls.AdditionalProperties == nil {
					sls.AdditionalProperties = make(map[string]interface{})
				}
				sls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				sls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				sls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				sls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				sls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sls.Type = typeVar
			}
		}
	}

	return nil
}

// SquareLinkedServiceTypeProperties square Service linked service properties.
type SquareLinkedServiceTypeProperties struct {
	// Host - The URL of the Square instance. (i.e. mystore.mysquare.com)
	Host interface{} `json:"host,omitempty"`
	// ClientID - The client ID associated with your Square application.
	ClientID interface{} `json:"clientId,omitempty"`
	// ClientSecret - The client secret associated with your Square application.
	ClientSecret BasicSecretBase `json:"clientSecret,omitempty"`
	// RedirectURI - The redirect URL assigned in the Square application dashboard. (i.e. http://localhost:2500)
	RedirectURI interface{} `json:"redirectUri,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true.
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for SquareLinkedServiceTypeProperties struct.
func (slstp *SquareLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				slstp.Host = host
			}
		case "clientId":
			if v != nil {
				var clientID interface{}
				err = json.Unmarshal(*v, &clientID)
				if err != nil {
					return err
				}
				slstp.ClientID = clientID
			}
		case "clientSecret":
			if v != nil {
				clientSecret, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				slstp.ClientSecret = clientSecret
			}
		case "redirectUri":
			if v != nil {
				var redirectURI interface{}
				err = json.Unmarshal(*v, &redirectURI)
				if err != nil {
					return err
				}
				slstp.RedirectURI = redirectURI
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				slstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				slstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				slstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				slstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// SquareObjectDataset square Service dataset.
type SquareObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SquareObjectDataset.
func (sod SquareObjectDataset) MarshalJSON() ([]byte, error) {
	sod.Type = TypeSquareObject
	objectMap := make(map[string]interface{})
	if sod.Description != nil {
		objectMap["description"] = sod.Description
	}
	if sod.Structure != nil {
		objectMap["structure"] = sod.Structure
	}
	if sod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = sod.LinkedServiceName
	}
	if sod.Parameters != nil {
		objectMap["parameters"] = sod.Parameters
	}
	if sod.Annotations != nil {
		objectMap["annotations"] = sod.Annotations
	}
	if sod.Type != "" {
		objectMap["type"] = sod.Type
	}
	for k, v := range sod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return &sod, true
}

// AsSparkObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for SquareObjectDataset.
func (sod SquareObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &sod, true
}

// UnmarshalJSON is the custom unmarshaler for SquareObjectDataset struct.
func (sod *SquareObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sod.AdditionalProperties == nil {
					sod.AdditionalProperties = make(map[string]interface{})
				}
				sod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				sod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				sod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				sod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				sod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				sod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sod.Type = typeVar
			}
		}
	}

	return nil
}

// SquareSource a copy activity Square Service source.
type SquareSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SquareSource.
func (ss SquareSource) MarshalJSON() ([]byte, error) {
	ss.Type = TypeSquareSource
	objectMap := make(map[string]interface{})
	if ss.Query != nil {
		objectMap["query"] = ss.Query
	}
	if ss.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ss.SourceRetryCount
	}
	if ss.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ss.SourceRetryWait
	}
	if ss.Type != "" {
		objectMap["type"] = ss.Type
	}
	for k, v := range ss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsSquareSource() (*SquareSource, bool) {
	return &ss, true
}

// AsSparkSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for SquareSource.
func (ss SquareSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ss, true
}

// UnmarshalJSON is the custom unmarshaler for SquareSource struct.
func (ss *SquareSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				ss.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ss.AdditionalProperties == nil {
					ss.AdditionalProperties = make(map[string]interface{})
				}
				ss.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ss.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ss.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ss.Type = typeVar
			}
		}
	}

	return nil
}

// SSISAccessCredential SSIS access credential.
type SSISAccessCredential struct {
	// Domain - Domain for windows authentication.
	Domain interface{} `json:"domain,omitempty"`
	// UserName - UseName for windows authentication.
	UserName interface{} `json:"userName,omitempty"`
	// Password - Password for windows authentication.
	Password BasicSecretBase `json:"password,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for SSISAccessCredential struct.
func (sac *SSISAccessCredential) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "domain":
			if v != nil {
				var domain interface{}
				err = json.Unmarshal(*v, &domain)
				if err != nil {
					return err
				}
				sac.Domain = domain
			}
		case "userName":
			if v != nil {
				var userName interface{}
				err = json.Unmarshal(*v, &userName)
				if err != nil {
					return err
				}
				sac.UserName = userName
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				sac.Password = password
			}
		}
	}

	return nil
}

// SSISExecutionCredential SSIS package execution credential.
type SSISExecutionCredential struct {
	// Domain - Domain for windows authentication.
	Domain interface{} `json:"domain,omitempty"`
	// UserName - UseName for windows authentication.
	UserName interface{} `json:"userName,omitempty"`
	// Password - Password for windows authentication.
	Password *SecureString `json:"password,omitempty"`
}

// SSISExecutionParameter SSIS execution parameter.
type SSISExecutionParameter struct {
	// Value - SSIS package execution parameter value. Type: string (or Expression with resultType string).
	Value interface{} `json:"value,omitempty"`
}

// SSISLogLocation SSIS package execution log location
type SSISLogLocation struct {
	// LogPath - The SSIS package execution log path. Type: string (or Expression with resultType string).
	LogPath interface{} `json:"logPath,omitempty"`
	// Type - The type of SSIS log location.
	Type *string `json:"type,omitempty"`
	// SSISLogLocationTypeProperties - SSIS package execution log location properties.
	*SSISLogLocationTypeProperties `json:"typeProperties,omitempty"`
}

// MarshalJSON is the custom marshaler for SSISLogLocation.
func (sll SSISLogLocation) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if sll.LogPath != nil {
		objectMap["logPath"] = sll.LogPath
	}
	if sll.Type != nil {
		objectMap["type"] = sll.Type
	}
	if sll.SSISLogLocationTypeProperties != nil {
		objectMap["typeProperties"] = sll.SSISLogLocationTypeProperties
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for SSISLogLocation struct.
func (sll *SSISLogLocation) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "logPath":
			if v != nil {
				var logPath interface{}
				err = json.Unmarshal(*v, &logPath)
				if err != nil {
					return err
				}
				sll.LogPath = logPath
			}
		case "type":
			if v != nil {
				var typeVar string
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sll.Type = &typeVar
			}
		case "typeProperties":
			if v != nil {
				var sSISLogLocationTypeProperties SSISLogLocationTypeProperties
				err = json.Unmarshal(*v, &sSISLogLocationTypeProperties)
				if err != nil {
					return err
				}
				sll.SSISLogLocationTypeProperties = &sSISLogLocationTypeProperties
			}
		}
	}

	return nil
}

// SSISLogLocationTypeProperties SSIS package execution log location properties.
type SSISLogLocationTypeProperties struct {
	// AccessCredential - The package execution log access credential.
	AccessCredential *SSISAccessCredential `json:"accessCredential,omitempty"`
	// LogRefreshInterval - 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])).
	LogRefreshInterval interface{} `json:"logRefreshInterval,omitempty"`
}

// SSISPackageLocation SSIS package location.
type SSISPackageLocation struct {
	// PackagePath - The SSIS package path. Type: string (or Expression with resultType string).
	PackagePath interface{} `json:"packagePath,omitempty"`
	// Type - The type of SSIS package location. Possible values include: 'SSISDB', 'File'
	Type SsisPackageLocationType `json:"type,omitempty"`
	// SSISPackageLocationTypeProperties - SSIS package location properties.
	*SSISPackageLocationTypeProperties `json:"typeProperties,omitempty"`
}

// MarshalJSON is the custom marshaler for SSISPackageLocation.
func (spl SSISPackageLocation) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if spl.PackagePath != nil {
		objectMap["packagePath"] = spl.PackagePath
	}
	if spl.Type != "" {
		objectMap["type"] = spl.Type
	}
	if spl.SSISPackageLocationTypeProperties != nil {
		objectMap["typeProperties"] = spl.SSISPackageLocationTypeProperties
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for SSISPackageLocation struct.
func (spl *SSISPackageLocation) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "packagePath":
			if v != nil {
				var packagePath interface{}
				err = json.Unmarshal(*v, &packagePath)
				if err != nil {
					return err
				}
				spl.PackagePath = packagePath
			}
		case "type":
			if v != nil {
				var typeVar SsisPackageLocationType
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				spl.Type = typeVar
			}
		case "typeProperties":
			if v != nil {
				var sSISPackageLocationTypeProperties SSISPackageLocationTypeProperties
				err = json.Unmarshal(*v, &sSISPackageLocationTypeProperties)
				if err != nil {
					return err
				}
				spl.SSISPackageLocationTypeProperties = &sSISPackageLocationTypeProperties
			}
		}
	}

	return nil
}

// SSISPackageLocationTypeProperties SSIS package location properties.
type SSISPackageLocationTypeProperties struct {
	// PackagePassword - Password of the package.
	PackagePassword BasicSecretBase `json:"packagePassword,omitempty"`
	// AccessCredential - The package access credential.
	AccessCredential *SSISAccessCredential `json:"accessCredential,omitempty"`
	// ConfigurationPath - The configuration file of the package execution. Type: string (or Expression with resultType string).
	ConfigurationPath interface{} `json:"configurationPath,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for SSISPackageLocationTypeProperties struct.
func (spltp *SSISPackageLocationTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "packagePassword":
			if v != nil {
				packagePassword, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				spltp.PackagePassword = packagePassword
			}
		case "accessCredential":
			if v != nil {
				var accessCredential SSISAccessCredential
				err = json.Unmarshal(*v, &accessCredential)
				if err != nil {
					return err
				}
				spltp.AccessCredential = &accessCredential
			}
		case "configurationPath":
			if v != nil {
				var configurationPath interface{}
				err = json.Unmarshal(*v, &configurationPath)
				if err != nil {
					return err
				}
				spltp.ConfigurationPath = configurationPath
			}
		}
	}

	return nil
}

// SSISPropertyOverride SSIS property override.
type SSISPropertyOverride struct {
	// Value - SSIS package property override value. Type: string (or Expression with resultType string).
	Value interface{} `json:"value,omitempty"`
	// IsSensitive - Whether SSIS package property override value is sensitive data. Value will be encrypted in SSISDB if it is true
	IsSensitive *bool `json:"isSensitive,omitempty"`
}

// StagingSettings staging settings.
type StagingSettings struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// LinkedServiceName - Staging linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Path - The path to storage for storing the interim data. Type: string (or Expression with resultType string).
	Path interface{} `json:"path,omitempty"`
	// EnableCompression - Specifies whether to use compression when copying data via an interim staging. Default value is false. Type: boolean (or Expression with resultType boolean).
	EnableCompression interface{} `json:"enableCompression,omitempty"`
}

// MarshalJSON is the custom marshaler for StagingSettings.
func (ss StagingSettings) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if ss.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = ss.LinkedServiceName
	}
	if ss.Path != nil {
		objectMap["path"] = ss.Path
	}
	if ss.EnableCompression != nil {
		objectMap["enableCompression"] = ss.EnableCompression
	}
	for k, v := range ss.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for StagingSettings struct.
func (ss *StagingSettings) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ss.AdditionalProperties == nil {
					ss.AdditionalProperties = make(map[string]interface{})
				}
				ss.AdditionalProperties[k] = additionalProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				ss.LinkedServiceName = &linkedServiceName
			}
		case "path":
			if v != nil {
				var pathVar interface{}
				err = json.Unmarshal(*v, &pathVar)
				if err != nil {
					return err
				}
				ss.Path = pathVar
			}
		case "enableCompression":
			if v != nil {
				var enableCompression interface{}
				err = json.Unmarshal(*v, &enableCompression)
				if err != nil {
					return err
				}
				ss.EnableCompression = enableCompression
			}
		}
	}

	return nil
}

// StoredProcedureParameter SQL stored procedure parameter.
type StoredProcedureParameter struct {
	// Value - Stored procedure parameter value. Type: string (or Expression with resultType string).
	Value interface{} `json:"value,omitempty"`
	// Type - Stored procedure parameter type.
	Type interface{} `json:"type,omitempty"`
}

// SubResource azure Data Factory nested resource, which belongs to a factory.
type SubResource struct {
	// ID - READ-ONLY; The resource identifier.
	ID *string `json:"id,omitempty"`
	// Name - READ-ONLY; The resource name.
	Name *string `json:"name,omitempty"`
	// Type - READ-ONLY; The resource type.
	Type *string `json:"type,omitempty"`
	// Etag - READ-ONLY; Etag identifies change in the resource.
	Etag *string `json:"etag,omitempty"`
}

// MarshalJSON is the custom marshaler for SubResource.
func (sr SubResource) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	return json.Marshal(objectMap)
}

// SybaseLinkedService linked service for Sybase data source.
type SybaseLinkedService struct {
	// SybaseLinkedServiceTypeProperties - Sybase linked service properties.
	*SybaseLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for SybaseLinkedService.
func (sls SybaseLinkedService) MarshalJSON() ([]byte, error) {
	sls.Type = TypeSybase
	objectMap := make(map[string]interface{})
	if sls.SybaseLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = sls.SybaseLinkedServiceTypeProperties
	}
	if sls.ConnectVia != nil {
		objectMap["connectVia"] = sls.ConnectVia
	}
	if sls.Description != nil {
		objectMap["description"] = sls.Description
	}
	if sls.Parameters != nil {
		objectMap["parameters"] = sls.Parameters
	}
	if sls.Annotations != nil {
		objectMap["annotations"] = sls.Annotations
	}
	if sls.Type != "" {
		objectMap["type"] = sls.Type
	}
	for k, v := range sls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return &sls, true
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for SybaseLinkedService.
func (sls SybaseLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &sls, true
}

// UnmarshalJSON is the custom unmarshaler for SybaseLinkedService struct.
func (sls *SybaseLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var sybaseLinkedServiceTypeProperties SybaseLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &sybaseLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				sls.SybaseLinkedServiceTypeProperties = &sybaseLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if sls.AdditionalProperties == nil {
					sls.AdditionalProperties = make(map[string]interface{})
				}
				sls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				sls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				sls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				sls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				sls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				sls.Type = typeVar
			}
		}
	}

	return nil
}

// SybaseLinkedServiceTypeProperties sybase linked service properties.
type SybaseLinkedServiceTypeProperties struct {
	// Server - Server name for connection. Type: string (or Expression with resultType string).
	Server interface{} `json:"server,omitempty"`
	// Database - Database name for connection. Type: string (or Expression with resultType string).
	Database interface{} `json:"database,omitempty"`
	// Schema - Schema name for connection. Type: string (or Expression with resultType string).
	Schema interface{} `json:"schema,omitempty"`
	// AuthenticationType - AuthenticationType to be used for connection. Possible values include: 'SybaseAuthenticationTypeBasic', 'SybaseAuthenticationTypeWindows'
	AuthenticationType SybaseAuthenticationType `json:"authenticationType,omitempty"`
	// Username - Username for authentication. Type: string (or Expression with resultType string).
	Username interface{} `json:"username,omitempty"`
	// Password - Password for authentication.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for SybaseLinkedServiceTypeProperties struct.
func (slstp *SybaseLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "server":
			if v != nil {
				var server interface{}
				err = json.Unmarshal(*v, &server)
				if err != nil {
					return err
				}
				slstp.Server = server
			}
		case "database":
			if v != nil {
				var databaseVar interface{}
				err = json.Unmarshal(*v, &databaseVar)
				if err != nil {
					return err
				}
				slstp.Database = databaseVar
			}
		case "schema":
			if v != nil {
				var schema interface{}
				err = json.Unmarshal(*v, &schema)
				if err != nil {
					return err
				}
				slstp.Schema = schema
			}
		case "authenticationType":
			if v != nil {
				var authenticationType SybaseAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				slstp.AuthenticationType = authenticationType
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				slstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				slstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				slstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// TeradataLinkedService linked service for Teradata data source.
type TeradataLinkedService struct {
	// TeradataLinkedServiceTypeProperties - Teradata linked service properties.
	*TeradataLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for TeradataLinkedService.
func (TLSVar TeradataLinkedService) MarshalJSON() ([]byte, error) {
	TLSVar.Type = TypeTeradata
	objectMap := make(map[string]interface{})
	if TLSVar.TeradataLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = TLSVar.TeradataLinkedServiceTypeProperties
	}
	if TLSVar.ConnectVia != nil {
		objectMap["connectVia"] = TLSVar.ConnectVia
	}
	if TLSVar.Description != nil {
		objectMap["description"] = TLSVar.Description
	}
	if TLSVar.Parameters != nil {
		objectMap["parameters"] = TLSVar.Parameters
	}
	if TLSVar.Annotations != nil {
		objectMap["annotations"] = TLSVar.Annotations
	}
	if TLSVar.Type != "" {
		objectMap["type"] = TLSVar.Type
	}
	for k, v := range TLSVar.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return &TLSVar, true
}

// AsDb2LinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for TeradataLinkedService.
func (TLSVar TeradataLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &TLSVar, true
}

// UnmarshalJSON is the custom unmarshaler for TeradataLinkedService struct.
func (TLSVar *TeradataLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var teradataLinkedServiceTypeProperties TeradataLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &teradataLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				TLSVar.TeradataLinkedServiceTypeProperties = &teradataLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if TLSVar.AdditionalProperties == nil {
					TLSVar.AdditionalProperties = make(map[string]interface{})
				}
				TLSVar.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				TLSVar.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				TLSVar.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				TLSVar.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				TLSVar.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				TLSVar.Type = typeVar
			}
		}
	}

	return nil
}

// TeradataLinkedServiceTypeProperties teradata linked service properties.
type TeradataLinkedServiceTypeProperties struct {
	// Server - Server name for connection. Type: string (or Expression with resultType string).
	Server interface{} `json:"server,omitempty"`
	// AuthenticationType - AuthenticationType to be used for connection. Possible values include: 'TeradataAuthenticationTypeBasic', 'TeradataAuthenticationTypeWindows'
	AuthenticationType TeradataAuthenticationType `json:"authenticationType,omitempty"`
	// Username - Username for authentication. Type: string (or Expression with resultType string).
	Username interface{} `json:"username,omitempty"`
	// Password - Password for authentication.
	Password BasicSecretBase `json:"password,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for TeradataLinkedServiceTypeProperties struct.
func (tlstp *TeradataLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "server":
			if v != nil {
				var server interface{}
				err = json.Unmarshal(*v, &server)
				if err != nil {
					return err
				}
				tlstp.Server = server
			}
		case "authenticationType":
			if v != nil {
				var authenticationType TeradataAuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				tlstp.AuthenticationType = authenticationType
			}
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				tlstp.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				tlstp.Password = password
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				tlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// TextFormat the data stored in text format.
type TextFormat struct {
	// ColumnDelimiter - The column delimiter. Type: string (or Expression with resultType string).
	ColumnDelimiter interface{} `json:"columnDelimiter,omitempty"`
	// RowDelimiter - The row delimiter. Type: string (or Expression with resultType string).
	RowDelimiter interface{} `json:"rowDelimiter,omitempty"`
	// EscapeChar - The escape character. Type: string (or Expression with resultType string).
	EscapeChar interface{} `json:"escapeChar,omitempty"`
	// QuoteChar - The quote character. Type: string (or Expression with resultType string).
	QuoteChar interface{} `json:"quoteChar,omitempty"`
	// NullValue - The null value string. Type: string (or Expression with resultType string).
	NullValue interface{} `json:"nullValue,omitempty"`
	// EncodingName - 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 of the table in the following link to set supported values: https://msdn.microsoft.com/library/system.text.encoding.aspx. Type: string (or Expression with resultType string).
	EncodingName interface{} `json:"encodingName,omitempty"`
	// TreatEmptyAsNull - Treat empty column values in the text file as null. The default value is true. Type: boolean (or Expression with resultType boolean).
	TreatEmptyAsNull interface{} `json:"treatEmptyAsNull,omitempty"`
	// SkipLineCount - The number of lines/rows to be skipped when parsing text files. The default value is 0. Type: integer (or Expression with resultType integer).
	SkipLineCount interface{} `json:"skipLineCount,omitempty"`
	// FirstRowAsHeader - 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 value is false. Type: boolean (or Expression with resultType boolean).
	FirstRowAsHeader interface{} `json:"firstRowAsHeader,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Serializer - Serializer. Type: string (or Expression with resultType string).
	Serializer interface{} `json:"serializer,omitempty"`
	// Deserializer - Deserializer. Type: string (or Expression with resultType string).
	Deserializer interface{} `json:"deserializer,omitempty"`
	// Type - Possible values include: 'TypeDatasetStorageFormat', 'TypeParquetFormat', 'TypeOrcFormat', 'TypeAvroFormat', 'TypeJSONFormat', 'TypeTextFormat'
	Type TypeBasicDatasetStorageFormat `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for TextFormat.
func (tf TextFormat) MarshalJSON() ([]byte, error) {
	tf.Type = TypeTextFormat
	objectMap := make(map[string]interface{})
	if tf.ColumnDelimiter != nil {
		objectMap["columnDelimiter"] = tf.ColumnDelimiter
	}
	if tf.RowDelimiter != nil {
		objectMap["rowDelimiter"] = tf.RowDelimiter
	}
	if tf.EscapeChar != nil {
		objectMap["escapeChar"] = tf.EscapeChar
	}
	if tf.QuoteChar != nil {
		objectMap["quoteChar"] = tf.QuoteChar
	}
	if tf.NullValue != nil {
		objectMap["nullValue"] = tf.NullValue
	}
	if tf.EncodingName != nil {
		objectMap["encodingName"] = tf.EncodingName
	}
	if tf.TreatEmptyAsNull != nil {
		objectMap["treatEmptyAsNull"] = tf.TreatEmptyAsNull
	}
	if tf.SkipLineCount != nil {
		objectMap["skipLineCount"] = tf.SkipLineCount
	}
	if tf.FirstRowAsHeader != nil {
		objectMap["firstRowAsHeader"] = tf.FirstRowAsHeader
	}
	if tf.Serializer != nil {
		objectMap["serializer"] = tf.Serializer
	}
	if tf.Deserializer != nil {
		objectMap["deserializer"] = tf.Deserializer
	}
	if tf.Type != "" {
		objectMap["type"] = tf.Type
	}
	for k, v := range tf.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsParquetFormat is the BasicDatasetStorageFormat implementation for TextFormat.
func (tf TextFormat) AsParquetFormat() (*ParquetFormat, bool) {
	return nil, false
}

// AsOrcFormat is the BasicDatasetStorageFormat implementation for TextFormat.
func (tf TextFormat) AsOrcFormat() (*OrcFormat, bool) {
	return nil, false
}

// AsAvroFormat is the BasicDatasetStorageFormat implementation for TextFormat.
func (tf TextFormat) AsAvroFormat() (*AvroFormat, bool) {
	return nil, false
}

// AsJSONFormat is the BasicDatasetStorageFormat implementation for TextFormat.
func (tf TextFormat) AsJSONFormat() (*JSONFormat, bool) {
	return nil, false
}

// AsTextFormat is the BasicDatasetStorageFormat implementation for TextFormat.
func (tf TextFormat) AsTextFormat() (*TextFormat, bool) {
	return &tf, true
}

// AsDatasetStorageFormat is the BasicDatasetStorageFormat implementation for TextFormat.
func (tf TextFormat) AsDatasetStorageFormat() (*DatasetStorageFormat, bool) {
	return nil, false
}

// AsBasicDatasetStorageFormat is the BasicDatasetStorageFormat implementation for TextFormat.
func (tf TextFormat) AsBasicDatasetStorageFormat() (BasicDatasetStorageFormat, bool) {
	return &tf, true
}

// UnmarshalJSON is the custom unmarshaler for TextFormat struct.
func (tf *TextFormat) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "columnDelimiter":
			if v != nil {
				var columnDelimiter interface{}
				err = json.Unmarshal(*v, &columnDelimiter)
				if err != nil {
					return err
				}
				tf.ColumnDelimiter = columnDelimiter
			}
		case "rowDelimiter":
			if v != nil {
				var rowDelimiter interface{}
				err = json.Unmarshal(*v, &rowDelimiter)
				if err != nil {
					return err
				}
				tf.RowDelimiter = rowDelimiter
			}
		case "escapeChar":
			if v != nil {
				var escapeChar interface{}
				err = json.Unmarshal(*v, &escapeChar)
				if err != nil {
					return err
				}
				tf.EscapeChar = escapeChar
			}
		case "quoteChar":
			if v != nil {
				var quoteChar interface{}
				err = json.Unmarshal(*v, &quoteChar)
				if err != nil {
					return err
				}
				tf.QuoteChar = quoteChar
			}
		case "nullValue":
			if v != nil {
				var nullValue interface{}
				err = json.Unmarshal(*v, &nullValue)
				if err != nil {
					return err
				}
				tf.NullValue = nullValue
			}
		case "encodingName":
			if v != nil {
				var encodingName interface{}
				err = json.Unmarshal(*v, &encodingName)
				if err != nil {
					return err
				}
				tf.EncodingName = encodingName
			}
		case "treatEmptyAsNull":
			if v != nil {
				var treatEmptyAsNull interface{}
				err = json.Unmarshal(*v, &treatEmptyAsNull)
				if err != nil {
					return err
				}
				tf.TreatEmptyAsNull = treatEmptyAsNull
			}
		case "skipLineCount":
			if v != nil {
				var skipLineCount interface{}
				err = json.Unmarshal(*v, &skipLineCount)
				if err != nil {
					return err
				}
				tf.SkipLineCount = skipLineCount
			}
		case "firstRowAsHeader":
			if v != nil {
				var firstRowAsHeader interface{}
				err = json.Unmarshal(*v, &firstRowAsHeader)
				if err != nil {
					return err
				}
				tf.FirstRowAsHeader = firstRowAsHeader
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if tf.AdditionalProperties == nil {
					tf.AdditionalProperties = make(map[string]interface{})
				}
				tf.AdditionalProperties[k] = additionalProperties
			}
		case "serializer":
			if v != nil {
				var serializer interface{}
				err = json.Unmarshal(*v, &serializer)
				if err != nil {
					return err
				}
				tf.Serializer = serializer
			}
		case "deserializer":
			if v != nil {
				var deserializer interface{}
				err = json.Unmarshal(*v, &deserializer)
				if err != nil {
					return err
				}
				tf.Deserializer = deserializer
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDatasetStorageFormat
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				tf.Type = typeVar
			}
		}
	}

	return nil
}

// BasicTrigger azure data factory nested object which contains information about creating pipeline run
type BasicTrigger interface {
	AsTumblingWindowTrigger() (*TumblingWindowTrigger, bool)
	AsBlobEventsTrigger() (*BlobEventsTrigger, bool)
	AsBlobTrigger() (*BlobTrigger, bool)
	AsScheduleTrigger() (*ScheduleTrigger, bool)
	AsMultiplePipelineTrigger() (*MultiplePipelineTrigger, bool)
	AsBasicMultiplePipelineTrigger() (BasicMultiplePipelineTrigger, bool)
	AsTrigger() (*Trigger, bool)
}

// Trigger azure data factory nested object which contains information about creating pipeline run
type Trigger struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Trigger description.
	Description *string `json:"description,omitempty"`
	// RuntimeState - READ-ONLY; Indicates if trigger is running or not. Updated when Start/Stop APIs are called on the Trigger. Possible values include: 'TriggerRuntimeStateStarted', 'TriggerRuntimeStateStopped', 'TriggerRuntimeStateDisabled'
	RuntimeState TriggerRuntimeState `json:"runtimeState,omitempty"`
	// Type - Possible values include: 'TypeTrigger', 'TypeTumblingWindowTrigger', 'TypeBlobEventsTrigger', 'TypeBlobTrigger', 'TypeScheduleTrigger', 'TypeMultiplePipelineTrigger'
	Type TypeBasicTrigger `json:"type,omitempty"`
}

func unmarshalBasicTrigger(body []byte) (BasicTrigger, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["type"] {
	case string(TypeTumblingWindowTrigger):
		var twt TumblingWindowTrigger
		err := json.Unmarshal(body, &twt)
		return twt, err
	case string(TypeBlobEventsTrigger):
		var bet BlobEventsTrigger
		err := json.Unmarshal(body, &bet)
		return bet, err
	case string(TypeBlobTrigger):
		var bt BlobTrigger
		err := json.Unmarshal(body, &bt)
		return bt, err
	case string(TypeScheduleTrigger):
		var st ScheduleTrigger
		err := json.Unmarshal(body, &st)
		return st, err
	case string(TypeMultiplePipelineTrigger):
		var mpt MultiplePipelineTrigger
		err := json.Unmarshal(body, &mpt)
		return mpt, err
	default:
		var t Trigger
		err := json.Unmarshal(body, &t)
		return t, err
	}
}
func unmarshalBasicTriggerArray(body []byte) ([]BasicTrigger, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	tArray := make([]BasicTrigger, len(rawMessages))

	for index, rawMessage := range rawMessages {
		t, err := unmarshalBasicTrigger(*rawMessage)
		if err != nil {
			return nil, err
		}
		tArray[index] = t
	}
	return tArray, nil
}

// MarshalJSON is the custom marshaler for Trigger.
func (t Trigger) MarshalJSON() ([]byte, error) {
	t.Type = TypeTrigger
	objectMap := make(map[string]interface{})
	if t.Description != nil {
		objectMap["description"] = t.Description
	}
	if t.Type != "" {
		objectMap["type"] = t.Type
	}
	for k, v := range t.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsTumblingWindowTrigger is the BasicTrigger implementation for Trigger.
func (t Trigger) AsTumblingWindowTrigger() (*TumblingWindowTrigger, bool) {
	return nil, false
}

// AsBlobEventsTrigger is the BasicTrigger implementation for Trigger.
func (t Trigger) AsBlobEventsTrigger() (*BlobEventsTrigger, bool) {
	return nil, false
}

// AsBlobTrigger is the BasicTrigger implementation for Trigger.
func (t Trigger) AsBlobTrigger() (*BlobTrigger, bool) {
	return nil, false
}

// AsScheduleTrigger is the BasicTrigger implementation for Trigger.
func (t Trigger) AsScheduleTrigger() (*ScheduleTrigger, bool) {
	return nil, false
}

// AsMultiplePipelineTrigger is the BasicTrigger implementation for Trigger.
func (t Trigger) AsMultiplePipelineTrigger() (*MultiplePipelineTrigger, bool) {
	return nil, false
}

// AsBasicMultiplePipelineTrigger is the BasicTrigger implementation for Trigger.
func (t Trigger) AsBasicMultiplePipelineTrigger() (BasicMultiplePipelineTrigger, bool) {
	return nil, false
}

// AsTrigger is the BasicTrigger implementation for Trigger.
func (t Trigger) AsTrigger() (*Trigger, bool) {
	return &t, true
}

// AsBasicTrigger is the BasicTrigger implementation for Trigger.
func (t Trigger) AsBasicTrigger() (BasicTrigger, bool) {
	return &t, true
}

// UnmarshalJSON is the custom unmarshaler for Trigger struct.
func (t *Trigger) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if t.AdditionalProperties == nil {
					t.AdditionalProperties = make(map[string]interface{})
				}
				t.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				t.Description = &description
			}
		case "runtimeState":
			if v != nil {
				var runtimeState TriggerRuntimeState
				err = json.Unmarshal(*v, &runtimeState)
				if err != nil {
					return err
				}
				t.RuntimeState = runtimeState
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicTrigger
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				t.Type = typeVar
			}
		}
	}

	return nil
}

// TriggerListResponse a list of trigger resources.
type TriggerListResponse struct {
	autorest.Response `json:"-"`
	// Value - List of triggers.
	Value *[]TriggerResource `json:"value,omitempty"`
	// NextLink - The link to the next page of results, if any remaining results exist.
	NextLink *string `json:"nextLink,omitempty"`
}

// TriggerListResponseIterator provides access to a complete listing of TriggerResource values.
type TriggerListResponseIterator struct {
	i    int
	page TriggerListResponsePage
}

// NextWithContext advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
func (iter *TriggerListResponseIterator) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/TriggerListResponseIterator.NextWithContext")
		defer func() {
			sc := -1
			if iter.Response().Response.Response != nil {
				sc = iter.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	iter.i++
	if iter.i < len(iter.page.Values()) {
		return nil
	}
	err = iter.page.NextWithContext(ctx)
	if err != nil {
		iter.i--
		return err
	}
	iter.i = 0
	return nil
}

// Next advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (iter *TriggerListResponseIterator) Next() error {
	return iter.NextWithContext(context.Background())
}

// NotDone returns true if the enumeration should be started or is not yet complete.
func (iter TriggerListResponseIterator) NotDone() bool {
	return iter.page.NotDone() && iter.i < len(iter.page.Values())
}

// Response returns the raw server response from the last page request.
func (iter TriggerListResponseIterator) Response() TriggerListResponse {
	return iter.page.Response()
}

// Value returns the current value or a zero-initialized value if the
// iterator has advanced beyond the end of the collection.
func (iter TriggerListResponseIterator) Value() TriggerResource {
	if !iter.page.NotDone() {
		return TriggerResource{}
	}
	return iter.page.Values()[iter.i]
}

// Creates a new instance of the TriggerListResponseIterator type.
func NewTriggerListResponseIterator(page TriggerListResponsePage) TriggerListResponseIterator {
	return TriggerListResponseIterator{page: page}
}

// IsEmpty returns true if the ListResult contains no values.
func (tlr TriggerListResponse) IsEmpty() bool {
	return tlr.Value == nil || len(*tlr.Value) == 0
}

// hasNextLink returns true if the NextLink is not empty.
func (tlr TriggerListResponse) hasNextLink() bool {
	return tlr.NextLink != nil && len(*tlr.NextLink) != 0
}

// triggerListResponsePreparer prepares a request to retrieve the next set of results.
// It returns nil if no more results exist.
func (tlr TriggerListResponse) triggerListResponsePreparer(ctx context.Context) (*http.Request, error) {
	if !tlr.hasNextLink() {
		return nil, nil
	}
	return autorest.Prepare((&http.Request{}).WithContext(ctx),
		autorest.AsJSON(),
		autorest.AsGet(),
		autorest.WithBaseURL(to.String(tlr.NextLink)))
}

// TriggerListResponsePage contains a page of TriggerResource values.
type TriggerListResponsePage struct {
	fn  func(context.Context, TriggerListResponse) (TriggerListResponse, error)
	tlr TriggerListResponse
}

// NextWithContext advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
func (page *TriggerListResponsePage) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/TriggerListResponsePage.NextWithContext")
		defer func() {
			sc := -1
			if page.Response().Response.Response != nil {
				sc = page.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	for {
		next, err := page.fn(ctx, page.tlr)
		if err != nil {
			return err
		}
		page.tlr = next
		if !next.hasNextLink() || !next.IsEmpty() {
			break
		}
	}
	return nil
}

// Next advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (page *TriggerListResponsePage) Next() error {
	return page.NextWithContext(context.Background())
}

// NotDone returns true if the page enumeration should be started or is not yet complete.
func (page TriggerListResponsePage) NotDone() bool {
	return !page.tlr.IsEmpty()
}

// Response returns the raw server response from the last page request.
func (page TriggerListResponsePage) Response() TriggerListResponse {
	return page.tlr
}

// Values returns the slice of values for the current page or nil if there are no values.
func (page TriggerListResponsePage) Values() []TriggerResource {
	if page.tlr.IsEmpty() {
		return nil
	}
	return *page.tlr.Value
}

// Creates a new instance of the TriggerListResponsePage type.
func NewTriggerListResponsePage(cur TriggerListResponse, getNextPage func(context.Context, TriggerListResponse) (TriggerListResponse, error)) TriggerListResponsePage {
	return TriggerListResponsePage{
		fn:  getNextPage,
		tlr: cur,
	}
}

// TriggerPipelineReference pipeline that needs to be triggered with the given parameters.
type TriggerPipelineReference struct {
	// PipelineReference - Pipeline reference.
	PipelineReference *PipelineReference `json:"pipelineReference,omitempty"`
	// Parameters - Pipeline parameters.
	Parameters map[string]interface{} `json:"parameters"`
}

// MarshalJSON is the custom marshaler for TriggerPipelineReference.
func (tpr TriggerPipelineReference) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if tpr.PipelineReference != nil {
		objectMap["pipelineReference"] = tpr.PipelineReference
	}
	if tpr.Parameters != nil {
		objectMap["parameters"] = tpr.Parameters
	}
	return json.Marshal(objectMap)
}

// TriggerResource trigger resource type.
type TriggerResource struct {
	autorest.Response `json:"-"`
	// Properties - Properties of the trigger.
	Properties BasicTrigger `json:"properties,omitempty"`
	// ID - READ-ONLY; The resource identifier.
	ID *string `json:"id,omitempty"`
	// Name - READ-ONLY; The resource name.
	Name *string `json:"name,omitempty"`
	// Type - READ-ONLY; The resource type.
	Type *string `json:"type,omitempty"`
	// Etag - READ-ONLY; Etag identifies change in the resource.
	Etag *string `json:"etag,omitempty"`
}

// MarshalJSON is the custom marshaler for TriggerResource.
func (tr TriggerResource) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	objectMap["properties"] = tr.Properties
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for TriggerResource struct.
func (tr *TriggerResource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "properties":
			if v != nil {
				properties, err := unmarshalBasicTrigger(*v)
				if err != nil {
					return err
				}
				tr.Properties = properties
			}
		case "id":
			if v != nil {
				var ID string
				err = json.Unmarshal(*v, &ID)
				if err != nil {
					return err
				}
				tr.ID = &ID
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				tr.Name = &name
			}
		case "type":
			if v != nil {
				var typeVar string
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				tr.Type = &typeVar
			}
		case "etag":
			if v != nil {
				var etag string
				err = json.Unmarshal(*v, &etag)
				if err != nil {
					return err
				}
				tr.Etag = &etag
			}
		}
	}

	return nil
}

// TriggerRun trigger runs.
type TriggerRun struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// TriggerRunID - READ-ONLY; Trigger run id.
	TriggerRunID *string `json:"triggerRunId,omitempty"`
	// TriggerName - READ-ONLY; Trigger name.
	TriggerName *string `json:"triggerName,omitempty"`
	// TriggerType - READ-ONLY; Trigger type.
	TriggerType *string `json:"triggerType,omitempty"`
	// TriggerRunTimestamp - READ-ONLY; Trigger run start time.
	TriggerRunTimestamp *date.Time `json:"triggerRunTimestamp,omitempty"`
	// Status - READ-ONLY; Trigger run status. Possible values include: 'TriggerRunStatusSucceeded', 'TriggerRunStatusFailed', 'TriggerRunStatusInprogress'
	Status TriggerRunStatus `json:"status,omitempty"`
	// Message - READ-ONLY; Trigger error message.
	Message *string `json:"message,omitempty"`
	// Properties - READ-ONLY; List of property name and value related to trigger run. Name, value pair depends on type of trigger.
	Properties map[string]*string `json:"properties"`
	// TriggeredPipelines - READ-ONLY; List of pipeline name and run Id triggered by the trigger run.
	TriggeredPipelines map[string]*string `json:"triggeredPipelines"`
}

// MarshalJSON is the custom marshaler for TriggerRun.
func (tr TriggerRun) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	for k, v := range tr.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for TriggerRun struct.
func (tr *TriggerRun) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if tr.AdditionalProperties == nil {
					tr.AdditionalProperties = make(map[string]interface{})
				}
				tr.AdditionalProperties[k] = additionalProperties
			}
		case "triggerRunId":
			if v != nil {
				var triggerRunID string
				err = json.Unmarshal(*v, &triggerRunID)
				if err != nil {
					return err
				}
				tr.TriggerRunID = &triggerRunID
			}
		case "triggerName":
			if v != nil {
				var triggerName string
				err = json.Unmarshal(*v, &triggerName)
				if err != nil {
					return err
				}
				tr.TriggerName = &triggerName
			}
		case "triggerType":
			if v != nil {
				var triggerType string
				err = json.Unmarshal(*v, &triggerType)
				if err != nil {
					return err
				}
				tr.TriggerType = &triggerType
			}
		case "triggerRunTimestamp":
			if v != nil {
				var triggerRunTimestamp date.Time
				err = json.Unmarshal(*v, &triggerRunTimestamp)
				if err != nil {
					return err
				}
				tr.TriggerRunTimestamp = &triggerRunTimestamp
			}
		case "status":
			if v != nil {
				var status TriggerRunStatus
				err = json.Unmarshal(*v, &status)
				if err != nil {
					return err
				}
				tr.Status = status
			}
		case "message":
			if v != nil {
				var message string
				err = json.Unmarshal(*v, &message)
				if err != nil {
					return err
				}
				tr.Message = &message
			}
		case "properties":
			if v != nil {
				var properties map[string]*string
				err = json.Unmarshal(*v, &properties)
				if err != nil {
					return err
				}
				tr.Properties = properties
			}
		case "triggeredPipelines":
			if v != nil {
				var triggeredPipelines map[string]*string
				err = json.Unmarshal(*v, &triggeredPipelines)
				if err != nil {
					return err
				}
				tr.TriggeredPipelines = triggeredPipelines
			}
		}
	}

	return nil
}

// TriggerRunListResponse a list of trigger runs.
type TriggerRunListResponse struct {
	autorest.Response `json:"-"`
	// Value - List of trigger runs.
	Value *[]TriggerRun `json:"value,omitempty"`
	// NextLink - The link to the next page of results, if any remaining results exist.
	NextLink *string `json:"nextLink,omitempty"`
}

// TriggerRunListResponseIterator provides access to a complete listing of TriggerRun values.
type TriggerRunListResponseIterator struct {
	i    int
	page TriggerRunListResponsePage
}

// NextWithContext advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
func (iter *TriggerRunListResponseIterator) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/TriggerRunListResponseIterator.NextWithContext")
		defer func() {
			sc := -1
			if iter.Response().Response.Response != nil {
				sc = iter.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	iter.i++
	if iter.i < len(iter.page.Values()) {
		return nil
	}
	err = iter.page.NextWithContext(ctx)
	if err != nil {
		iter.i--
		return err
	}
	iter.i = 0
	return nil
}

// Next advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (iter *TriggerRunListResponseIterator) Next() error {
	return iter.NextWithContext(context.Background())
}

// NotDone returns true if the enumeration should be started or is not yet complete.
func (iter TriggerRunListResponseIterator) NotDone() bool {
	return iter.page.NotDone() && iter.i < len(iter.page.Values())
}

// Response returns the raw server response from the last page request.
func (iter TriggerRunListResponseIterator) Response() TriggerRunListResponse {
	return iter.page.Response()
}

// Value returns the current value or a zero-initialized value if the
// iterator has advanced beyond the end of the collection.
func (iter TriggerRunListResponseIterator) Value() TriggerRun {
	if !iter.page.NotDone() {
		return TriggerRun{}
	}
	return iter.page.Values()[iter.i]
}

// Creates a new instance of the TriggerRunListResponseIterator type.
func NewTriggerRunListResponseIterator(page TriggerRunListResponsePage) TriggerRunListResponseIterator {
	return TriggerRunListResponseIterator{page: page}
}

// IsEmpty returns true if the ListResult contains no values.
func (trlr TriggerRunListResponse) IsEmpty() bool {
	return trlr.Value == nil || len(*trlr.Value) == 0
}

// hasNextLink returns true if the NextLink is not empty.
func (trlr TriggerRunListResponse) hasNextLink() bool {
	return trlr.NextLink != nil && len(*trlr.NextLink) != 0
}

// triggerRunListResponsePreparer prepares a request to retrieve the next set of results.
// It returns nil if no more results exist.
func (trlr TriggerRunListResponse) triggerRunListResponsePreparer(ctx context.Context) (*http.Request, error) {
	if !trlr.hasNextLink() {
		return nil, nil
	}
	return autorest.Prepare((&http.Request{}).WithContext(ctx),
		autorest.AsJSON(),
		autorest.AsGet(),
		autorest.WithBaseURL(to.String(trlr.NextLink)))
}

// TriggerRunListResponsePage contains a page of TriggerRun values.
type TriggerRunListResponsePage struct {
	fn   func(context.Context, TriggerRunListResponse) (TriggerRunListResponse, error)
	trlr TriggerRunListResponse
}

// NextWithContext advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
func (page *TriggerRunListResponsePage) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/TriggerRunListResponsePage.NextWithContext")
		defer func() {
			sc := -1
			if page.Response().Response.Response != nil {
				sc = page.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	for {
		next, err := page.fn(ctx, page.trlr)
		if err != nil {
			return err
		}
		page.trlr = next
		if !next.hasNextLink() || !next.IsEmpty() {
			break
		}
	}
	return nil
}

// Next advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (page *TriggerRunListResponsePage) Next() error {
	return page.NextWithContext(context.Background())
}

// NotDone returns true if the page enumeration should be started or is not yet complete.
func (page TriggerRunListResponsePage) NotDone() bool {
	return !page.trlr.IsEmpty()
}

// Response returns the raw server response from the last page request.
func (page TriggerRunListResponsePage) Response() TriggerRunListResponse {
	return page.trlr
}

// Values returns the slice of values for the current page or nil if there are no values.
func (page TriggerRunListResponsePage) Values() []TriggerRun {
	if page.trlr.IsEmpty() {
		return nil
	}
	return *page.trlr.Value
}

// Creates a new instance of the TriggerRunListResponsePage type.
func NewTriggerRunListResponsePage(cur TriggerRunListResponse, getNextPage func(context.Context, TriggerRunListResponse) (TriggerRunListResponse, error)) TriggerRunListResponsePage {
	return TriggerRunListResponsePage{
		fn:   getNextPage,
		trlr: cur,
	}
}

// TriggersStartFuture an abstraction for monitoring and retrieving the results of a long-running
// operation.
type TriggersStartFuture struct {
	azure.FutureAPI
	// Result returns the result of the asynchronous operation.
	// If the operation has not completed it will return an error.
	Result func(TriggersClient) (autorest.Response, error)
}

// UnmarshalJSON is the custom unmarshaller for CreateFuture.
func (future *TriggersStartFuture) UnmarshalJSON(body []byte) error {
	var azFuture azure.Future
	if err := json.Unmarshal(body, &azFuture); err != nil {
		return err
	}
	future.FutureAPI = &azFuture
	future.Result = future.result
	return nil
}

// result is the default implementation for TriggersStartFuture.Result.
func (future *TriggersStartFuture) result(client TriggersClient) (ar autorest.Response, err error) {
	var done bool
	done, err = future.DoneWithContext(context.Background(), client)
	if err != nil {
		err = autorest.NewErrorWithError(err, "datafactory.TriggersStartFuture", "Result", future.Response(), "Polling failure")
		return
	}
	if !done {
		ar.Response = future.Response()
		err = azure.NewAsyncOpIncompleteError("datafactory.TriggersStartFuture")
		return
	}
	ar.Response = future.Response()
	return
}

// TriggersStopFuture an abstraction for monitoring and retrieving the results of a long-running operation.
type TriggersStopFuture struct {
	azure.FutureAPI
	// Result returns the result of the asynchronous operation.
	// If the operation has not completed it will return an error.
	Result func(TriggersClient) (autorest.Response, error)
}

// UnmarshalJSON is the custom unmarshaller for CreateFuture.
func (future *TriggersStopFuture) UnmarshalJSON(body []byte) error {
	var azFuture azure.Future
	if err := json.Unmarshal(body, &azFuture); err != nil {
		return err
	}
	future.FutureAPI = &azFuture
	future.Result = future.result
	return nil
}

// result is the default implementation for TriggersStopFuture.Result.
func (future *TriggersStopFuture) result(client TriggersClient) (ar autorest.Response, err error) {
	var done bool
	done, err = future.DoneWithContext(context.Background(), client)
	if err != nil {
		err = autorest.NewErrorWithError(err, "datafactory.TriggersStopFuture", "Result", future.Response(), "Polling failure")
		return
	}
	if !done {
		ar.Response = future.Response()
		err = azure.NewAsyncOpIncompleteError("datafactory.TriggersStopFuture")
		return
	}
	ar.Response = future.Response()
	return
}

// TumblingWindowTrigger trigger that schedules pipeline runs for all fixed time interval windows from a
// start time without gaps and also supports backfill scenarios (when start time is in the past).
type TumblingWindowTrigger struct {
	// Pipeline - Pipeline for which runs are created when an event is fired for trigger window that is ready.
	Pipeline *TriggerPipelineReference `json:"pipeline,omitempty"`
	// TumblingWindowTriggerTypeProperties - Tumbling Window Trigger properties.
	*TumblingWindowTriggerTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Trigger description.
	Description *string `json:"description,omitempty"`
	// RuntimeState - READ-ONLY; Indicates if trigger is running or not. Updated when Start/Stop APIs are called on the Trigger. Possible values include: 'TriggerRuntimeStateStarted', 'TriggerRuntimeStateStopped', 'TriggerRuntimeStateDisabled'
	RuntimeState TriggerRuntimeState `json:"runtimeState,omitempty"`
	// Type - Possible values include: 'TypeTrigger', 'TypeTumblingWindowTrigger', 'TypeBlobEventsTrigger', 'TypeBlobTrigger', 'TypeScheduleTrigger', 'TypeMultiplePipelineTrigger'
	Type TypeBasicTrigger `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for TumblingWindowTrigger.
func (twt TumblingWindowTrigger) MarshalJSON() ([]byte, error) {
	twt.Type = TypeTumblingWindowTrigger
	objectMap := make(map[string]interface{})
	if twt.Pipeline != nil {
		objectMap["pipeline"] = twt.Pipeline
	}
	if twt.TumblingWindowTriggerTypeProperties != nil {
		objectMap["typeProperties"] = twt.TumblingWindowTriggerTypeProperties
	}
	if twt.Description != nil {
		objectMap["description"] = twt.Description
	}
	if twt.Type != "" {
		objectMap["type"] = twt.Type
	}
	for k, v := range twt.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsTumblingWindowTrigger is the BasicTrigger implementation for TumblingWindowTrigger.
func (twt TumblingWindowTrigger) AsTumblingWindowTrigger() (*TumblingWindowTrigger, bool) {
	return &twt, true
}

// AsBlobEventsTrigger is the BasicTrigger implementation for TumblingWindowTrigger.
func (twt TumblingWindowTrigger) AsBlobEventsTrigger() (*BlobEventsTrigger, bool) {
	return nil, false
}

// AsBlobTrigger is the BasicTrigger implementation for TumblingWindowTrigger.
func (twt TumblingWindowTrigger) AsBlobTrigger() (*BlobTrigger, bool) {
	return nil, false
}

// AsScheduleTrigger is the BasicTrigger implementation for TumblingWindowTrigger.
func (twt TumblingWindowTrigger) AsScheduleTrigger() (*ScheduleTrigger, bool) {
	return nil, false
}

// AsMultiplePipelineTrigger is the BasicTrigger implementation for TumblingWindowTrigger.
func (twt TumblingWindowTrigger) AsMultiplePipelineTrigger() (*MultiplePipelineTrigger, bool) {
	return nil, false
}

// AsBasicMultiplePipelineTrigger is the BasicTrigger implementation for TumblingWindowTrigger.
func (twt TumblingWindowTrigger) AsBasicMultiplePipelineTrigger() (BasicMultiplePipelineTrigger, bool) {
	return nil, false
}

// AsTrigger is the BasicTrigger implementation for TumblingWindowTrigger.
func (twt TumblingWindowTrigger) AsTrigger() (*Trigger, bool) {
	return nil, false
}

// AsBasicTrigger is the BasicTrigger implementation for TumblingWindowTrigger.
func (twt TumblingWindowTrigger) AsBasicTrigger() (BasicTrigger, bool) {
	return &twt, true
}

// UnmarshalJSON is the custom unmarshaler for TumblingWindowTrigger struct.
func (twt *TumblingWindowTrigger) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "pipeline":
			if v != nil {
				var pipeline TriggerPipelineReference
				err = json.Unmarshal(*v, &pipeline)
				if err != nil {
					return err
				}
				twt.Pipeline = &pipeline
			}
		case "typeProperties":
			if v != nil {
				var tumblingWindowTriggerTypeProperties TumblingWindowTriggerTypeProperties
				err = json.Unmarshal(*v, &tumblingWindowTriggerTypeProperties)
				if err != nil {
					return err
				}
				twt.TumblingWindowTriggerTypeProperties = &tumblingWindowTriggerTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if twt.AdditionalProperties == nil {
					twt.AdditionalProperties = make(map[string]interface{})
				}
				twt.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				twt.Description = &description
			}
		case "runtimeState":
			if v != nil {
				var runtimeState TriggerRuntimeState
				err = json.Unmarshal(*v, &runtimeState)
				if err != nil {
					return err
				}
				twt.RuntimeState = runtimeState
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicTrigger
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				twt.Type = typeVar
			}
		}
	}

	return nil
}

// TumblingWindowTriggerTypeProperties tumbling Window Trigger properties.
type TumblingWindowTriggerTypeProperties struct {
	// Frequency - The frequency of the time windows. Possible values include: 'TumblingWindowFrequencyMinute', 'TumblingWindowFrequencyHour'
	Frequency TumblingWindowFrequency `json:"frequency,omitempty"`
	// Interval - The interval of the time windows. The minimum interval allowed is 15 Minutes.
	Interval *int32 `json:"interval,omitempty"`
	// StartTime - 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.
	StartTime *date.Time `json:"startTime,omitempty"`
	// EndTime - 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.
	EndTime *date.Time `json:"endTime,omitempty"`
	// Delay - 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 (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	Delay interface{} `json:"delay,omitempty"`
	// MaxConcurrency - The max number of parallel time windows (ready for execution) for which a new run is triggered.
	MaxConcurrency *int32 `json:"maxConcurrency,omitempty"`
	// RetryPolicy - Retry policy that will be applied for failed pipeline runs.
	RetryPolicy *RetryPolicy `json:"retryPolicy,omitempty"`
}

// UntilActivity this activity executes inner activities until the specified boolean expression results to
// true or timeout is reached, whichever is earlier.
type UntilActivity struct {
	// UntilActivityTypeProperties - Until activity properties.
	*UntilActivityTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for UntilActivity.
func (ua UntilActivity) MarshalJSON() ([]byte, error) {
	ua.Type = TypeUntil
	objectMap := make(map[string]interface{})
	if ua.UntilActivityTypeProperties != nil {
		objectMap["typeProperties"] = ua.UntilActivityTypeProperties
	}
	if ua.Name != nil {
		objectMap["name"] = ua.Name
	}
	if ua.Description != nil {
		objectMap["description"] = ua.Description
	}
	if ua.DependsOn != nil {
		objectMap["dependsOn"] = ua.DependsOn
	}
	if ua.Type != "" {
		objectMap["type"] = ua.Type
	}
	for k, v := range ua.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return nil, false
}

// AsFilterActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsUntilActivity() (*UntilActivity, bool) {
	return &ua, true
}

// AsWaitActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return &ua, true
}

// AsActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for UntilActivity.
func (ua UntilActivity) AsBasicActivity() (BasicActivity, bool) {
	return &ua, true
}

// UnmarshalJSON is the custom unmarshaler for UntilActivity struct.
func (ua *UntilActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var untilActivityTypeProperties UntilActivityTypeProperties
				err = json.Unmarshal(*v, &untilActivityTypeProperties)
				if err != nil {
					return err
				}
				ua.UntilActivityTypeProperties = &untilActivityTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ua.AdditionalProperties == nil {
					ua.AdditionalProperties = make(map[string]interface{})
				}
				ua.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				ua.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				ua.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				ua.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ua.Type = typeVar
			}
		}
	}

	return nil
}

// UntilActivityTypeProperties until activity properties.
type UntilActivityTypeProperties struct {
	// Expression - An expression that would evaluate to Boolean. The loop will continue until this expression evaluates to true
	Expression *Expression `json:"expression,omitempty"`
	// Timeout - 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. Type: string (or Expression with resultType 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])).
	Timeout interface{} `json:"timeout,omitempty"`
	// Activities - List of activities to execute.
	Activities *[]BasicActivity `json:"activities,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for UntilActivityTypeProperties struct.
func (uatp *UntilActivityTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "expression":
			if v != nil {
				var expression Expression
				err = json.Unmarshal(*v, &expression)
				if err != nil {
					return err
				}
				uatp.Expression = &expression
			}
		case "timeout":
			if v != nil {
				var timeout interface{}
				err = json.Unmarshal(*v, &timeout)
				if err != nil {
					return err
				}
				uatp.Timeout = timeout
			}
		case "activities":
			if v != nil {
				activities, err := unmarshalBasicActivityArray(*v)
				if err != nil {
					return err
				}
				uatp.Activities = &activities
			}
		}
	}

	return nil
}

// UpdateIntegrationRuntimeNodeRequest update integration runtime node request.
type UpdateIntegrationRuntimeNodeRequest struct {
	// ConcurrentJobsLimit - The number of concurrent jobs permitted to run on the integration runtime node. Values between 1 and maxConcurrentJobs(inclusive) are allowed.
	ConcurrentJobsLimit *int32 `json:"concurrentJobsLimit,omitempty"`
}

// UpdateIntegrationRuntimeRequest update integration runtime request.
type UpdateIntegrationRuntimeRequest struct {
	// AutoUpdate - Enables or disables the auto-update feature of the self-hosted integration runtime. See https://go.microsoft.com/fwlink/?linkid=854189. Possible values include: 'On', 'Off'
	AutoUpdate IntegrationRuntimeAutoUpdate `json:"autoUpdate,omitempty"`
	// UpdateDelayOffset - The time offset (in hours) in the day, e.g., PT03H is 3 hours. The integration runtime auto update will happen on that time.
	UpdateDelayOffset *string `json:"updateDelayOffset,omitempty"`
}

// VerticaLinkedService vertica linked service.
type VerticaLinkedService struct {
	// VerticaLinkedServiceTypeProperties - Vertica linked service properties.
	*VerticaLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for VerticaLinkedService.
func (vls VerticaLinkedService) MarshalJSON() ([]byte, error) {
	vls.Type = TypeVertica
	objectMap := make(map[string]interface{})
	if vls.VerticaLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = vls.VerticaLinkedServiceTypeProperties
	}
	if vls.ConnectVia != nil {
		objectMap["connectVia"] = vls.ConnectVia
	}
	if vls.Description != nil {
		objectMap["description"] = vls.Description
	}
	if vls.Parameters != nil {
		objectMap["parameters"] = vls.Parameters
	}
	if vls.Annotations != nil {
		objectMap["annotations"] = vls.Annotations
	}
	if vls.Type != "" {
		objectMap["type"] = vls.Type
	}
	for k, v := range vls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return &vls, true
}

// AsZohoLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for VerticaLinkedService.
func (vls VerticaLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &vls, true
}

// UnmarshalJSON is the custom unmarshaler for VerticaLinkedService struct.
func (vls *VerticaLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var verticaLinkedServiceTypeProperties VerticaLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &verticaLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				vls.VerticaLinkedServiceTypeProperties = &verticaLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if vls.AdditionalProperties == nil {
					vls.AdditionalProperties = make(map[string]interface{})
				}
				vls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				vls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				vls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				vls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				vls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				vls.Type = typeVar
			}
		}
	}

	return nil
}

// VerticaLinkedServiceTypeProperties vertica linked service properties.
type VerticaLinkedServiceTypeProperties struct {
	// ConnectionString - An ODBC connection string. Type: string, SecureString or AzureKeyVaultSecretReference.
	ConnectionString interface{} `json:"connectionString,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// VerticaSource a copy activity Vertica source.
type VerticaSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for VerticaSource.
func (vs VerticaSource) MarshalJSON() ([]byte, error) {
	vs.Type = TypeVerticaSource
	objectMap := make(map[string]interface{})
	if vs.Query != nil {
		objectMap["query"] = vs.Query
	}
	if vs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = vs.SourceRetryCount
	}
	if vs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = vs.SourceRetryWait
	}
	if vs.Type != "" {
		objectMap["type"] = vs.Type
	}
	for k, v := range vs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsVerticaSource() (*VerticaSource, bool) {
	return &vs, true
}

// AsNetezzaSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for VerticaSource.
func (vs VerticaSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &vs, true
}

// UnmarshalJSON is the custom unmarshaler for VerticaSource struct.
func (vs *VerticaSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				vs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if vs.AdditionalProperties == nil {
					vs.AdditionalProperties = make(map[string]interface{})
				}
				vs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				vs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				vs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				vs.Type = typeVar
			}
		}
	}

	return nil
}

// VerticaTableDataset vertica dataset.
type VerticaTableDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for VerticaTableDataset.
func (vtd VerticaTableDataset) MarshalJSON() ([]byte, error) {
	vtd.Type = TypeVerticaTable
	objectMap := make(map[string]interface{})
	if vtd.Description != nil {
		objectMap["description"] = vtd.Description
	}
	if vtd.Structure != nil {
		objectMap["structure"] = vtd.Structure
	}
	if vtd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = vtd.LinkedServiceName
	}
	if vtd.Parameters != nil {
		objectMap["parameters"] = vtd.Parameters
	}
	if vtd.Annotations != nil {
		objectMap["annotations"] = vtd.Annotations
	}
	if vtd.Type != "" {
		objectMap["type"] = vtd.Type
	}
	for k, v := range vtd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return &vtd, true
}

// AsNetezzaTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for VerticaTableDataset.
func (vtd VerticaTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &vtd, true
}

// UnmarshalJSON is the custom unmarshaler for VerticaTableDataset struct.
func (vtd *VerticaTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if vtd.AdditionalProperties == nil {
					vtd.AdditionalProperties = make(map[string]interface{})
				}
				vtd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				vtd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				vtd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				vtd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				vtd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				vtd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				vtd.Type = typeVar
			}
		}
	}

	return nil
}

// WaitActivity this activity suspends pipeline execution for the specified interval.
type WaitActivity struct {
	// WaitActivityTypeProperties - Wait activity properties.
	*WaitActivityTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for WaitActivity.
func (wa WaitActivity) MarshalJSON() ([]byte, error) {
	wa.Type = TypeWait
	objectMap := make(map[string]interface{})
	if wa.WaitActivityTypeProperties != nil {
		objectMap["typeProperties"] = wa.WaitActivityTypeProperties
	}
	if wa.Name != nil {
		objectMap["name"] = wa.Name
	}
	if wa.Description != nil {
		objectMap["description"] = wa.Description
	}
	if wa.DependsOn != nil {
		objectMap["dependsOn"] = wa.DependsOn
	}
	if wa.Type != "" {
		objectMap["type"] = wa.Type
	}
	for k, v := range wa.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsWebActivity() (*WebActivity, bool) {
	return nil, false
}

// AsLookupActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return nil, false
}

// AsFilterActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsWaitActivity() (*WaitActivity, bool) {
	return &wa, true
}

// AsForEachActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return &wa, true
}

// AsActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for WaitActivity.
func (wa WaitActivity) AsBasicActivity() (BasicActivity, bool) {
	return &wa, true
}

// UnmarshalJSON is the custom unmarshaler for WaitActivity struct.
func (wa *WaitActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var waitActivityTypeProperties WaitActivityTypeProperties
				err = json.Unmarshal(*v, &waitActivityTypeProperties)
				if err != nil {
					return err
				}
				wa.WaitActivityTypeProperties = &waitActivityTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if wa.AdditionalProperties == nil {
					wa.AdditionalProperties = make(map[string]interface{})
				}
				wa.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				wa.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				wa.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				wa.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				wa.Type = typeVar
			}
		}
	}

	return nil
}

// WaitActivityTypeProperties wait activity properties.
type WaitActivityTypeProperties struct {
	// WaitTimeInSeconds - Duration in seconds.
	WaitTimeInSeconds *int32 `json:"waitTimeInSeconds,omitempty"`
}

// WebActivity web activity.
type WebActivity struct {
	// WebActivityTypeProperties - Web activity properties.
	*WebActivityTypeProperties `json:"typeProperties,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Policy - Activity policy.
	Policy *ActivityPolicy `json:"policy,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Name - Activity name.
	Name *string `json:"name,omitempty"`
	// Description - Activity description.
	Description *string `json:"description,omitempty"`
	// DependsOn - Activity depends on condition.
	DependsOn *[]ActivityDependency `json:"dependsOn,omitempty"`
	// Type - Possible values include: 'TypeActivity', 'TypeDatabricksNotebook', 'TypeDataLakeAnalyticsUSQL', 'TypeAzureMLUpdateResource', 'TypeAzureMLBatchExecution', 'TypeGetMetadata', 'TypeWebActivity', 'TypeLookup', 'TypeSQLServerStoredProcedure', 'TypeCustom', 'TypeExecuteSSISPackage', 'TypeHDInsightSpark', 'TypeHDInsightStreaming', 'TypeHDInsightMapReduce', 'TypeHDInsightPig', 'TypeHDInsightHive', 'TypeCopy', 'TypeExecution', 'TypeFilter', 'TypeUntil', 'TypeWait', 'TypeForEach', 'TypeIfCondition', 'TypeExecutePipeline', 'TypeContainer'
	Type TypeBasicActivity `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for WebActivity.
func (wa WebActivity) MarshalJSON() ([]byte, error) {
	wa.Type = TypeWebActivity
	objectMap := make(map[string]interface{})
	if wa.WebActivityTypeProperties != nil {
		objectMap["typeProperties"] = wa.WebActivityTypeProperties
	}
	if wa.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = wa.LinkedServiceName
	}
	if wa.Policy != nil {
		objectMap["policy"] = wa.Policy
	}
	if wa.Name != nil {
		objectMap["name"] = wa.Name
	}
	if wa.Description != nil {
		objectMap["description"] = wa.Description
	}
	if wa.DependsOn != nil {
		objectMap["dependsOn"] = wa.DependsOn
	}
	if wa.Type != "" {
		objectMap["type"] = wa.Type
	}
	for k, v := range wa.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsDatabricksNotebookActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsDatabricksNotebookActivity() (*DatabricksNotebookActivity, bool) {
	return nil, false
}

// AsDataLakeAnalyticsUSQLActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsDataLakeAnalyticsUSQLActivity() (*DataLakeAnalyticsUSQLActivity, bool) {
	return nil, false
}

// AsAzureMLUpdateResourceActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsAzureMLUpdateResourceActivity() (*AzureMLUpdateResourceActivity, bool) {
	return nil, false
}

// AsAzureMLBatchExecutionActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsAzureMLBatchExecutionActivity() (*AzureMLBatchExecutionActivity, bool) {
	return nil, false
}

// AsGetMetadataActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsGetMetadataActivity() (*GetMetadataActivity, bool) {
	return nil, false
}

// AsWebActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsWebActivity() (*WebActivity, bool) {
	return &wa, true
}

// AsLookupActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsLookupActivity() (*LookupActivity, bool) {
	return nil, false
}

// AsSQLServerStoredProcedureActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsSQLServerStoredProcedureActivity() (*SQLServerStoredProcedureActivity, bool) {
	return nil, false
}

// AsCustomActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsCustomActivity() (*CustomActivity, bool) {
	return nil, false
}

// AsExecuteSSISPackageActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsExecuteSSISPackageActivity() (*ExecuteSSISPackageActivity, bool) {
	return nil, false
}

// AsHDInsightSparkActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsHDInsightSparkActivity() (*HDInsightSparkActivity, bool) {
	return nil, false
}

// AsHDInsightStreamingActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsHDInsightStreamingActivity() (*HDInsightStreamingActivity, bool) {
	return nil, false
}

// AsHDInsightMapReduceActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsHDInsightMapReduceActivity() (*HDInsightMapReduceActivity, bool) {
	return nil, false
}

// AsHDInsightPigActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsHDInsightPigActivity() (*HDInsightPigActivity, bool) {
	return nil, false
}

// AsHDInsightHiveActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsHDInsightHiveActivity() (*HDInsightHiveActivity, bool) {
	return nil, false
}

// AsCopyActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsCopyActivity() (*CopyActivity, bool) {
	return nil, false
}

// AsExecutionActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsExecutionActivity() (*ExecutionActivity, bool) {
	return nil, false
}

// AsBasicExecutionActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsBasicExecutionActivity() (BasicExecutionActivity, bool) {
	return &wa, true
}

// AsFilterActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsFilterActivity() (*FilterActivity, bool) {
	return nil, false
}

// AsUntilActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsUntilActivity() (*UntilActivity, bool) {
	return nil, false
}

// AsWaitActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsWaitActivity() (*WaitActivity, bool) {
	return nil, false
}

// AsForEachActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsForEachActivity() (*ForEachActivity, bool) {
	return nil, false
}

// AsIfConditionActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsIfConditionActivity() (*IfConditionActivity, bool) {
	return nil, false
}

// AsExecutePipelineActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsExecutePipelineActivity() (*ExecutePipelineActivity, bool) {
	return nil, false
}

// AsControlActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsControlActivity() (*ControlActivity, bool) {
	return nil, false
}

// AsBasicControlActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsBasicControlActivity() (BasicControlActivity, bool) {
	return nil, false
}

// AsActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsActivity() (*Activity, bool) {
	return nil, false
}

// AsBasicActivity is the BasicActivity implementation for WebActivity.
func (wa WebActivity) AsBasicActivity() (BasicActivity, bool) {
	return &wa, true
}

// UnmarshalJSON is the custom unmarshaler for WebActivity struct.
func (wa *WebActivity) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var webActivityTypeProperties WebActivityTypeProperties
				err = json.Unmarshal(*v, &webActivityTypeProperties)
				if err != nil {
					return err
				}
				wa.WebActivityTypeProperties = &webActivityTypeProperties
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				wa.LinkedServiceName = &linkedServiceName
			}
		case "policy":
			if v != nil {
				var policy ActivityPolicy
				err = json.Unmarshal(*v, &policy)
				if err != nil {
					return err
				}
				wa.Policy = &policy
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if wa.AdditionalProperties == nil {
					wa.AdditionalProperties = make(map[string]interface{})
				}
				wa.AdditionalProperties[k] = additionalProperties
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				wa.Name = &name
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				wa.Description = &description
			}
		case "dependsOn":
			if v != nil {
				var dependsOn []ActivityDependency
				err = json.Unmarshal(*v, &dependsOn)
				if err != nil {
					return err
				}
				wa.DependsOn = &dependsOn
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicActivity
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				wa.Type = typeVar
			}
		}
	}

	return nil
}

// WebActivityAuthentication web activity authentication properties.
type WebActivityAuthentication struct {
	// Type - Web activity authentication (Basic/ClientCertificate/MSI)
	Type *string `json:"type,omitempty"`
	// Pfx - Base64-encoded contents of a PFX file.
	Pfx *SecureString `json:"pfx,omitempty"`
	// Username - Web activity authentication user name for basic authentication.
	Username *string `json:"username,omitempty"`
	// Password - Password for the PFX file or basic authentication.
	Password *SecureString `json:"password,omitempty"`
	// Resource - Resource for which Azure Auth token will be requested when using MSI Authentication.
	Resource *string `json:"resource,omitempty"`
}

// WebActivityTypeProperties web activity type properties.
type WebActivityTypeProperties struct {
	// Method - Rest API method for target endpoint. Possible values include: 'GET', 'POST', 'PUT', 'DELETE'
	Method WebActivityMethod `json:"method,omitempty"`
	// URL - Web activity target endpoint and path. Type: string (or Expression with resultType string).
	URL interface{} `json:"url,omitempty"`
	// Headers - 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", "Content-Type": "application/json" }. Type: string (or Expression with resultType string).
	Headers interface{} `json:"headers,omitempty"`
	// Body - 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 string).
	Body interface{} `json:"body,omitempty"`
	// Authentication - Authentication method used for calling the endpoint.
	Authentication *WebActivityAuthentication `json:"authentication,omitempty"`
	// Datasets - List of datasets passed to web endpoint.
	Datasets *[]DatasetReference `json:"datasets,omitempty"`
	// LinkedServices - List of linked services passed to web endpoint.
	LinkedServices *[]LinkedServiceReference `json:"linkedServices,omitempty"`
}

// WebAnonymousAuthentication a WebLinkedService that uses anonymous authentication to communicate with an
// HTTP endpoint.
type WebAnonymousAuthentication struct {
	// URL - The URL of the web service endpoint, e.g. http://www.microsoft.com . Type: string (or Expression with resultType string).
	URL interface{} `json:"url,omitempty"`
	// AuthenticationType - Possible values include: 'AuthenticationTypeWebLinkedServiceTypeProperties', 'AuthenticationTypeClientCertificate', 'AuthenticationTypeBasic', 'AuthenticationTypeAnonymous'
	AuthenticationType AuthenticationType `json:"authenticationType,omitempty"`
}

// MarshalJSON is the custom marshaler for WebAnonymousAuthentication.
func (waa WebAnonymousAuthentication) MarshalJSON() ([]byte, error) {
	waa.AuthenticationType = AuthenticationTypeAnonymous
	objectMap := make(map[string]interface{})
	if waa.URL != nil {
		objectMap["url"] = waa.URL
	}
	if waa.AuthenticationType != "" {
		objectMap["authenticationType"] = waa.AuthenticationType
	}
	return json.Marshal(objectMap)
}

// AsWebClientCertificateAuthentication is the BasicWebLinkedServiceTypeProperties implementation for WebAnonymousAuthentication.
func (waa WebAnonymousAuthentication) AsWebClientCertificateAuthentication() (*WebClientCertificateAuthentication, bool) {
	return nil, false
}

// AsWebBasicAuthentication is the BasicWebLinkedServiceTypeProperties implementation for WebAnonymousAuthentication.
func (waa WebAnonymousAuthentication) AsWebBasicAuthentication() (*WebBasicAuthentication, bool) {
	return nil, false
}

// AsWebAnonymousAuthentication is the BasicWebLinkedServiceTypeProperties implementation for WebAnonymousAuthentication.
func (waa WebAnonymousAuthentication) AsWebAnonymousAuthentication() (*WebAnonymousAuthentication, bool) {
	return &waa, true
}

// AsWebLinkedServiceTypeProperties is the BasicWebLinkedServiceTypeProperties implementation for WebAnonymousAuthentication.
func (waa WebAnonymousAuthentication) AsWebLinkedServiceTypeProperties() (*WebLinkedServiceTypeProperties, bool) {
	return nil, false
}

// AsBasicWebLinkedServiceTypeProperties is the BasicWebLinkedServiceTypeProperties implementation for WebAnonymousAuthentication.
func (waa WebAnonymousAuthentication) AsBasicWebLinkedServiceTypeProperties() (BasicWebLinkedServiceTypeProperties, bool) {
	return &waa, true
}

// WebBasicAuthentication a WebLinkedService that uses basic authentication to communicate with an HTTP
// endpoint.
type WebBasicAuthentication struct {
	// Username - User name for Basic authentication. Type: string (or Expression with resultType string).
	Username interface{} `json:"username,omitempty"`
	// Password - The password for Basic authentication.
	Password BasicSecretBase `json:"password,omitempty"`
	// URL - The URL of the web service endpoint, e.g. http://www.microsoft.com . Type: string (or Expression with resultType string).
	URL interface{} `json:"url,omitempty"`
	// AuthenticationType - Possible values include: 'AuthenticationTypeWebLinkedServiceTypeProperties', 'AuthenticationTypeClientCertificate', 'AuthenticationTypeBasic', 'AuthenticationTypeAnonymous'
	AuthenticationType AuthenticationType `json:"authenticationType,omitempty"`
}

// MarshalJSON is the custom marshaler for WebBasicAuthentication.
func (wba WebBasicAuthentication) MarshalJSON() ([]byte, error) {
	wba.AuthenticationType = AuthenticationTypeBasic
	objectMap := make(map[string]interface{})
	if wba.Username != nil {
		objectMap["username"] = wba.Username
	}
	objectMap["password"] = wba.Password
	if wba.URL != nil {
		objectMap["url"] = wba.URL
	}
	if wba.AuthenticationType != "" {
		objectMap["authenticationType"] = wba.AuthenticationType
	}
	return json.Marshal(objectMap)
}

// AsWebClientCertificateAuthentication is the BasicWebLinkedServiceTypeProperties implementation for WebBasicAuthentication.
func (wba WebBasicAuthentication) AsWebClientCertificateAuthentication() (*WebClientCertificateAuthentication, bool) {
	return nil, false
}

// AsWebBasicAuthentication is the BasicWebLinkedServiceTypeProperties implementation for WebBasicAuthentication.
func (wba WebBasicAuthentication) AsWebBasicAuthentication() (*WebBasicAuthentication, bool) {
	return &wba, true
}

// AsWebAnonymousAuthentication is the BasicWebLinkedServiceTypeProperties implementation for WebBasicAuthentication.
func (wba WebBasicAuthentication) AsWebAnonymousAuthentication() (*WebAnonymousAuthentication, bool) {
	return nil, false
}

// AsWebLinkedServiceTypeProperties is the BasicWebLinkedServiceTypeProperties implementation for WebBasicAuthentication.
func (wba WebBasicAuthentication) AsWebLinkedServiceTypeProperties() (*WebLinkedServiceTypeProperties, bool) {
	return nil, false
}

// AsBasicWebLinkedServiceTypeProperties is the BasicWebLinkedServiceTypeProperties implementation for WebBasicAuthentication.
func (wba WebBasicAuthentication) AsBasicWebLinkedServiceTypeProperties() (BasicWebLinkedServiceTypeProperties, bool) {
	return &wba, true
}

// UnmarshalJSON is the custom unmarshaler for WebBasicAuthentication struct.
func (wba *WebBasicAuthentication) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "username":
			if v != nil {
				var username interface{}
				err = json.Unmarshal(*v, &username)
				if err != nil {
					return err
				}
				wba.Username = username
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				wba.Password = password
			}
		case "url":
			if v != nil {
				var URL interface{}
				err = json.Unmarshal(*v, &URL)
				if err != nil {
					return err
				}
				wba.URL = URL
			}
		case "authenticationType":
			if v != nil {
				var authenticationType AuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				wba.AuthenticationType = authenticationType
			}
		}
	}

	return nil
}

// WebClientCertificateAuthentication a WebLinkedService that uses client certificate based authentication
// to communicate with an HTTP endpoint. This scheme follows mutual authentication; the server must also
// provide valid credentials to the client.
type WebClientCertificateAuthentication struct {
	// Pfx - Base64-encoded contents of a PFX file.
	Pfx BasicSecretBase `json:"pfx,omitempty"`
	// Password - Password for the PFX file.
	Password BasicSecretBase `json:"password,omitempty"`
	// URL - The URL of the web service endpoint, e.g. http://www.microsoft.com . Type: string (or Expression with resultType string).
	URL interface{} `json:"url,omitempty"`
	// AuthenticationType - Possible values include: 'AuthenticationTypeWebLinkedServiceTypeProperties', 'AuthenticationTypeClientCertificate', 'AuthenticationTypeBasic', 'AuthenticationTypeAnonymous'
	AuthenticationType AuthenticationType `json:"authenticationType,omitempty"`
}

// MarshalJSON is the custom marshaler for WebClientCertificateAuthentication.
func (wcca WebClientCertificateAuthentication) MarshalJSON() ([]byte, error) {
	wcca.AuthenticationType = AuthenticationTypeClientCertificate
	objectMap := make(map[string]interface{})
	objectMap["pfx"] = wcca.Pfx
	objectMap["password"] = wcca.Password
	if wcca.URL != nil {
		objectMap["url"] = wcca.URL
	}
	if wcca.AuthenticationType != "" {
		objectMap["authenticationType"] = wcca.AuthenticationType
	}
	return json.Marshal(objectMap)
}

// AsWebClientCertificateAuthentication is the BasicWebLinkedServiceTypeProperties implementation for WebClientCertificateAuthentication.
func (wcca WebClientCertificateAuthentication) AsWebClientCertificateAuthentication() (*WebClientCertificateAuthentication, bool) {
	return &wcca, true
}

// AsWebBasicAuthentication is the BasicWebLinkedServiceTypeProperties implementation for WebClientCertificateAuthentication.
func (wcca WebClientCertificateAuthentication) AsWebBasicAuthentication() (*WebBasicAuthentication, bool) {
	return nil, false
}

// AsWebAnonymousAuthentication is the BasicWebLinkedServiceTypeProperties implementation for WebClientCertificateAuthentication.
func (wcca WebClientCertificateAuthentication) AsWebAnonymousAuthentication() (*WebAnonymousAuthentication, bool) {
	return nil, false
}

// AsWebLinkedServiceTypeProperties is the BasicWebLinkedServiceTypeProperties implementation for WebClientCertificateAuthentication.
func (wcca WebClientCertificateAuthentication) AsWebLinkedServiceTypeProperties() (*WebLinkedServiceTypeProperties, bool) {
	return nil, false
}

// AsBasicWebLinkedServiceTypeProperties is the BasicWebLinkedServiceTypeProperties implementation for WebClientCertificateAuthentication.
func (wcca WebClientCertificateAuthentication) AsBasicWebLinkedServiceTypeProperties() (BasicWebLinkedServiceTypeProperties, bool) {
	return &wcca, true
}

// UnmarshalJSON is the custom unmarshaler for WebClientCertificateAuthentication struct.
func (wcca *WebClientCertificateAuthentication) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "pfx":
			if v != nil {
				pfx, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				wcca.Pfx = pfx
			}
		case "password":
			if v != nil {
				password, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				wcca.Password = password
			}
		case "url":
			if v != nil {
				var URL interface{}
				err = json.Unmarshal(*v, &URL)
				if err != nil {
					return err
				}
				wcca.URL = URL
			}
		case "authenticationType":
			if v != nil {
				var authenticationType AuthenticationType
				err = json.Unmarshal(*v, &authenticationType)
				if err != nil {
					return err
				}
				wcca.AuthenticationType = authenticationType
			}
		}
	}

	return nil
}

// WebLinkedService web linked service.
type WebLinkedService struct {
	// TypeProperties - Web linked service properties.
	TypeProperties BasicWebLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for WebLinkedService.
func (wls WebLinkedService) MarshalJSON() ([]byte, error) {
	wls.Type = TypeWeb
	objectMap := make(map[string]interface{})
	objectMap["typeProperties"] = wls.TypeProperties
	if wls.ConnectVia != nil {
		objectMap["connectVia"] = wls.ConnectVia
	}
	if wls.Description != nil {
		objectMap["description"] = wls.Description
	}
	if wls.Parameters != nil {
		objectMap["parameters"] = wls.Parameters
	}
	if wls.Annotations != nil {
		objectMap["annotations"] = wls.Annotations
	}
	if wls.Type != "" {
		objectMap["type"] = wls.Type
	}
	for k, v := range wls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return &wls, true
}

// AsODataLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for WebLinkedService.
func (wls WebLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &wls, true
}

// UnmarshalJSON is the custom unmarshaler for WebLinkedService struct.
func (wls *WebLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				typeProperties, err := unmarshalBasicWebLinkedServiceTypeProperties(*v)
				if err != nil {
					return err
				}
				wls.TypeProperties = typeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if wls.AdditionalProperties == nil {
					wls.AdditionalProperties = make(map[string]interface{})
				}
				wls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				wls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				wls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				wls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				wls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				wls.Type = typeVar
			}
		}
	}

	return nil
}

// BasicWebLinkedServiceTypeProperties base definition of WebLinkedServiceTypeProperties, this typeProperties is
// polymorphic based on authenticationType, so not flattened in SDK models.
type BasicWebLinkedServiceTypeProperties interface {
	AsWebClientCertificateAuthentication() (*WebClientCertificateAuthentication, bool)
	AsWebBasicAuthentication() (*WebBasicAuthentication, bool)
	AsWebAnonymousAuthentication() (*WebAnonymousAuthentication, bool)
	AsWebLinkedServiceTypeProperties() (*WebLinkedServiceTypeProperties, bool)
}

// WebLinkedServiceTypeProperties base definition of WebLinkedServiceTypeProperties, this typeProperties is
// polymorphic based on authenticationType, so not flattened in SDK models.
type WebLinkedServiceTypeProperties struct {
	// URL - The URL of the web service endpoint, e.g. http://www.microsoft.com . Type: string (or Expression with resultType string).
	URL interface{} `json:"url,omitempty"`
	// AuthenticationType - Possible values include: 'AuthenticationTypeWebLinkedServiceTypeProperties', 'AuthenticationTypeClientCertificate', 'AuthenticationTypeBasic', 'AuthenticationTypeAnonymous'
	AuthenticationType AuthenticationType `json:"authenticationType,omitempty"`
}

func unmarshalBasicWebLinkedServiceTypeProperties(body []byte) (BasicWebLinkedServiceTypeProperties, error) {
	var m map[string]interface{}
	err := json.Unmarshal(body, &m)
	if err != nil {
		return nil, err
	}

	switch m["authenticationType"] {
	case string(AuthenticationTypeClientCertificate):
		var wcca WebClientCertificateAuthentication
		err := json.Unmarshal(body, &wcca)
		return wcca, err
	case string(AuthenticationTypeBasic):
		var wba WebBasicAuthentication
		err := json.Unmarshal(body, &wba)
		return wba, err
	case string(AuthenticationTypeAnonymous):
		var waa WebAnonymousAuthentication
		err := json.Unmarshal(body, &waa)
		return waa, err
	default:
		var wlstp WebLinkedServiceTypeProperties
		err := json.Unmarshal(body, &wlstp)
		return wlstp, err
	}
}
func unmarshalBasicWebLinkedServiceTypePropertiesArray(body []byte) ([]BasicWebLinkedServiceTypeProperties, error) {
	var rawMessages []*json.RawMessage
	err := json.Unmarshal(body, &rawMessages)
	if err != nil {
		return nil, err
	}

	wlstpArray := make([]BasicWebLinkedServiceTypeProperties, len(rawMessages))

	for index, rawMessage := range rawMessages {
		wlstp, err := unmarshalBasicWebLinkedServiceTypeProperties(*rawMessage)
		if err != nil {
			return nil, err
		}
		wlstpArray[index] = wlstp
	}
	return wlstpArray, nil
}

// MarshalJSON is the custom marshaler for WebLinkedServiceTypeProperties.
func (wlstp WebLinkedServiceTypeProperties) MarshalJSON() ([]byte, error) {
	wlstp.AuthenticationType = AuthenticationTypeWebLinkedServiceTypeProperties
	objectMap := make(map[string]interface{})
	if wlstp.URL != nil {
		objectMap["url"] = wlstp.URL
	}
	if wlstp.AuthenticationType != "" {
		objectMap["authenticationType"] = wlstp.AuthenticationType
	}
	return json.Marshal(objectMap)
}

// AsWebClientCertificateAuthentication is the BasicWebLinkedServiceTypeProperties implementation for WebLinkedServiceTypeProperties.
func (wlstp WebLinkedServiceTypeProperties) AsWebClientCertificateAuthentication() (*WebClientCertificateAuthentication, bool) {
	return nil, false
}

// AsWebBasicAuthentication is the BasicWebLinkedServiceTypeProperties implementation for WebLinkedServiceTypeProperties.
func (wlstp WebLinkedServiceTypeProperties) AsWebBasicAuthentication() (*WebBasicAuthentication, bool) {
	return nil, false
}

// AsWebAnonymousAuthentication is the BasicWebLinkedServiceTypeProperties implementation for WebLinkedServiceTypeProperties.
func (wlstp WebLinkedServiceTypeProperties) AsWebAnonymousAuthentication() (*WebAnonymousAuthentication, bool) {
	return nil, false
}

// AsWebLinkedServiceTypeProperties is the BasicWebLinkedServiceTypeProperties implementation for WebLinkedServiceTypeProperties.
func (wlstp WebLinkedServiceTypeProperties) AsWebLinkedServiceTypeProperties() (*WebLinkedServiceTypeProperties, bool) {
	return &wlstp, true
}

// AsBasicWebLinkedServiceTypeProperties is the BasicWebLinkedServiceTypeProperties implementation for WebLinkedServiceTypeProperties.
func (wlstp WebLinkedServiceTypeProperties) AsBasicWebLinkedServiceTypeProperties() (BasicWebLinkedServiceTypeProperties, bool) {
	return &wlstp, true
}

// WebSource a copy activity source for web page table.
type WebSource struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for WebSource.
func (ws WebSource) MarshalJSON() ([]byte, error) {
	ws.Type = TypeWebSource
	objectMap := make(map[string]interface{})
	if ws.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = ws.SourceRetryCount
	}
	if ws.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = ws.SourceRetryWait
	}
	if ws.Type != "" {
		objectMap["type"] = ws.Type
	}
	for k, v := range ws.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsWebSource() (*WebSource, bool) {
	return &ws, true
}

// AsOracleSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for WebSource.
func (ws WebSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &ws, true
}

// UnmarshalJSON is the custom unmarshaler for WebSource struct.
func (ws *WebSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if ws.AdditionalProperties == nil {
					ws.AdditionalProperties = make(map[string]interface{})
				}
				ws.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				ws.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				ws.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				ws.Type = typeVar
			}
		}
	}

	return nil
}

// WebTableDataset the dataset points to a HTML table in the web page.
type WebTableDataset struct {
	// WebTableDatasetTypeProperties - Web table dataset properties.
	*WebTableDatasetTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for WebTableDataset.
func (wtd WebTableDataset) MarshalJSON() ([]byte, error) {
	wtd.Type = TypeWebTable
	objectMap := make(map[string]interface{})
	if wtd.WebTableDatasetTypeProperties != nil {
		objectMap["typeProperties"] = wtd.WebTableDatasetTypeProperties
	}
	if wtd.Description != nil {
		objectMap["description"] = wtd.Description
	}
	if wtd.Structure != nil {
		objectMap["structure"] = wtd.Structure
	}
	if wtd.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = wtd.LinkedServiceName
	}
	if wtd.Parameters != nil {
		objectMap["parameters"] = wtd.Parameters
	}
	if wtd.Annotations != nil {
		objectMap["annotations"] = wtd.Annotations
	}
	if wtd.Type != "" {
		objectMap["type"] = wtd.Type
	}
	for k, v := range wtd.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return &wtd, true
}

// AsSQLServerTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for WebTableDataset.
func (wtd WebTableDataset) AsBasicDataset() (BasicDataset, bool) {
	return &wtd, true
}

// UnmarshalJSON is the custom unmarshaler for WebTableDataset struct.
func (wtd *WebTableDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var webTableDatasetTypeProperties WebTableDatasetTypeProperties
				err = json.Unmarshal(*v, &webTableDatasetTypeProperties)
				if err != nil {
					return err
				}
				wtd.WebTableDatasetTypeProperties = &webTableDatasetTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if wtd.AdditionalProperties == nil {
					wtd.AdditionalProperties = make(map[string]interface{})
				}
				wtd.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				wtd.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				wtd.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				wtd.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				wtd.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				wtd.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				wtd.Type = typeVar
			}
		}
	}

	return nil
}

// WebTableDatasetTypeProperties web table dataset properties.
type WebTableDatasetTypeProperties struct {
	// Index - The zero-based index of the table in the web page. Type: integer (or Expression with resultType integer), minimum: 0.
	Index interface{} `json:"index,omitempty"`
	// Path - The relative URL to the web page from the linked service URL. Type: string (or Expression with resultType string).
	Path interface{} `json:"path,omitempty"`
}

// XeroLinkedService xero Service linked service.
type XeroLinkedService struct {
	// XeroLinkedServiceTypeProperties - Xero Service linked service properties.
	*XeroLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for XeroLinkedService.
func (xls XeroLinkedService) MarshalJSON() ([]byte, error) {
	xls.Type = TypeXero
	objectMap := make(map[string]interface{})
	if xls.XeroLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = xls.XeroLinkedServiceTypeProperties
	}
	if xls.ConnectVia != nil {
		objectMap["connectVia"] = xls.ConnectVia
	}
	if xls.Description != nil {
		objectMap["description"] = xls.Description
	}
	if xls.Parameters != nil {
		objectMap["parameters"] = xls.Parameters
	}
	if xls.Annotations != nil {
		objectMap["annotations"] = xls.Annotations
	}
	if xls.Type != "" {
		objectMap["type"] = xls.Type
	}
	for k, v := range xls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return nil, false
}

// AsXeroLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return &xls, true
}

// AsSquareLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for XeroLinkedService.
func (xls XeroLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &xls, true
}

// UnmarshalJSON is the custom unmarshaler for XeroLinkedService struct.
func (xls *XeroLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var xeroLinkedServiceTypeProperties XeroLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &xeroLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				xls.XeroLinkedServiceTypeProperties = &xeroLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if xls.AdditionalProperties == nil {
					xls.AdditionalProperties = make(map[string]interface{})
				}
				xls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				xls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				xls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				xls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				xls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				xls.Type = typeVar
			}
		}
	}

	return nil
}

// XeroLinkedServiceTypeProperties xero Service linked service properties.
type XeroLinkedServiceTypeProperties struct {
	// Host - The endpoint of the Xero server. (i.e. api.xero.com)
	Host interface{} `json:"host,omitempty"`
	// ConsumerKey - The consumer key associated with the Xero application.
	ConsumerKey BasicSecretBase `json:"consumerKey,omitempty"`
	// PrivateKey - 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 the Unix line endings(
	// ).
	PrivateKey BasicSecretBase `json:"privateKey,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true.
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for XeroLinkedServiceTypeProperties struct.
func (xlstp *XeroLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "host":
			if v != nil {
				var host interface{}
				err = json.Unmarshal(*v, &host)
				if err != nil {
					return err
				}
				xlstp.Host = host
			}
		case "consumerKey":
			if v != nil {
				consumerKey, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				xlstp.ConsumerKey = consumerKey
			}
		case "privateKey":
			if v != nil {
				privateKey, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				xlstp.PrivateKey = privateKey
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				xlstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				xlstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				xlstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				xlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// XeroObjectDataset xero Service dataset.
type XeroObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for XeroObjectDataset.
func (xod XeroObjectDataset) MarshalJSON() ([]byte, error) {
	xod.Type = TypeXeroObject
	objectMap := make(map[string]interface{})
	if xod.Description != nil {
		objectMap["description"] = xod.Description
	}
	if xod.Structure != nil {
		objectMap["structure"] = xod.Structure
	}
	if xod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = xod.LinkedServiceName
	}
	if xod.Parameters != nil {
		objectMap["parameters"] = xod.Parameters
	}
	if xod.Annotations != nil {
		objectMap["annotations"] = xod.Annotations
	}
	if xod.Type != "" {
		objectMap["type"] = xod.Type
	}
	for k, v := range xod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return nil, false
}

// AsXeroObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return &xod, true
}

// AsSquareObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for XeroObjectDataset.
func (xod XeroObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &xod, true
}

// UnmarshalJSON is the custom unmarshaler for XeroObjectDataset struct.
func (xod *XeroObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if xod.AdditionalProperties == nil {
					xod.AdditionalProperties = make(map[string]interface{})
				}
				xod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				xod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				xod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				xod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				xod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				xod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				xod.Type = typeVar
			}
		}
	}

	return nil
}

// XeroSource a copy activity Xero Service source.
type XeroSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for XeroSource.
func (xs XeroSource) MarshalJSON() ([]byte, error) {
	xs.Type = TypeXeroSource
	objectMap := make(map[string]interface{})
	if xs.Query != nil {
		objectMap["query"] = xs.Query
	}
	if xs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = xs.SourceRetryCount
	}
	if xs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = xs.SourceRetryWait
	}
	if xs.Type != "" {
		objectMap["type"] = xs.Type
	}
	for k, v := range xs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsZohoSource() (*ZohoSource, bool) {
	return nil, false
}

// AsXeroSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsXeroSource() (*XeroSource, bool) {
	return &xs, true
}

// AsSquareSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for XeroSource.
func (xs XeroSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &xs, true
}

// UnmarshalJSON is the custom unmarshaler for XeroSource struct.
func (xs *XeroSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				xs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if xs.AdditionalProperties == nil {
					xs.AdditionalProperties = make(map[string]interface{})
				}
				xs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				xs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				xs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				xs.Type = typeVar
			}
		}
	}

	return nil
}

// ZohoLinkedService zoho server linked service.
type ZohoLinkedService struct {
	// ZohoLinkedServiceTypeProperties - Zoho server linked service properties.
	*ZohoLinkedServiceTypeProperties `json:"typeProperties,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// ConnectVia - The integration runtime reference.
	ConnectVia *IntegrationRuntimeReference `json:"connectVia,omitempty"`
	// Description - Linked service description.
	Description *string `json:"description,omitempty"`
	// Parameters - Parameters for linked service.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeLinkedService', 'TypeResponsys', 'TypeAzureDatabricks', 'TypeAzureDataLakeAnalytics', 'TypeHDInsightOnDemand', 'TypeSalesforceMarketingCloud', 'TypeNetezza', 'TypeVertica', 'TypeZoho', 'TypeXero', 'TypeSquare', 'TypeSpark', 'TypeShopify', 'TypeServiceNow', 'TypeQuickBooks', 'TypePresto', 'TypePhoenix', 'TypePaypal', 'TypeMarketo', 'TypeMariaDB', 'TypeMagento', 'TypeJira', 'TypeImpala', 'TypeHubspot', 'TypeHive', 'TypeHBase', 'TypeGreenplum', 'TypeGoogleBigQuery', 'TypeEloqua', 'TypeDrill', 'TypeCouchbase', 'TypeConcur', 'TypeAzurePostgreSQL', 'TypeAmazonMWS', 'TypeSapHana', 'TypeSapBW', 'TypeSftp', 'TypeFtpServer', 'TypeHTTPServer', 'TypeAzureSearch', 'TypeCustomDataSource', 'TypeAmazonRedshift', 'TypeAmazonS3', 'TypeSapEcc', 'TypeSapCloudForCustomer', 'TypeSalesforce', 'TypeAzureDataLakeStore', 'TypeMongoDb', 'TypeCassandra', 'TypeWeb', 'TypeOData', 'TypeHdfs', 'TypeOdbc', 'TypeAzureML', 'TypeTeradata', 'TypeDb2', 'TypeSybase', 'TypePostgreSQL', 'TypeMySQL', 'TypeAzureMySQL', 'TypeOracle', 'TypeFileServer', 'TypeHDInsight', 'TypeDynamics', 'TypeCosmosDb', 'TypeAzureKeyVault', 'TypeAzureBatch', 'TypeAzureSQLDatabase', 'TypeSQLServer', 'TypeAzureSQLDW', 'TypeAzureStorage'
	Type TypeBasicLinkedService `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ZohoLinkedService.
func (zls ZohoLinkedService) MarshalJSON() ([]byte, error) {
	zls.Type = TypeZoho
	objectMap := make(map[string]interface{})
	if zls.ZohoLinkedServiceTypeProperties != nil {
		objectMap["typeProperties"] = zls.ZohoLinkedServiceTypeProperties
	}
	if zls.ConnectVia != nil {
		objectMap["connectVia"] = zls.ConnectVia
	}
	if zls.Description != nil {
		objectMap["description"] = zls.Description
	}
	if zls.Parameters != nil {
		objectMap["parameters"] = zls.Parameters
	}
	if zls.Annotations != nil {
		objectMap["annotations"] = zls.Annotations
	}
	if zls.Type != "" {
		objectMap["type"] = zls.Type
	}
	for k, v := range zls.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsResponsysLinkedService() (*ResponsysLinkedService, bool) {
	return nil, false
}

// AsAzureDatabricksLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAzureDatabricksLinkedService() (*AzureDatabricksLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeAnalyticsLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAzureDataLakeAnalyticsLinkedService() (*AzureDataLakeAnalyticsLinkedService, bool) {
	return nil, false
}

// AsHDInsightOnDemandLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsHDInsightOnDemandLinkedService() (*HDInsightOnDemandLinkedService, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsSalesforceMarketingCloudLinkedService() (*SalesforceMarketingCloudLinkedService, bool) {
	return nil, false
}

// AsNetezzaLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsNetezzaLinkedService() (*NetezzaLinkedService, bool) {
	return nil, false
}

// AsVerticaLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsVerticaLinkedService() (*VerticaLinkedService, bool) {
	return nil, false
}

// AsZohoLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsZohoLinkedService() (*ZohoLinkedService, bool) {
	return &zls, true
}

// AsXeroLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsXeroLinkedService() (*XeroLinkedService, bool) {
	return nil, false
}

// AsSquareLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsSquareLinkedService() (*SquareLinkedService, bool) {
	return nil, false
}

// AsSparkLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsSparkLinkedService() (*SparkLinkedService, bool) {
	return nil, false
}

// AsShopifyLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsShopifyLinkedService() (*ShopifyLinkedService, bool) {
	return nil, false
}

// AsServiceNowLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsServiceNowLinkedService() (*ServiceNowLinkedService, bool) {
	return nil, false
}

// AsQuickBooksLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsQuickBooksLinkedService() (*QuickBooksLinkedService, bool) {
	return nil, false
}

// AsPrestoLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsPrestoLinkedService() (*PrestoLinkedService, bool) {
	return nil, false
}

// AsPhoenixLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsPhoenixLinkedService() (*PhoenixLinkedService, bool) {
	return nil, false
}

// AsPaypalLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsPaypalLinkedService() (*PaypalLinkedService, bool) {
	return nil, false
}

// AsMarketoLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsMarketoLinkedService() (*MarketoLinkedService, bool) {
	return nil, false
}

// AsMariaDBLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsMariaDBLinkedService() (*MariaDBLinkedService, bool) {
	return nil, false
}

// AsMagentoLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsMagentoLinkedService() (*MagentoLinkedService, bool) {
	return nil, false
}

// AsJiraLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsJiraLinkedService() (*JiraLinkedService, bool) {
	return nil, false
}

// AsImpalaLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsImpalaLinkedService() (*ImpalaLinkedService, bool) {
	return nil, false
}

// AsHubspotLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsHubspotLinkedService() (*HubspotLinkedService, bool) {
	return nil, false
}

// AsHiveLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsHiveLinkedService() (*HiveLinkedService, bool) {
	return nil, false
}

// AsHBaseLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsHBaseLinkedService() (*HBaseLinkedService, bool) {
	return nil, false
}

// AsGreenplumLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsGreenplumLinkedService() (*GreenplumLinkedService, bool) {
	return nil, false
}

// AsGoogleBigQueryLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsGoogleBigQueryLinkedService() (*GoogleBigQueryLinkedService, bool) {
	return nil, false
}

// AsEloquaLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsEloquaLinkedService() (*EloquaLinkedService, bool) {
	return nil, false
}

// AsDrillLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsDrillLinkedService() (*DrillLinkedService, bool) {
	return nil, false
}

// AsCouchbaseLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsCouchbaseLinkedService() (*CouchbaseLinkedService, bool) {
	return nil, false
}

// AsConcurLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsConcurLinkedService() (*ConcurLinkedService, bool) {
	return nil, false
}

// AsAzurePostgreSQLLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAzurePostgreSQLLinkedService() (*AzurePostgreSQLLinkedService, bool) {
	return nil, false
}

// AsAmazonMWSLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAmazonMWSLinkedService() (*AmazonMWSLinkedService, bool) {
	return nil, false
}

// AsSapHanaLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsSapHanaLinkedService() (*SapHanaLinkedService, bool) {
	return nil, false
}

// AsSapBWLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsSapBWLinkedService() (*SapBWLinkedService, bool) {
	return nil, false
}

// AsSftpServerLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsSftpServerLinkedService() (*SftpServerLinkedService, bool) {
	return nil, false
}

// AsFtpServerLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsFtpServerLinkedService() (*FtpServerLinkedService, bool) {
	return nil, false
}

// AsHTTPLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsHTTPLinkedService() (*HTTPLinkedService, bool) {
	return nil, false
}

// AsAzureSearchLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAzureSearchLinkedService() (*AzureSearchLinkedService, bool) {
	return nil, false
}

// AsCustomDataSourceLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsCustomDataSourceLinkedService() (*CustomDataSourceLinkedService, bool) {
	return nil, false
}

// AsAmazonRedshiftLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAmazonRedshiftLinkedService() (*AmazonRedshiftLinkedService, bool) {
	return nil, false
}

// AsAmazonS3LinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAmazonS3LinkedService() (*AmazonS3LinkedService, bool) {
	return nil, false
}

// AsSapEccLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsSapEccLinkedService() (*SapEccLinkedService, bool) {
	return nil, false
}

// AsSapCloudForCustomerLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsSapCloudForCustomerLinkedService() (*SapCloudForCustomerLinkedService, bool) {
	return nil, false
}

// AsSalesforceLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsSalesforceLinkedService() (*SalesforceLinkedService, bool) {
	return nil, false
}

// AsAzureDataLakeStoreLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAzureDataLakeStoreLinkedService() (*AzureDataLakeStoreLinkedService, bool) {
	return nil, false
}

// AsMongoDbLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsMongoDbLinkedService() (*MongoDbLinkedService, bool) {
	return nil, false
}

// AsCassandraLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsCassandraLinkedService() (*CassandraLinkedService, bool) {
	return nil, false
}

// AsWebLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsWebLinkedService() (*WebLinkedService, bool) {
	return nil, false
}

// AsODataLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsODataLinkedService() (*ODataLinkedService, bool) {
	return nil, false
}

// AsHdfsLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsHdfsLinkedService() (*HdfsLinkedService, bool) {
	return nil, false
}

// AsOdbcLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsOdbcLinkedService() (*OdbcLinkedService, bool) {
	return nil, false
}

// AsAzureMLLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAzureMLLinkedService() (*AzureMLLinkedService, bool) {
	return nil, false
}

// AsTeradataLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsTeradataLinkedService() (*TeradataLinkedService, bool) {
	return nil, false
}

// AsDb2LinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsDb2LinkedService() (*Db2LinkedService, bool) {
	return nil, false
}

// AsSybaseLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsSybaseLinkedService() (*SybaseLinkedService, bool) {
	return nil, false
}

// AsPostgreSQLLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsPostgreSQLLinkedService() (*PostgreSQLLinkedService, bool) {
	return nil, false
}

// AsMySQLLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsMySQLLinkedService() (*MySQLLinkedService, bool) {
	return nil, false
}

// AsAzureMySQLLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAzureMySQLLinkedService() (*AzureMySQLLinkedService, bool) {
	return nil, false
}

// AsOracleLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsOracleLinkedService() (*OracleLinkedService, bool) {
	return nil, false
}

// AsFileServerLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsFileServerLinkedService() (*FileServerLinkedService, bool) {
	return nil, false
}

// AsHDInsightLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsHDInsightLinkedService() (*HDInsightLinkedService, bool) {
	return nil, false
}

// AsDynamicsLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsDynamicsLinkedService() (*DynamicsLinkedService, bool) {
	return nil, false
}

// AsCosmosDbLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsCosmosDbLinkedService() (*CosmosDbLinkedService, bool) {
	return nil, false
}

// AsAzureKeyVaultLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAzureKeyVaultLinkedService() (*AzureKeyVaultLinkedService, bool) {
	return nil, false
}

// AsAzureBatchLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAzureBatchLinkedService() (*AzureBatchLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDatabaseLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAzureSQLDatabaseLinkedService() (*AzureSQLDatabaseLinkedService, bool) {
	return nil, false
}

// AsSQLServerLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsSQLServerLinkedService() (*SQLServerLinkedService, bool) {
	return nil, false
}

// AsAzureSQLDWLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAzureSQLDWLinkedService() (*AzureSQLDWLinkedService, bool) {
	return nil, false
}

// AsAzureStorageLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsAzureStorageLinkedService() (*AzureStorageLinkedService, bool) {
	return nil, false
}

// AsLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsLinkedService() (*LinkedService, bool) {
	return nil, false
}

// AsBasicLinkedService is the BasicLinkedService implementation for ZohoLinkedService.
func (zls ZohoLinkedService) AsBasicLinkedService() (BasicLinkedService, bool) {
	return &zls, true
}

// UnmarshalJSON is the custom unmarshaler for ZohoLinkedService struct.
func (zls *ZohoLinkedService) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "typeProperties":
			if v != nil {
				var zohoLinkedServiceTypeProperties ZohoLinkedServiceTypeProperties
				err = json.Unmarshal(*v, &zohoLinkedServiceTypeProperties)
				if err != nil {
					return err
				}
				zls.ZohoLinkedServiceTypeProperties = &zohoLinkedServiceTypeProperties
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if zls.AdditionalProperties == nil {
					zls.AdditionalProperties = make(map[string]interface{})
				}
				zls.AdditionalProperties[k] = additionalProperties
			}
		case "connectVia":
			if v != nil {
				var connectVia IntegrationRuntimeReference
				err = json.Unmarshal(*v, &connectVia)
				if err != nil {
					return err
				}
				zls.ConnectVia = &connectVia
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				zls.Description = &description
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				zls.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				zls.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicLinkedService
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				zls.Type = typeVar
			}
		}
	}

	return nil
}

// ZohoLinkedServiceTypeProperties zoho server linked service properties.
type ZohoLinkedServiceTypeProperties struct {
	// Endpoint - The endpoint of the Zoho server. (i.e. crm.zoho.com/crm/private)
	Endpoint interface{} `json:"endpoint,omitempty"`
	// AccessToken - The access token for Zoho authentication.
	AccessToken BasicSecretBase `json:"accessToken,omitempty"`
	// UseEncryptedEndpoints - Specifies whether the data source endpoints are encrypted using HTTPS. The default value is true.
	UseEncryptedEndpoints interface{} `json:"useEncryptedEndpoints,omitempty"`
	// UseHostVerification - 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 is true.
	UseHostVerification interface{} `json:"useHostVerification,omitempty"`
	// UsePeerVerification - Specifies whether to verify the identity of the server when connecting over SSL. The default value is true.
	UsePeerVerification interface{} `json:"usePeerVerification,omitempty"`
	// EncryptedCredential - The encrypted credential used for authentication. Credentials are encrypted using the integration runtime credential manager. Type: string (or Expression with resultType string).
	EncryptedCredential interface{} `json:"encryptedCredential,omitempty"`
}

// UnmarshalJSON is the custom unmarshaler for ZohoLinkedServiceTypeProperties struct.
func (zlstp *ZohoLinkedServiceTypeProperties) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "endpoint":
			if v != nil {
				var endpoint interface{}
				err = json.Unmarshal(*v, &endpoint)
				if err != nil {
					return err
				}
				zlstp.Endpoint = endpoint
			}
		case "accessToken":
			if v != nil {
				accessToken, err := unmarshalBasicSecretBase(*v)
				if err != nil {
					return err
				}
				zlstp.AccessToken = accessToken
			}
		case "useEncryptedEndpoints":
			if v != nil {
				var useEncryptedEndpoints interface{}
				err = json.Unmarshal(*v, &useEncryptedEndpoints)
				if err != nil {
					return err
				}
				zlstp.UseEncryptedEndpoints = useEncryptedEndpoints
			}
		case "useHostVerification":
			if v != nil {
				var useHostVerification interface{}
				err = json.Unmarshal(*v, &useHostVerification)
				if err != nil {
					return err
				}
				zlstp.UseHostVerification = useHostVerification
			}
		case "usePeerVerification":
			if v != nil {
				var usePeerVerification interface{}
				err = json.Unmarshal(*v, &usePeerVerification)
				if err != nil {
					return err
				}
				zlstp.UsePeerVerification = usePeerVerification
			}
		case "encryptedCredential":
			if v != nil {
				var encryptedCredential interface{}
				err = json.Unmarshal(*v, &encryptedCredential)
				if err != nil {
					return err
				}
				zlstp.EncryptedCredential = encryptedCredential
			}
		}
	}

	return nil
}

// ZohoObjectDataset zoho server dataset.
type ZohoObjectDataset struct {
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// Description - Dataset description.
	Description *string `json:"description,omitempty"`
	// Structure - Columns that define the structure of the dataset. Type: array (or Expression with resultType array), itemType: DatasetDataElement.
	Structure interface{} `json:"structure,omitempty"`
	// LinkedServiceName - Linked service reference.
	LinkedServiceName *LinkedServiceReference `json:"linkedServiceName,omitempty"`
	// Parameters - Parameters for dataset.
	Parameters map[string]*ParameterSpecification `json:"parameters"`
	// Annotations - List of tags that can be used for describing the Dataset.
	Annotations *[]interface{} `json:"annotations,omitempty"`
	// Type - Possible values include: 'TypeDataset', 'TypeResponsysObject', 'TypeSalesforceMarketingCloudObject', 'TypeVerticaTable', 'TypeNetezzaTable', 'TypeZohoObject', 'TypeXeroObject', 'TypeSquareObject', 'TypeSparkObject', 'TypeShopifyObject', 'TypeServiceNowObject', 'TypeQuickBooksObject', 'TypePrestoObject', 'TypePhoenixObject', 'TypePaypalObject', 'TypeMarketoObject', 'TypeMariaDBTable', 'TypeMagentoObject', 'TypeJiraObject', 'TypeImpalaObject', 'TypeHubspotObject', 'TypeHiveObject', 'TypeHBaseObject', 'TypeGreenplumTable', 'TypeGoogleBigQueryObject', 'TypeEloquaObject', 'TypeDrillTable', 'TypeCouchbaseTable', 'TypeConcurObject', 'TypeAzurePostgreSQLTable', 'TypeAmazonMWSObject', 'TypeHTTPFile', 'TypeAzureSearchIndex', 'TypeWebTable', 'TypeSQLServerTable', 'TypeSapEccResource', 'TypeSapCloudForCustomerResource', 'TypeSalesforceObject', 'TypeRelationalTable', 'TypeAzureMySQLTable', 'TypeOracleTable', 'TypeODataResource', 'TypeMongoDbCollection', 'TypeFileShare', 'TypeAzureDataLakeStoreFile', 'TypeDynamicsEntity', 'TypeDocumentDbCollection', 'TypeCustomDataset', 'TypeCassandraTable', 'TypeAzureSQLDWTable', 'TypeAzureSQLTable', 'TypeAzureTable', 'TypeAzureBlob', 'TypeAmazonS3Object'
	Type TypeBasicDataset `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ZohoObjectDataset.
func (zod ZohoObjectDataset) MarshalJSON() ([]byte, error) {
	zod.Type = TypeZohoObject
	objectMap := make(map[string]interface{})
	if zod.Description != nil {
		objectMap["description"] = zod.Description
	}
	if zod.Structure != nil {
		objectMap["structure"] = zod.Structure
	}
	if zod.LinkedServiceName != nil {
		objectMap["linkedServiceName"] = zod.LinkedServiceName
	}
	if zod.Parameters != nil {
		objectMap["parameters"] = zod.Parameters
	}
	if zod.Annotations != nil {
		objectMap["annotations"] = zod.Annotations
	}
	if zod.Type != "" {
		objectMap["type"] = zod.Type
	}
	for k, v := range zod.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsResponsysObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsResponsysObjectDataset() (*ResponsysObjectDataset, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsSalesforceMarketingCloudObjectDataset() (*SalesforceMarketingCloudObjectDataset, bool) {
	return nil, false
}

// AsVerticaTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsVerticaTableDataset() (*VerticaTableDataset, bool) {
	return nil, false
}

// AsNetezzaTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsNetezzaTableDataset() (*NetezzaTableDataset, bool) {
	return nil, false
}

// AsZohoObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsZohoObjectDataset() (*ZohoObjectDataset, bool) {
	return &zod, true
}

// AsXeroObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsXeroObjectDataset() (*XeroObjectDataset, bool) {
	return nil, false
}

// AsSquareObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsSquareObjectDataset() (*SquareObjectDataset, bool) {
	return nil, false
}

// AsSparkObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsSparkObjectDataset() (*SparkObjectDataset, bool) {
	return nil, false
}

// AsShopifyObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsShopifyObjectDataset() (*ShopifyObjectDataset, bool) {
	return nil, false
}

// AsServiceNowObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsServiceNowObjectDataset() (*ServiceNowObjectDataset, bool) {
	return nil, false
}

// AsQuickBooksObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsQuickBooksObjectDataset() (*QuickBooksObjectDataset, bool) {
	return nil, false
}

// AsPrestoObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsPrestoObjectDataset() (*PrestoObjectDataset, bool) {
	return nil, false
}

// AsPhoenixObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsPhoenixObjectDataset() (*PhoenixObjectDataset, bool) {
	return nil, false
}

// AsPaypalObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsPaypalObjectDataset() (*PaypalObjectDataset, bool) {
	return nil, false
}

// AsMarketoObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsMarketoObjectDataset() (*MarketoObjectDataset, bool) {
	return nil, false
}

// AsMariaDBTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsMariaDBTableDataset() (*MariaDBTableDataset, bool) {
	return nil, false
}

// AsMagentoObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsMagentoObjectDataset() (*MagentoObjectDataset, bool) {
	return nil, false
}

// AsJiraObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsJiraObjectDataset() (*JiraObjectDataset, bool) {
	return nil, false
}

// AsImpalaObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsImpalaObjectDataset() (*ImpalaObjectDataset, bool) {
	return nil, false
}

// AsHubspotObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsHubspotObjectDataset() (*HubspotObjectDataset, bool) {
	return nil, false
}

// AsHiveObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsHiveObjectDataset() (*HiveObjectDataset, bool) {
	return nil, false
}

// AsHBaseObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsHBaseObjectDataset() (*HBaseObjectDataset, bool) {
	return nil, false
}

// AsGreenplumTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsGreenplumTableDataset() (*GreenplumTableDataset, bool) {
	return nil, false
}

// AsGoogleBigQueryObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsGoogleBigQueryObjectDataset() (*GoogleBigQueryObjectDataset, bool) {
	return nil, false
}

// AsEloquaObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsEloquaObjectDataset() (*EloquaObjectDataset, bool) {
	return nil, false
}

// AsDrillTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsDrillTableDataset() (*DrillTableDataset, bool) {
	return nil, false
}

// AsCouchbaseTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsCouchbaseTableDataset() (*CouchbaseTableDataset, bool) {
	return nil, false
}

// AsConcurObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsConcurObjectDataset() (*ConcurObjectDataset, bool) {
	return nil, false
}

// AsAzurePostgreSQLTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsAzurePostgreSQLTableDataset() (*AzurePostgreSQLTableDataset, bool) {
	return nil, false
}

// AsAmazonMWSObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsAmazonMWSObjectDataset() (*AmazonMWSObjectDataset, bool) {
	return nil, false
}

// AsHTTPDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsHTTPDataset() (*HTTPDataset, bool) {
	return nil, false
}

// AsAzureSearchIndexDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsAzureSearchIndexDataset() (*AzureSearchIndexDataset, bool) {
	return nil, false
}

// AsWebTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsWebTableDataset() (*WebTableDataset, bool) {
	return nil, false
}

// AsSQLServerTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsSQLServerTableDataset() (*SQLServerTableDataset, bool) {
	return nil, false
}

// AsSapEccResourceDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsSapEccResourceDataset() (*SapEccResourceDataset, bool) {
	return nil, false
}

// AsSapCloudForCustomerResourceDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsSapCloudForCustomerResourceDataset() (*SapCloudForCustomerResourceDataset, bool) {
	return nil, false
}

// AsSalesforceObjectDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsSalesforceObjectDataset() (*SalesforceObjectDataset, bool) {
	return nil, false
}

// AsRelationalTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsRelationalTableDataset() (*RelationalTableDataset, bool) {
	return nil, false
}

// AsAzureMySQLTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsAzureMySQLTableDataset() (*AzureMySQLTableDataset, bool) {
	return nil, false
}

// AsOracleTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsOracleTableDataset() (*OracleTableDataset, bool) {
	return nil, false
}

// AsODataResourceDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsODataResourceDataset() (*ODataResourceDataset, bool) {
	return nil, false
}

// AsMongoDbCollectionDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsMongoDbCollectionDataset() (*MongoDbCollectionDataset, bool) {
	return nil, false
}

// AsFileShareDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsFileShareDataset() (*FileShareDataset, bool) {
	return nil, false
}

// AsAzureDataLakeStoreDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsAzureDataLakeStoreDataset() (*AzureDataLakeStoreDataset, bool) {
	return nil, false
}

// AsDynamicsEntityDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsDynamicsEntityDataset() (*DynamicsEntityDataset, bool) {
	return nil, false
}

// AsDocumentDbCollectionDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsDocumentDbCollectionDataset() (*DocumentDbCollectionDataset, bool) {
	return nil, false
}

// AsCustomDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsCustomDataset() (*CustomDataset, bool) {
	return nil, false
}

// AsCassandraTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsCassandraTableDataset() (*CassandraTableDataset, bool) {
	return nil, false
}

// AsAzureSQLDWTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsAzureSQLDWTableDataset() (*AzureSQLDWTableDataset, bool) {
	return nil, false
}

// AsAzureSQLTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsAzureSQLTableDataset() (*AzureSQLTableDataset, bool) {
	return nil, false
}

// AsAzureTableDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsAzureTableDataset() (*AzureTableDataset, bool) {
	return nil, false
}

// AsAzureBlobDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsAzureBlobDataset() (*AzureBlobDataset, bool) {
	return nil, false
}

// AsAmazonS3Dataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsAmazonS3Dataset() (*AmazonS3Dataset, bool) {
	return nil, false
}

// AsDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsDataset() (*Dataset, bool) {
	return nil, false
}

// AsBasicDataset is the BasicDataset implementation for ZohoObjectDataset.
func (zod ZohoObjectDataset) AsBasicDataset() (BasicDataset, bool) {
	return &zod, true
}

// UnmarshalJSON is the custom unmarshaler for ZohoObjectDataset struct.
func (zod *ZohoObjectDataset) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if zod.AdditionalProperties == nil {
					zod.AdditionalProperties = make(map[string]interface{})
				}
				zod.AdditionalProperties[k] = additionalProperties
			}
		case "description":
			if v != nil {
				var description string
				err = json.Unmarshal(*v, &description)
				if err != nil {
					return err
				}
				zod.Description = &description
			}
		case "structure":
			if v != nil {
				var structure interface{}
				err = json.Unmarshal(*v, &structure)
				if err != nil {
					return err
				}
				zod.Structure = structure
			}
		case "linkedServiceName":
			if v != nil {
				var linkedServiceName LinkedServiceReference
				err = json.Unmarshal(*v, &linkedServiceName)
				if err != nil {
					return err
				}
				zod.LinkedServiceName = &linkedServiceName
			}
		case "parameters":
			if v != nil {
				var parameters map[string]*ParameterSpecification
				err = json.Unmarshal(*v, &parameters)
				if err != nil {
					return err
				}
				zod.Parameters = parameters
			}
		case "annotations":
			if v != nil {
				var annotations []interface{}
				err = json.Unmarshal(*v, &annotations)
				if err != nil {
					return err
				}
				zod.Annotations = &annotations
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicDataset
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				zod.Type = typeVar
			}
		}
	}

	return nil
}

// ZohoSource a copy activity Zoho server source.
type ZohoSource struct {
	// Query - A query to retrieve data from source. Type: string (or Expression with resultType string).
	Query interface{} `json:"query,omitempty"`
	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
	AdditionalProperties map[string]interface{} `json:""`
	// SourceRetryCount - Source retry count. Type: integer (or Expression with resultType integer).
	SourceRetryCount interface{} `json:"sourceRetryCount,omitempty"`
	// SourceRetryWait - Source retry wait. Type: string (or Expression with resultType string), pattern: ((\d+)\.)?(\d\d):(60|([0-5][0-9])):(60|([0-5][0-9])).
	SourceRetryWait interface{} `json:"sourceRetryWait,omitempty"`
	// Type - Possible values include: 'TypeCopySource', 'TypeAmazonRedshiftSource', 'TypeResponsysSource', 'TypeSalesforceMarketingCloudSource', 'TypeVerticaSource', 'TypeNetezzaSource', 'TypeZohoSource', 'TypeXeroSource', 'TypeSquareSource', 'TypeSparkSource', 'TypeShopifySource', 'TypeServiceNowSource', 'TypeQuickBooksSource', 'TypePrestoSource', 'TypePhoenixSource', 'TypePaypalSource', 'TypeMarketoSource', 'TypeMariaDBSource', 'TypeMagentoSource', 'TypeJiraSource', 'TypeImpalaSource', 'TypeHubspotSource', 'TypeHiveSource', 'TypeHBaseSource', 'TypeGreenplumSource', 'TypeGoogleBigQuerySource', 'TypeEloquaSource', 'TypeDrillSource', 'TypeCouchbaseSource', 'TypeConcurSource', 'TypeAzurePostgreSQLSource', 'TypeAmazonMWSSource', 'TypeHTTPSource', 'TypeAzureDataLakeStoreSource', 'TypeMongoDbSource', 'TypeCassandraSource', 'TypeWebSource', 'TypeOracleSource', 'TypeAzureMySQLSource', 'TypeHdfsSource', 'TypeFileSystemSource', 'TypeSQLDWSource', 'TypeSQLSource', 'TypeSapEccSource', 'TypeSapCloudForCustomerSource', 'TypeSalesforceSource', 'TypeRelationalSource', 'TypeDynamicsSource', 'TypeDocumentDbCollectionSource', 'TypeBlobSource', 'TypeAzureTableSource'
	Type TypeBasicCopySource `json:"type,omitempty"`
}

// MarshalJSON is the custom marshaler for ZohoSource.
func (zs ZohoSource) MarshalJSON() ([]byte, error) {
	zs.Type = TypeZohoSource
	objectMap := make(map[string]interface{})
	if zs.Query != nil {
		objectMap["query"] = zs.Query
	}
	if zs.SourceRetryCount != nil {
		objectMap["sourceRetryCount"] = zs.SourceRetryCount
	}
	if zs.SourceRetryWait != nil {
		objectMap["sourceRetryWait"] = zs.SourceRetryWait
	}
	if zs.Type != "" {
		objectMap["type"] = zs.Type
	}
	for k, v := range zs.AdditionalProperties {
		objectMap[k] = v
	}
	return json.Marshal(objectMap)
}

// AsAmazonRedshiftSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsAmazonRedshiftSource() (*AmazonRedshiftSource, bool) {
	return nil, false
}

// AsResponsysSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsResponsysSource() (*ResponsysSource, bool) {
	return nil, false
}

// AsSalesforceMarketingCloudSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsSalesforceMarketingCloudSource() (*SalesforceMarketingCloudSource, bool) {
	return nil, false
}

// AsVerticaSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsVerticaSource() (*VerticaSource, bool) {
	return nil, false
}

// AsNetezzaSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsNetezzaSource() (*NetezzaSource, bool) {
	return nil, false
}

// AsZohoSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsZohoSource() (*ZohoSource, bool) {
	return &zs, true
}

// AsXeroSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsXeroSource() (*XeroSource, bool) {
	return nil, false
}

// AsSquareSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsSquareSource() (*SquareSource, bool) {
	return nil, false
}

// AsSparkSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsSparkSource() (*SparkSource, bool) {
	return nil, false
}

// AsShopifySource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsShopifySource() (*ShopifySource, bool) {
	return nil, false
}

// AsServiceNowSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsServiceNowSource() (*ServiceNowSource, bool) {
	return nil, false
}

// AsQuickBooksSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsQuickBooksSource() (*QuickBooksSource, bool) {
	return nil, false
}

// AsPrestoSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsPrestoSource() (*PrestoSource, bool) {
	return nil, false
}

// AsPhoenixSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsPhoenixSource() (*PhoenixSource, bool) {
	return nil, false
}

// AsPaypalSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsPaypalSource() (*PaypalSource, bool) {
	return nil, false
}

// AsMarketoSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsMarketoSource() (*MarketoSource, bool) {
	return nil, false
}

// AsMariaDBSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsMariaDBSource() (*MariaDBSource, bool) {
	return nil, false
}

// AsMagentoSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsMagentoSource() (*MagentoSource, bool) {
	return nil, false
}

// AsJiraSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsJiraSource() (*JiraSource, bool) {
	return nil, false
}

// AsImpalaSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsImpalaSource() (*ImpalaSource, bool) {
	return nil, false
}

// AsHubspotSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsHubspotSource() (*HubspotSource, bool) {
	return nil, false
}

// AsHiveSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsHiveSource() (*HiveSource, bool) {
	return nil, false
}

// AsHBaseSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsHBaseSource() (*HBaseSource, bool) {
	return nil, false
}

// AsGreenplumSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsGreenplumSource() (*GreenplumSource, bool) {
	return nil, false
}

// AsGoogleBigQuerySource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsGoogleBigQuerySource() (*GoogleBigQuerySource, bool) {
	return nil, false
}

// AsEloquaSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsEloquaSource() (*EloquaSource, bool) {
	return nil, false
}

// AsDrillSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsDrillSource() (*DrillSource, bool) {
	return nil, false
}

// AsCouchbaseSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsCouchbaseSource() (*CouchbaseSource, bool) {
	return nil, false
}

// AsConcurSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsConcurSource() (*ConcurSource, bool) {
	return nil, false
}

// AsAzurePostgreSQLSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsAzurePostgreSQLSource() (*AzurePostgreSQLSource, bool) {
	return nil, false
}

// AsAmazonMWSSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsAmazonMWSSource() (*AmazonMWSSource, bool) {
	return nil, false
}

// AsHTTPSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsHTTPSource() (*HTTPSource, bool) {
	return nil, false
}

// AsAzureDataLakeStoreSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsAzureDataLakeStoreSource() (*AzureDataLakeStoreSource, bool) {
	return nil, false
}

// AsMongoDbSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsMongoDbSource() (*MongoDbSource, bool) {
	return nil, false
}

// AsCassandraSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsCassandraSource() (*CassandraSource, bool) {
	return nil, false
}

// AsWebSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsWebSource() (*WebSource, bool) {
	return nil, false
}

// AsOracleSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsOracleSource() (*OracleSource, bool) {
	return nil, false
}

// AsAzureMySQLSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsAzureMySQLSource() (*AzureMySQLSource, bool) {
	return nil, false
}

// AsHdfsSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsHdfsSource() (*HdfsSource, bool) {
	return nil, false
}

// AsFileSystemSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsFileSystemSource() (*FileSystemSource, bool) {
	return nil, false
}

// AsSQLDWSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsSQLDWSource() (*SQLDWSource, bool) {
	return nil, false
}

// AsSQLSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsSQLSource() (*SQLSource, bool) {
	return nil, false
}

// AsSapEccSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsSapEccSource() (*SapEccSource, bool) {
	return nil, false
}

// AsSapCloudForCustomerSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsSapCloudForCustomerSource() (*SapCloudForCustomerSource, bool) {
	return nil, false
}

// AsSalesforceSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsSalesforceSource() (*SalesforceSource, bool) {
	return nil, false
}

// AsRelationalSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsRelationalSource() (*RelationalSource, bool) {
	return nil, false
}

// AsDynamicsSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsDynamicsSource() (*DynamicsSource, bool) {
	return nil, false
}

// AsDocumentDbCollectionSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsDocumentDbCollectionSource() (*DocumentDbCollectionSource, bool) {
	return nil, false
}

// AsBlobSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsBlobSource() (*BlobSource, bool) {
	return nil, false
}

// AsAzureTableSource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsAzureTableSource() (*AzureTableSource, bool) {
	return nil, false
}

// AsCopySource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsCopySource() (*CopySource, bool) {
	return nil, false
}

// AsBasicCopySource is the BasicCopySource implementation for ZohoSource.
func (zs ZohoSource) AsBasicCopySource() (BasicCopySource, bool) {
	return &zs, true
}

// UnmarshalJSON is the custom unmarshaler for ZohoSource struct.
func (zs *ZohoSource) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "query":
			if v != nil {
				var query interface{}
				err = json.Unmarshal(*v, &query)
				if err != nil {
					return err
				}
				zs.Query = query
			}
		default:
			if v != nil {
				var additionalProperties interface{}
				err = json.Unmarshal(*v, &additionalProperties)
				if err != nil {
					return err
				}
				if zs.AdditionalProperties == nil {
					zs.AdditionalProperties = make(map[string]interface{})
				}
				zs.AdditionalProperties[k] = additionalProperties
			}
		case "sourceRetryCount":
			if v != nil {
				var sourceRetryCount interface{}
				err = json.Unmarshal(*v, &sourceRetryCount)
				if err != nil {
					return err
				}
				zs.SourceRetryCount = sourceRetryCount
			}
		case "sourceRetryWait":
			if v != nil {
				var sourceRetryWait interface{}
				err = json.Unmarshal(*v, &sourceRetryWait)
				if err != nil {
					return err
				}
				zs.SourceRetryWait = sourceRetryWait
			}
		case "type":
			if v != nil {
				var typeVar TypeBasicCopySource
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				zs.Type = typeVar
			}
		}
	}

	return nil
}
